From: Greg Kroah-Hartman Date: Fri, 19 Jun 2015 20:32:20 +0000 (-0700) Subject: 3.10-stable patches X-Git-Tag: v3.10.81~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8b273a715bb3b2c42f90eaaf925926752ce49e82;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: btrfs-cleanup-orphans-while-looking-up-default-subvolume.patch btrfs-incorrect-handling-for-fiemap_fill_next_extent-return.patch --- diff --git a/queue-3.10/btrfs-cleanup-orphans-while-looking-up-default-subvolume.patch b/queue-3.10/btrfs-cleanup-orphans-while-looking-up-default-subvolume.patch new file mode 100644 index 00000000000..cded900e798 --- /dev/null +++ b/queue-3.10/btrfs-cleanup-orphans-while-looking-up-default-subvolume.patch @@ -0,0 +1,43 @@ +From 727b9784b6085c99c2f836bf4fcc2848dc9cf904 Mon Sep 17 00:00:00 2001 +From: Jeff Mahoney +Date: Fri, 20 Mar 2015 14:02:09 -0400 +Subject: btrfs: cleanup orphans while looking up default subvolume + +From: Jeff Mahoney + +commit 727b9784b6085c99c2f836bf4fcc2848dc9cf904 upstream. + +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 +Reviewed-by: David Sterba +Signed-off-by: Chris Mason +Signed-off-by: Greg Kroah-Hartman + +--- + fs/btrfs/super.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- 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; diff --git a/queue-3.10/btrfs-incorrect-handling-for-fiemap_fill_next_extent-return.patch b/queue-3.10/btrfs-incorrect-handling-for-fiemap_fill_next_extent-return.patch new file mode 100644 index 00000000000..fe2a9d9b5f4 --- /dev/null +++ b/queue-3.10/btrfs-incorrect-handling-for-fiemap_fill_next_extent-return.patch @@ -0,0 +1,39 @@ +From 26e726afe01c1c82072cf23a5ed89ce25f39d9f2 Mon Sep 17 00:00:00 2001 +From: Chengyu Song +Date: Tue, 24 Mar 2015 18:12:56 -0400 +Subject: btrfs: incorrect handling for fiemap_fill_next_extent return + +From: Chengyu Song + +commit 26e726afe01c1c82072cf23a5ed89ce25f39d9f2 upstream. + +fiemap_fill_next_extent returns 0 on success, -errno on error, 1 if this was +the last extent that will fit in user array. If 1 is returned, the return +value may eventually returned to user space, which should not happen, according +to manpage of ioctl. + +Signed-off-by: Chengyu Song +Reviewed-by: David Sterba +Reviewed-by: Liu Bo +Signed-off-by: Chris Mason +Signed-off-by: Greg Kroah-Hartman + +--- + fs/btrfs/extent_io.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/fs/btrfs/extent_io.c ++++ b/fs/btrfs/extent_io.c +@@ -4080,8 +4080,11 @@ int extent_fiemap(struct inode *inode, s + } + ret = fiemap_fill_next_extent(fieinfo, em_start, disko, + em_len, flags); +- if (ret) ++ if (ret) { ++ if (ret == 1) ++ ret = 0; + goto out_free; ++ } + } + out_free: + free_extent_map(em); diff --git a/queue-3.10/series b/queue-3.10/series index ea5af98ca4c..14f21b8d5f3 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -25,3 +25,5 @@ pata_octeon_cf-fix-broken-build.patch drm-i915-fix-ddc-probe-for-passive-adapters.patch mm-memory_hotplug.c-set-zone-wait_table-to-null-after-freeing-it.patch cfg80211-wext-clear-sinfo-struct-before-calling-driver.patch +btrfs-incorrect-handling-for-fiemap_fill_next_extent-return.patch +btrfs-cleanup-orphans-while-looking-up-default-subvolume.patch