public inbox for linux-block@vger.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH] loop: set queue logical block size
@ 2017-04-06  8:19 Omar Sandoval
  2017-04-06  8:43 ` Ming Lei
  2017-04-06  8:52 ` Hannes Reinecke
  0 siblings, 2 replies; 7+ messages in thread
From: Omar Sandoval @ 2017-04-06  8:19 UTC (permalink / raw)
  To: linux-block; +Cc: Ming Lei, kernel-team

From: Omar Sandoval <osandov@fb.com>

The request queue created when we create a loop device has the default
logical block size of 512. When we associate the device with an fd, we
set the block size on the block_device but don't update the logical
block size of the request_queue. This makes it impossibe to use direct
I/O with a backing file on a device with a block size >512, as the
following check in __loop_update_dio() fails:

	sb_bsize = bdev_logical_block_size(inode->i_sb->s_bdev);
	if (queue_logical_block_size(lo->lo_queue) >= sb_bsize &&
	    ...

Fix it by updating the logical block size when we set the fd.

Signed-off-by: Omar Sandoval <osandov@fb.com>
---
 drivers/block/loop.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index cc981f34e017..1bb22903ad1a 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -941,6 +941,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
 	/* let user-space know about the new size */
 	kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE);
 
+	blk_queue_logical_block_size(lo->lo_queue, lo_blocksize);
 	set_blocksize(bdev, lo_blocksize);
 
 	lo->lo_state = Lo_bound;
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-04-06 15:49 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-04-06  8:19 [RFC PATCH] loop: set queue logical block size Omar Sandoval
2017-04-06  8:43 ` Ming Lei
2017-04-06 12:03   ` Ming Lei
2017-04-06 12:21     ` Hannes Reinecke
2017-04-06 15:04       ` Ming Lei
2017-04-06  8:52 ` Hannes Reinecke
2017-04-06 15:48   ` Omar Sandoval

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox