]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 May 2013 21:18:37 +0000 (14:18 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 May 2013 21:18:37 +0000 (14:18 -0700)
added patches:
target-use-fd_max_sectors-fd_blocksize-for-blockdevs-using-fileio.patch

queue-3.9/series
queue-3.9/target-use-fd_max_sectors-fd_blocksize-for-blockdevs-using-fileio.patch [new file with mode: 0644]

index 09dc1d23964ac4ba4decd4f97a106c25d6d65e8d..76328bb498503feeb7c4473dba30242bafac12d1 100644 (file)
@@ -99,3 +99,4 @@ parisc-use-long-branch-in-fork_like-macro.patch
 parisc-fix-native-set-up-in-build.patch
 parisc-make-default-cross-compiler-search-more-robust-v3.patch
 audit-make-testing-for-a-valid-loginuid-explicit.patch
+target-use-fd_max_sectors-fd_blocksize-for-blockdevs-using-fileio.patch
diff --git a/queue-3.9/target-use-fd_max_sectors-fd_blocksize-for-blockdevs-using-fileio.patch b/queue-3.9/target-use-fd_max_sectors-fd_blocksize-for-blockdevs-using-fileio.patch
new file mode 100644 (file)
index 0000000..c1622db
--- /dev/null
@@ -0,0 +1,61 @@
+From e3e84cda321703b123f36488f50700f371bc7230 Mon Sep 17 00:00:00 2001
+From: Andy Grover <agrover@redhat.com>
+Date: Fri, 26 Apr 2013 11:09:03 -0700
+Subject: target: Use FD_MAX_SECTORS/FD_BLOCKSIZE for blockdevs using fileio
+
+From: Andy Grover <agrover@redhat.com>
+
+commit e3e84cda321703b123f36488f50700f371bc7230 upstream.
+
+We can still see the error reported in
+
+https://patchwork.kernel.org/patch/2338981/
+
+when using fileio backed by a block device.
+
+I'm assuming this will get us past that error (from sbc_parse_cdb),
+and also assuming it's OK to have our max_sectors be larger than
+the block's queue max hw sectors?
+
+Reported-by: Eric Harney <eharney@redhat.com>
+Signed-off-by: Andy Grover <agrover@redhat.com>
+Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ drivers/target/target_core_file.c |   10 ++--------
+ 1 file changed, 2 insertions(+), 8 deletions(-)
+
+--- a/drivers/target/target_core_file.c
++++ b/drivers/target/target_core_file.c
+@@ -148,13 +148,8 @@ static int fd_configure_device(struct se
+        */
+       inode = file->f_mapping->host;
+       if (S_ISBLK(inode->i_mode)) {
+-              struct request_queue *q = bdev_get_queue(inode->i_bdev);
+               unsigned long long dev_size;
+-              dev->dev_attrib.hw_block_size =
+-                      bdev_logical_block_size(inode->i_bdev);
+-              dev->dev_attrib.hw_max_sectors = queue_max_hw_sectors(q);
+-
+               /*
+                * Determine the number of bytes from i_size_read() minus
+                * one (1) logical sector from underlying struct block_device
+@@ -173,13 +168,12 @@ static int fd_configure_device(struct se
+                               " block_device\n");
+                       goto fail;
+               }
+-
+-              dev->dev_attrib.hw_block_size = FD_BLOCKSIZE;
+-              dev->dev_attrib.hw_max_sectors = FD_MAX_SECTORS;
+       }
+       fd_dev->fd_block_size = dev->dev_attrib.hw_block_size;
++      dev->dev_attrib.hw_block_size = FD_BLOCKSIZE;
++      dev->dev_attrib.hw_max_sectors = FD_MAX_SECTORS;
+       dev->dev_attrib.hw_queue_depth = FD_MAX_DEVICE_QUEUE_DEPTH;
+       if (fd_dev->fbd_flags & FDBD_HAS_BUFFERED_IO_WCE) {