On Mon 21-10-19 10:49:54, Guoqing Jiang wrote: > > > On 10/21/19 10:38 AM, Jan Kara wrote: > > Currently, block device size in not updated on second and further open > > for block devices where partition scan is disabled. This is particularly > > annoying for example for DVD drives as that means block device size does > > not get updated once the media is inserted into a drive if the device is > > already open when inserting the media. This is actually always the case > > for example when pktcdvd is in use. > > > > Fix the problem by revalidating block device size on every open even for > > devices with partition scan disabled. > > > > Signed-off-by: Jan Kara <jack@xxxxxxx> > > --- > > fs/block_dev.c | 19 ++++++++++--------- > > 1 file changed, 10 insertions(+), 9 deletions(-) > > > > diff --git a/fs/block_dev.c b/fs/block_dev.c > > index 88c6d35ec71d..d612468ee66b 100644 > > --- a/fs/block_dev.c > > +++ b/fs/block_dev.c > > @@ -1403,11 +1403,7 @@ static void flush_disk(struct block_device *bdev, bool kill_dirty) > > "resized disk %s\n", > > bdev->bd_disk ? bdev->bd_disk->disk_name : ""); > > } > > - > > - if (!bdev->bd_disk) > > - return; > > - if (disk_part_scan_enabled(bdev->bd_disk)) > > - bdev->bd_invalidated = 1; > > + bdev->bd_invalidated = 1; > > } > > /** > > @@ -1514,10 +1510,15 @@ static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part); > > static void bdev_disk_changed(struct block_device *bdev, bool invalidate) > > { > > - if (invalidate) > > - invalidate_partitions(bdev->bd_disk, bdev); > > - else > > - rescan_partitions(bdev->bd_disk, bdev); > > + if (disk_part_scan_enabled(bdev->bd_disk)) { > > + if (invalidate) > > + invalidate_partitions(bdev->bd_disk, bdev); > > + else > > + rescan_partitions(bdev->bd_disk, bdev); > > Maybe use the new common helper to replace above. What do you mean exactly? Because there's only this place that has the code pattern here... Honza > > + } else { > > + check_disk_size_change(bdev->bd_disk, bdev, !invalidate); > > + bdev->bd_invalidated = 0; > > + } > > } > > /* > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR