On 08/24/2017 09:03 AM, Omar Sandoval wrote: > From: Omar Sandoval <osandov@xxxxxx> > > 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. > > Signed-off-by: Omar Sandoval <osandov@xxxxxx> > --- > drivers/block/loop.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/block/loop.c b/drivers/block/loop.c > index 54e091887199..1a5b4ecf54ec 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. > Let's see it this one goes through ... Reviewed-by: Hannes Reinecke <hare@xxxxxxxx> Cheers, Hannes -- Dr. Hannes Reinecke Teamlead Storage & Networking hare@xxxxxxx +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton HRB 21284 (AG Nürnberg)