]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Jun 2015 20:32:20 +0000 (13:32 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Jun 2015 20:32:20 +0000 (13:32 -0700)
added patches:
btrfs-cleanup-orphans-while-looking-up-default-subvolume.patch
btrfs-incorrect-handling-for-fiemap_fill_next_extent-return.patch

queue-3.10/btrfs-cleanup-orphans-while-looking-up-default-subvolume.patch [new file with mode: 0644]
queue-3.10/btrfs-incorrect-handling-for-fiemap_fill_next_extent-return.patch [new file with mode: 0644]
queue-3.10/series

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 (file)
index 0000000..cded900
--- /dev/null
@@ -0,0 +1,43 @@
+From 727b9784b6085c99c2f836bf4fcc2848dc9cf904 Mon Sep 17 00:00:00 2001
+From: Jeff Mahoney <jeffm@suse.com>
+Date: Fri, 20 Mar 2015 14:02:09 -0400
+Subject: btrfs: cleanup orphans while looking up default subvolume
+
+From: Jeff Mahoney <jeffm@suse.com>
+
+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 <jeffm@suse.com>
+Reviewed-by: David Sterba <dsterba@suse.cz>
+Signed-off-by: Chris Mason <clm@fb.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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 (file)
index 0000000..fe2a9d9
--- /dev/null
@@ -0,0 +1,39 @@
+From 26e726afe01c1c82072cf23a5ed89ce25f39d9f2 Mon Sep 17 00:00:00 2001
+From: Chengyu Song <csong84@gatech.edu>
+Date: Tue, 24 Mar 2015 18:12:56 -0400
+Subject: btrfs: incorrect handling for fiemap_fill_next_extent return
+
+From: Chengyu Song <csong84@gatech.edu>
+
+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 <csong84@gatech.edu>
+Reviewed-by: David Sterba <dsterba@suse.cz>
+Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
+Signed-off-by: Chris Mason <clm@fb.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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);
index ea5af98ca4cec86a4d2f31ed68ec089034a497d1..14f21b8d5f38ca5603d9adcdb15addaa25e6c655 100644 (file)
@@ -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