]> git.neil.brown.name Git - lafs-utils.git/commitdiff
Add B_Uninc flag.
authorNeilBrown <neilb@suse.de>
Fri, 25 Mar 2011 21:32:30 +0000 (08:32 +1100)
committerNeilBrown <neilb@suse.de>
Fri, 25 Mar 2011 21:32:30 +0000 (08:32 +1100)
We need to know if a block is already on an uninc list so we
don't put it there again.
So use a flag.

Signed-off-by: NeilBrown <neilb@suse.de>
include/lafs/struct.h
lib/lafs_allocated_block.c
lib/lafs_incorporate.c

index 9e66ef5990d5c7fa7a03a652e8ff4e75ddb51a9e..97e8fddd3327267a1f388b54c80f2db473f32895 100644 (file)
@@ -237,4 +237,4 @@ struct lafs_iblk {
 #define B_Index 4
 #define B_Sched 8
 #define B_InoIdx 16
-
+#define B_Uninc 32
index 3ce830f8a8145abf26d4b15730bf0d29dcafab49..2d358bea33271b5ac51fa3c59501e47cf00482b7 100644 (file)
@@ -35,7 +35,10 @@ void lafs_allocated_block(struct lafs_blk *b, loff_t addr)
        lafs_summary_update(b->ino, b->physaddr, addr,
                            !!(b->flags & B_Index));
        b->physaddr = addr;
-       b->chain = p->uninc;
-       p->uninc = b;
+       if (!(b->flags & B_Uninc)) {
+               b->flags |= B_Uninc;
+               b->chain = p->uninc;
+               p->uninc = b;
+       }
 }
 
index 626adeddf85a8f2e1104b199474809a5bb408dda..7c4f87ef8ee96a5f34eee12a152ad5dd89555e87 100644 (file)
@@ -46,6 +46,7 @@ void lafs_incorporate(struct lafs_iblk *ib)
 
                ib->uninc = b->chain;
                b->chain = NULL;
+               b->flags &= ~B_Uninc;
 
                addr = b->fileaddr - ib->b.fileaddr;
                if (addr >= max_addr)