block: don't clear bd_invalidated in check_disk_size_change
bd_invalidated is set by check_disk_change or in add_disk to initiate a partition scan. Move it from check_disk_size_change which is called from both revalidate_disk() and bdev_disk_changed() to only the latter, as that is what is called from the block device open code (and nbd) to deal with the bd_invalidated event. revalidate_disk() on the other hand is mostly used to propagate a size update from the gendisk to the block device, which is entirely unrelated. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
		
							parent
							
								
									653cd53419
								
							
						
					
					
						commit
						6540fbf6b6
					
				| @ -1302,7 +1302,6 @@ static void check_disk_size_change(struct gendisk *disk, | ||||
| 		} | ||||
| 		i_size_write(bdev->bd_inode, disk_size); | ||||
| 	} | ||||
| 	bdev->bd_invalidated = 0; | ||||
| 	spin_unlock(&bdev->bd_size_lock); | ||||
| 
 | ||||
| 	if (bdev_size > disk_size) { | ||||
| @ -1391,6 +1390,8 @@ int bdev_disk_changed(struct block_device *bdev, bool invalidate) | ||||
| 
 | ||||
| 	lockdep_assert_held(&bdev->bd_mutex); | ||||
| 
 | ||||
| 	bdev->bd_invalidated = 0; | ||||
| 
 | ||||
| rescan: | ||||
| 	ret = blk_drop_partitions(bdev); | ||||
| 	if (ret) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user