On Wed 26-01-22 16:50:35, Christoph Hellwig wrote: > Nothing prevents a file system or userspace opener of the block device > from redirtying the page right afte sync_blockdev returned. Fortunately > data in the page cache during a block device change is mostly harmless > anyway. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> My understanding was these warnings are there to tell userspace it is doing something wrong. Something like the warning we issue when DIO races with buffered IO... I'm not sure how useful they are but I don't see strong reason to remove them either... Honza > --- > drivers/block/loop.c | 20 -------------------- > 1 file changed, 20 deletions(-) > > diff --git a/drivers/block/loop.c b/drivers/block/loop.c > index 6ec55a5d9dfc4..d3a7f281ce1b6 100644 > --- a/drivers/block/loop.c > +++ b/drivers/block/loop.c > @@ -1278,15 +1278,6 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info) > /* I/O need to be drained during transfer transition */ > blk_mq_freeze_queue(lo->lo_queue); > > - if (size_changed && lo->lo_device->bd_inode->i_mapping->nrpages) { > - /* If any pages were dirtied after invalidate_bdev(), try again */ > - err = -EAGAIN; > - pr_warn("%s: loop%d (%s) has still dirty pages (nrpages=%lu)\n", > - __func__, lo->lo_number, lo->lo_file_name, > - lo->lo_device->bd_inode->i_mapping->nrpages); > - goto out_unfreeze; > - } > - > prev_lo_flags = lo->lo_flags; > > err = loop_set_status_from_info(lo, info); > @@ -1497,21 +1488,10 @@ static int loop_set_block_size(struct loop_device *lo, unsigned long arg) > invalidate_bdev(lo->lo_device); > > blk_mq_freeze_queue(lo->lo_queue); > - > - /* invalidate_bdev should have truncated all the pages */ > - if (lo->lo_device->bd_inode->i_mapping->nrpages) { > - err = -EAGAIN; > - pr_warn("%s: loop%d (%s) has still dirty pages (nrpages=%lu)\n", > - __func__, lo->lo_number, lo->lo_file_name, > - lo->lo_device->bd_inode->i_mapping->nrpages); > - goto out_unfreeze; > - } > - > blk_queue_logical_block_size(lo->lo_queue, arg); > blk_queue_physical_block_size(lo->lo_queue, arg); > blk_queue_io_min(lo->lo_queue, arg); > loop_update_dio(lo); > -out_unfreeze: > blk_mq_unfreeze_queue(lo->lo_queue); > > return err; > -- > 2.30.2 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR