aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOmar Sandoval <[email protected]>2017-08-24 00:03:42 -0700
committerJens Axboe <[email protected]>2017-08-31 13:51:12 -0600
commit6c6b6f28b3335fd85ec833ee0005d9c9dca6c003 (patch)
tree47c20664f91ebd3591628a8ec52ca06b7dbbef76
parent8a0740c4109d646d8697d359962edea47301c652 (diff)
loop: set physical block size to PAGE_SIZE
The physical block size is "the lowest possible sector size that the hardware can operate on without reverting to read-modify-write operations" (from the comment on blk_queue_physical_block_size()). Since loop does buffered I/O on the backing file by default, the RMW unit is a page. This isn't the case for direct I/O mode, but let's keep it simple. Reviewed-by: Ming Lei <[email protected]> Reviewed-by: Hannes Reinecke <[email protected]> Signed-off-by: Omar Sandoval <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
-rw-r--r--drivers/block/loop.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index efad2d46a018..e3f190016d4f 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -1764,6 +1764,8 @@ static int loop_add(struct loop_device **l, int i)
}
lo->lo_queue->queuedata = lo;
+ blk_queue_physical_block_size(lo->lo_queue, PAGE_SIZE);
+
/*
* It doesn't make sense to enable merge because the I/O
* submitted to backing file is handled page by page.