From b9f54e1ab21fdc8f1a51d32ce2c4f723cefa6dee Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Sat, 26 Mar 2011 08:32:30 +1100 Subject: [PATCH] Add B_Uninc flag. 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 --- include/lafs/struct.h | 2 +- lib/lafs_allocated_block.c | 7 +++++-- lib/lafs_incorporate.c | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/lafs/struct.h b/include/lafs/struct.h index 9e66ef5..97e8fdd 100644 --- a/include/lafs/struct.h +++ b/include/lafs/struct.h @@ -237,4 +237,4 @@ struct lafs_iblk { #define B_Index 4 #define B_Sched 8 #define B_InoIdx 16 - +#define B_Uninc 32 diff --git a/lib/lafs_allocated_block.c b/lib/lafs_allocated_block.c index 3ce830f..2d358be 100644 --- a/lib/lafs_allocated_block.c +++ b/lib/lafs_allocated_block.c @@ -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; + } } diff --git a/lib/lafs_incorporate.c b/lib/lafs_incorporate.c index 626aded..7c4f87e 100644 --- a/lib/lafs_incorporate.c +++ b/lib/lafs_incorporate.c @@ -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) -- 2.39.5