diff options
author | Christoph Hellwig <hch@lst.de> | 2019-11-14 15:34:34 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-11-14 07:43:21 -0700 |
commit | a1548b674403c0de70cc29a1575689917ba60157 (patch) | |
tree | be1dcf032146bd80dde2c4fe8f380a6c76a31a0b /block/partition-generic.c | |
parent | 6917d0689993f46d97d40dd66c601d0fd5b1dbdd (diff) | |
download | lwn-a1548b674403c0de70cc29a1575689917ba60157.tar.gz lwn-a1548b674403c0de70cc29a1575689917ba60157.zip |
block: move rescan_partitions to fs/block_dev.c
Large parts of rescan_partitions aren't about partitions, and
moving it to block_dev.c will allow for some further cleanups by
merging it into its only caller.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/partition-generic.c')
-rw-r--r-- | block/partition-generic.c | 37 |
1 files changed, 2 insertions, 35 deletions
diff --git a/block/partition-generic.c b/block/partition-generic.c index 6b9f4f5d993a..2cbc23f6032c 100644 --- a/block/partition-generic.c +++ b/block/partition-generic.c @@ -439,7 +439,7 @@ static bool disk_unlock_native_capacity(struct gendisk *disk) } } -static int drop_partitions(struct gendisk *disk, struct block_device *bdev) +int blk_drop_partitions(struct gendisk *disk, struct block_device *bdev) { struct disk_part_iter piter; struct hd_struct *part; @@ -509,7 +509,7 @@ static bool blk_add_partition(struct gendisk *disk, struct block_device *bdev, return true; } -static int blk_add_partitions(struct gendisk *disk, struct block_device *bdev) +int blk_add_partitions(struct gendisk *disk, struct block_device *bdev) { struct parsed_partitions *state; int ret = -EAGAIN, p, highest; @@ -576,39 +576,6 @@ out_free_state: return ret; } -int rescan_partitions(struct gendisk *disk, struct block_device *bdev, - bool invalidate) -{ - int ret; - -rescan: - ret = drop_partitions(disk, bdev); - if (ret) - return ret; - - if (invalidate) - set_capacity(disk, 0); - else if (disk->fops->revalidate_disk) - disk->fops->revalidate_disk(disk); - - check_disk_size_change(disk, bdev, !invalidate); - bdev->bd_invalidated = 0; - - if (!get_capacity(disk)) { - /* - * Tell userspace that the media / partition table may have - * changed. - */ - kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE); - return 0; - } - - ret = blk_add_partitions(disk, bdev); - if (ret == -EAGAIN) - goto rescan; - return ret; -} - unsigned char *read_dev_sector(struct block_device *bdev, sector_t n, Sector *p) { struct address_space *mapping = bdev->bd_inode->i_mapping; |