diff options
author | Christoph Hellwig <hch@lst.de> | 2018-05-29 10:42:59 -0400 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2018-05-29 10:59:21 -0400 |
commit | 5afb78356cead66db2203061fed6fc8957527ed4 (patch) | |
tree | 3ca5cb4673b79152404cedfd5341ca25669cb77b | |
parent | 4163a0398434a9b705399ae2c48fb4fb14008434 (diff) |
block: don't print a message when the device went away
The information about a size change in this case just creates confusion.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r-- | block/partition-generic.c | 4 | ||||
-rw-r--r-- | fs/block_dev.c | 14 | ||||
-rw-r--r-- | include/linux/fs.h | 2 |
3 files changed, 12 insertions, 8 deletions
diff --git a/block/partition-generic.c b/block/partition-generic.c index 93ef8ce568a1..3dcfd4ec0e11 100644 --- a/block/partition-generic.c +++ b/block/partition-generic.c | |||
@@ -516,7 +516,7 @@ rescan: | |||
516 | 516 | ||
517 | if (disk->fops->revalidate_disk) | 517 | if (disk->fops->revalidate_disk) |
518 | disk->fops->revalidate_disk(disk); | 518 | disk->fops->revalidate_disk(disk); |
519 | check_disk_size_change(disk, bdev); | 519 | check_disk_size_change(disk, bdev, true); |
520 | bdev->bd_invalidated = 0; | 520 | bdev->bd_invalidated = 0; |
521 | if (!get_capacity(disk) || !(state = check_partition(disk, bdev))) | 521 | if (!get_capacity(disk) || !(state = check_partition(disk, bdev))) |
522 | return 0; | 522 | return 0; |
@@ -641,7 +641,7 @@ int invalidate_partitions(struct gendisk *disk, struct block_device *bdev) | |||
641 | return res; | 641 | return res; |
642 | 642 | ||
643 | set_capacity(disk, 0); | 643 | set_capacity(disk, 0); |
644 | check_disk_size_change(disk, bdev); | 644 | check_disk_size_change(disk, bdev, false); |
645 | bdev->bd_invalidated = 0; | 645 | bdev->bd_invalidated = 0; |
646 | /* tell userspace that the media / partition table may have changed */ | 646 | /* tell userspace that the media / partition table may have changed */ |
647 | kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE); | 647 | kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE); |
diff --git a/fs/block_dev.c b/fs/block_dev.c index 771ddfa29dc9..81c57c14fae8 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
@@ -1322,21 +1322,25 @@ static void flush_disk(struct block_device *bdev, bool kill_dirty) | |||
1322 | * check_disk_size_change - checks for disk size change and adjusts bdev size. | 1322 | * check_disk_size_change - checks for disk size change and adjusts bdev size. |
1323 | * @disk: struct gendisk to check | 1323 | * @disk: struct gendisk to check |
1324 | * @bdev: struct bdev to adjust. | 1324 | * @bdev: struct bdev to adjust. |
1325 | * @verbose: if %true log a message about a size change if there is any | ||
1325 | * | 1326 | * |
1326 | * This routine checks to see if the bdev size does not match the disk size | 1327 | * This routine checks to see if the bdev size does not match the disk size |
1327 | * and adjusts it if it differs. When shrinking the bdev size, its all caches | 1328 | * and adjusts it if it differs. When shrinking the bdev size, its all caches |
1328 | * are freed. | 1329 | * are freed. |
1329 | */ | 1330 | */ |
1330 | void check_disk_size_change(struct gendisk *disk, struct block_device *bdev) | 1331 | void check_disk_size_change(struct gendisk *disk, struct block_device *bdev, |
1332 | bool verbose) | ||
1331 | { | 1333 | { |
1332 | loff_t disk_size, bdev_size; | 1334 | loff_t disk_size, bdev_size; |
1333 | 1335 | ||
1334 | disk_size = (loff_t)get_capacity(disk) << 9; | 1336 | disk_size = (loff_t)get_capacity(disk) << 9; |
1335 | bdev_size = i_size_read(bdev->bd_inode); | 1337 | bdev_size = i_size_read(bdev->bd_inode); |
1336 | if (disk_size != bdev_size) { | 1338 | if (disk_size != bdev_size) { |
1337 | printk(KERN_INFO | 1339 | if (verbose) { |
1338 | "%s: detected capacity change from %lld to %lld\n", | 1340 | printk(KERN_INFO |
1339 | disk->disk_name, bdev_size, disk_size); | 1341 | "%s: detected capacity change from %lld to %lld\n", |
1342 | disk->disk_name, bdev_size, disk_size); | ||
1343 | } | ||
1340 | i_size_write(bdev->bd_inode, disk_size); | 1344 | i_size_write(bdev->bd_inode, disk_size); |
1341 | if (bdev_size > disk_size) | 1345 | if (bdev_size > disk_size) |
1342 | flush_disk(bdev, false); | 1346 | flush_disk(bdev, false); |
@@ -1363,7 +1367,7 @@ int revalidate_disk(struct gendisk *disk) | |||
1363 | return ret; | 1367 | return ret; |
1364 | 1368 | ||
1365 | mutex_lock(&bdev->bd_mutex); | 1369 | mutex_lock(&bdev->bd_mutex); |
1366 | check_disk_size_change(disk, bdev); | 1370 | check_disk_size_change(disk, bdev, ret == 0); |
1367 | bdev->bd_invalidated = 0; | 1371 | bdev->bd_invalidated = 0; |
1368 | mutex_unlock(&bdev->bd_mutex); | 1372 | mutex_unlock(&bdev->bd_mutex); |
1369 | bdput(bdev); | 1373 | bdput(bdev); |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 760d8da1b6c7..d8d4831af9ff 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -2570,7 +2570,7 @@ extern bool is_bad_inode(struct inode *); | |||
2570 | 2570 | ||
2571 | #ifdef CONFIG_BLOCK | 2571 | #ifdef CONFIG_BLOCK |
2572 | extern void check_disk_size_change(struct gendisk *disk, | 2572 | extern void check_disk_size_change(struct gendisk *disk, |
2573 | struct block_device *bdev); | 2573 | struct block_device *bdev, bool verbose); |
2574 | extern int revalidate_disk(struct gendisk *); | 2574 | extern int revalidate_disk(struct gendisk *); |
2575 | extern int check_disk_change(struct block_device *); | 2575 | extern int check_disk_change(struct block_device *); |
2576 | extern int __invalidate_device(struct block_device *, bool); | 2576 | extern int __invalidate_device(struct block_device *, bool); |