btrfs: use list_for_each_entry* in backref.c
authorGeliang Tang <geliangtang@163.com>
Mon, 21 Dec 2015 15:50:23 +0000 (23:50 +0800)
committerDavid Sterba <dsterba@suse.com>
Thu, 7 Jan 2016 13:42:46 +0000 (14:42 +0100)
Use list_for_each_entry*() to simplify the code.

Signed-off-by: Geliang Tang <geliangtang@163.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/backref.c

index d453d62..08405a3 100644 (file)
@@ -520,13 +520,10 @@ static inline int ref_for_same_block(struct __prelim_ref *ref1,
 static int __add_missing_keys(struct btrfs_fs_info *fs_info,
                              struct list_head *head)
 {
-       struct list_head *pos;
+       struct __prelim_ref *ref;
        struct extent_buffer *eb;
 
-       list_for_each(pos, head) {
-               struct __prelim_ref *ref;
-               ref = list_entry(pos, struct __prelim_ref, list);
-
+       list_for_each_entry(ref, head, list) {
                if (ref->parent)
                        continue;
                if (ref->key_for_search.type)
@@ -563,23 +560,15 @@ static int __add_missing_keys(struct btrfs_fs_info *fs_info,
  */
 static void __merge_refs(struct list_head *head, int mode)
 {
-       struct list_head *pos1;
+       struct __prelim_ref *ref1;
 
-       list_for_each(pos1, head) {
-               struct list_head *n2;
-               struct list_head *pos2;
-               struct __prelim_ref *ref1;
+       list_for_each_entry(ref1, head, list) {
+               struct __prelim_ref *ref2 = ref1, *tmp;
 
-               ref1 = list_entry(pos1, struct __prelim_ref, list);
-
-               for (pos2 = pos1->next, n2 = pos2->next; pos2 != head;
-                    pos2 = n2, n2 = pos2->next) {
-                       struct __prelim_ref *ref2;
+               list_for_each_entry_safe_continue(ref2, tmp, head, list) {
                        struct __prelim_ref *xchg;
                        struct extent_inode_elem *eie;
 
-                       ref2 = list_entry(pos2, struct __prelim_ref, list);
-
                        if (!ref_for_same_block(ref1, ref2))
                                continue;
                        if (mode == 1) {