summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/ulist.h
diff options
context:
space:
mode:
authorJan Schmidt <list.btrfs@jan-o-sch.net>2012-05-30 18:05:21 +0200
committerJan Schmidt <list.btrfs@jan-o-sch.net>2012-05-31 19:53:08 +0200
commit3301958b7c1dae8f0f5ded63aa881e0b71e78464 (patch)
tree11d1c098981a65bcbe11f4be594d6e9855f55448 /fs/btrfs/ulist.h
parent95a06077f7edbd00d32612562be4d857a5b7df54 (diff)
downloadlinux-3301958b7c1dae8f0f5ded63aa881e0b71e78464.tar.gz
linux-3301958b7c1dae8f0f5ded63aa881e0b71e78464.tar.bz2
linux-3301958b7c1dae8f0f5ded63aa881e0b71e78464.zip
Btrfs: add inodes before dropping the extent lock in find_all_leafs
We must build up the inode list with the extent lock held after following indirect refs. This also requires an extension to ulists, which allows to modify the stored aux value in case a key already exists in the list. Signed-off-by: Jan Schmidt <list.btrfs@jan-o-sch.net>
Diffstat (limited to 'fs/btrfs/ulist.h')
-rw-r--r--fs/btrfs/ulist.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/btrfs/ulist.h b/fs/btrfs/ulist.h
index 62d2574f775a..f1b1bf00c5a9 100644
--- a/fs/btrfs/ulist.h
+++ b/fs/btrfs/ulist.h
@@ -67,6 +67,8 @@ struct ulist *ulist_alloc(unsigned long gfp_mask);
void ulist_free(struct ulist *ulist);
int ulist_add(struct ulist *ulist, u64 val, unsigned long aux,
unsigned long gfp_mask);
+int ulist_add_merge(struct ulist *ulist, u64 val, unsigned long aux,
+ unsigned long *old_aux, unsigned long gfp_mask);
struct ulist_node *ulist_next(struct ulist *ulist,
struct ulist_iterator *uiter);