X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=fs%2Fbtrfs%2Fsuper.c;h=feecdfbdffe4192e95d7676af1bb82f68609304f;hb=4dddf720534a9a14fa9b048e7930dcc55b1b1e40;hp=f0857e092a3cb1af485604850052440579a1bbf1;hpb=0e32fde96bb9c1fa8fa477e52c1d6ae2f4995cea;p=firefly-linux-kernel-4.4.55.git diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index f0857e092a3c..feecdfbdffe4 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -779,6 +779,15 @@ find_root: if (btrfs_root_refs(&new_root->root_item) == 0) return ERR_PTR(-ENOENT); + if (!(sb->s_flags & MS_RDONLY)) { + int ret; + down_read(&fs_info->cleanup_work_sem); + ret = btrfs_orphan_cleanup(new_root); + up_read(&fs_info->cleanup_work_sem); + if (ret) + return ERR_PTR(ret); + } + dir_id = btrfs_root_dirid(&new_root->root_item); setup_root: location.objectid = dir_id; @@ -1239,6 +1248,7 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data) unsigned int old_metadata_ratio = fs_info->metadata_ratio; int ret; + sync_filesystem(sb); btrfs_remount_prepare(fs_info); ret = btrfs_parse_options(root, data);