diff options
Diffstat (limited to 'fs/fuse')
-rw-r--r-- | fs/fuse/inode.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index 7c290089e693..6b3beda16c1b 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -482,8 +482,14 @@ static void fuse_umount_begin(struct super_block *sb) { struct fuse_conn *fc = get_fuse_conn_super(sb); - if (!fc->no_force_umount) - fuse_abort_conn(fc); + if (fc->no_force_umount) + return; + + fuse_abort_conn(fc); + + // Only retire block-device-based superblocks. + if (sb->s_bdev != NULL) + retire_super(sb); } static void fuse_send_destroy(struct fuse_mount *fm) |