@@ -980,6 +980,7 @@ static noinline int btrfs_mksubvol(const struct path *parent,
{
struct inode *dir = d_inode(parent->dentry);
struct btrfs_fs_info *fs_info = btrfs_sb(dir->i_sb);
+ struct block_device *bdev = fs_info->fs_devices->latest_bdev;
struct dentry *dentry;
int error;
@@ -1018,8 +1019,12 @@ static noinline int btrfs_mksubvol(const struct path *parent,
error = create_subvol(dir, dentry, name, namelen,
async_transid, inherit);
}
- if (!error)
+ if (!error) {
+ if (!snap_src)
+ btrfs_vol_uevent(bdev, true, name);
+
fsnotify_mkdir(dir, dentry);
+ }
out_up_read:
up_read(&fs_info->subvol_sem);
out_dput: