diff options
Diffstat (limited to 'fs/super.c')
-rw-r--r-- | fs/super.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/super.c b/fs/super.c index 80418ca8e215..7f876f32343a 100644 --- a/fs/super.c +++ b/fs/super.c @@ -1459,6 +1459,17 @@ static void fs_bdev_mark_dead(struct block_device *bdev, bool surprise) if (!sb) return; + if (sb->s_op->remove_bdev) { + int ret; + + ret = sb->s_op->remove_bdev(sb, bdev); + if (!ret) { + super_unlock_shared(sb); + return; + } + /* Fallback to shutdown. */ + } + if (!surprise) sync_filesystem(sb); shrink_dcache_sb(sb); |