]> git.neil.brown.name Git - LaFS.git/commitdiff
leaf_lookup: simplify.
authorNeilBrown <neilb@suse.de>
Wed, 23 Jun 2010 01:36:55 +0000 (11:36 +1000)
committerNeilBrown <neilb@suse.de>
Wed, 23 Jun 2010 01:57:21 +0000 (11:57 +1000)
Make decodeX calls more uniform, and avoid some
unnecessary arithmetic.

Signed-off-by: NeilBrown <neilb@suse.de>
index.c

diff --git a/index.c b/index.c
index 53b84e62dda289dd612ce40472674a693936de9a..3ddfd641c20e89939e66d6cc3fdc8e944af3521a 100644 (file)
--- a/index.c
+++ b/index.c
@@ -1212,32 +1212,28 @@ leaf_lookup(void *bf, int len, u32 startaddr, u32 target, u32 *nextp)
                }
 
                cp = buf;
-               cp += lo*12+6;
+               cp += lo*12;
+               p = decode48(cp);
                elen = decode16(cp);
                addr = decode32(cp);
                if (target < addr || target >= addr + elen)
                        p = 0;
-               else {
-                       cp = buf;
-                       cp += lo*12;
-                       p = decode48(cp);
+               else
                        p += target - addr;
-               }
 
                if (nextp) {
                        if (lo == len/12)
                                *nextp = ~0UL; /* next extent */
                        else {
                                u64 p2;
-                               cp = buf;
-                               cp += (lo+1)*12;
                                p2 = decode48(cp);
                                elen = decode16(cp);
+                               addr = decode32(cp)
                                if (elen == 0)
                                        *nextp = ~0UL; /* no more meaningful
                                                          extents*/
                                else
-                                       *nextp = decode32(cp);
+                                       *nextp = addr;
                        }
                }
        }