Merge branch 'for-linus' of git://neil.brown.name/md
* 'for-linus' of git://neil.brown.name/md: md: Fix - again - partition detection when array becomes active Fix over-zealous flush_disk when changing device size. md: avoid spinlock problem in blk_throtl_exit md: correctly handle probe of an 'mdp' device. md: don't set_capacity before array is active. md: Fix raid1->raid0 takeover
This commit is contained in:
@@ -933,9 +933,9 @@ EXPORT_SYMBOL_GPL(bd_unlink_disk_holder);
|
||||
* when a disk has been changed -- either by a media change or online
|
||||
* resize.
|
||||
*/
|
||||
static void flush_disk(struct block_device *bdev)
|
||||
static void flush_disk(struct block_device *bdev, bool kill_dirty)
|
||||
{
|
||||
if (__invalidate_device(bdev)) {
|
||||
if (__invalidate_device(bdev, kill_dirty)) {
|
||||
char name[BDEVNAME_SIZE] = "";
|
||||
|
||||
if (bdev->bd_disk)
|
||||
@@ -972,7 +972,7 @@ void check_disk_size_change(struct gendisk *disk, struct block_device *bdev)
|
||||
"%s: detected capacity change from %lld to %lld\n",
|
||||
name, bdev_size, disk_size);
|
||||
i_size_write(bdev->bd_inode, disk_size);
|
||||
flush_disk(bdev);
|
||||
flush_disk(bdev, false);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(check_disk_size_change);
|
||||
@@ -1025,7 +1025,7 @@ int check_disk_change(struct block_device *bdev)
|
||||
if (!(events & DISK_EVENT_MEDIA_CHANGE))
|
||||
return 0;
|
||||
|
||||
flush_disk(bdev);
|
||||
flush_disk(bdev, true);
|
||||
if (bdops->revalidate_disk)
|
||||
bdops->revalidate_disk(bdev->bd_disk);
|
||||
return 1;
|
||||
@@ -1606,7 +1606,7 @@ fail:
|
||||
}
|
||||
EXPORT_SYMBOL(lookup_bdev);
|
||||
|
||||
int __invalidate_device(struct block_device *bdev)
|
||||
int __invalidate_device(struct block_device *bdev, bool kill_dirty)
|
||||
{
|
||||
struct super_block *sb = get_super(bdev);
|
||||
int res = 0;
|
||||
@@ -1619,7 +1619,7 @@ int __invalidate_device(struct block_device *bdev)
|
||||
* hold).
|
||||
*/
|
||||
shrink_dcache_sb(sb);
|
||||
res = invalidate_inodes(sb);
|
||||
res = invalidate_inodes(sb, kill_dirty);
|
||||
drop_super(sb);
|
||||
}
|
||||
invalidate_bdev(bdev);
|
||||
|
Reference in New Issue
Block a user