Message ID | 550C60A1.9000708@suse.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On Fri, Mar 20, 2015 at 02:02:09PM -0400, Jeff Mahoney wrote: > Orphans in the fs tree are cleaned up via open_ctree and subvolume > orphans are cleaned via btrfs_lookup_dentry -- except when a default > subvolume is in use. The name for the default subvolume uses a manual > lookup that doesn't trigger orphan cleanup and needs to trigger it > manually as well. This doesn't apply to the remount case since the > subvolumes are cleaned up by walking the root radix tree. > > Signed-off-by: Jeff Mahoney <jeffm@suse.com> Reviewed-by: David Sterba <dsterba@suse.cz> -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 05fef19..e477ed6 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -901,6 +901,15 @@ find_root: if (IS_ERR(new_root)) return ERR_CAST(new_root); + 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;
Orphans in the fs tree are cleaned up via open_ctree and subvolume orphans are cleaned via btrfs_lookup_dentry -- except when a default subvolume is in use. The name for the default subvolume uses a manual lookup that doesn't trigger orphan cleanup and needs to trigger it manually as well. This doesn't apply to the remount case since the subvolumes are cleaned up by walking the root radix tree. Signed-off-by: Jeff Mahoney <jeffm@suse.com> --- fs/btrfs/super.c | 9 +++++++++ 1 file changed, 9 insertions(+)