On 3/11/20 12:26 AM, Christoph Hellwig wrote: > On Tue, Mar 10, 2020 at 11:30:27PM +0800, He Zhe wrote: >>> So this is the exact requirement of commits to be reverted from a bisect >>> or just a first guess? >> Many commits failed to build or boot during bisection. >> >> At least the following four have to be reverted to make it work. >> >> 979c690d block: move clearing bd_invalidated into check_disk_size_change >> f0b870d block: remove (__)blkdev_reread_part as an exported API >> 142fe8f block: fix bdev_disk_changed for non-partitioned devices >> a1548b6 block: move rescan_partitions to fs/block_dev.c > Just to make sure we are on the same page: if you revert all four it > works, if you rever all but > > a1548b6 block: move rescan_partitions to fs/block_dev.c > > it doesn't? After reverting 142fe8f, rescan_partitions would be called in block/ioctl.c and cause a build failure. So I need to also revert a1548b6 to provide rescan_partitions. OR if I manually add the following diff instead of reverting a1548b6, then yes, it works too. diff --git a/block/ioctl.c b/block/ioctl.c index 8d724d11c8f5..bac562604cd0 100644 --- a/block/ioctl.c +++ b/block/ioctl.c @@ -192,6 +192,7 @@ static int compat_blkpg_ioctl(struct block_device *bdev, * acquire bd_mutex. This API should be used in case that * caller has held bd_mutex already. */ +extern int rescan_partitions(struct gendisk *disk, struct block_device *bdev, bool invalidate); int __blkdev_reread_part(struct block_device *bdev) { struct gendisk *disk = bdev->bd_disk; diff --git a/fs/block_dev.c b/fs/block_dev.c index ec10dacd18d0..30da0bc85c31 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -1508,7 +1508,7 @@ EXPORT_SYMBOL(bd_set_size); static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part); -static int rescan_partitions(struct gendisk *disk, struct block_device *bdev, +int rescan_partitions(struct gendisk *disk, struct block_device *bdev, bool invalidate) { int ret; Zhe