From: NeilBrown Date: Sat, 10 Jul 2010 11:42:34 +0000 (+1000) Subject: Make sure last segment allocated is properly registered in table X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=1e08d2168df29c46600b9634833bbb56a297064b;p=LaFS.git Make sure last segment allocated is properly registered in table otherwise bad things happen when we try to de-register it. Signed-off-by: NeilBrown --- diff --git a/segments.c b/segments.c index 2f1961d..d9b7a8b 100644 --- a/segments.c +++ b/segments.c @@ -1091,9 +1091,16 @@ again: /* FIXME should more generally delay the update if we * are in any checkpoint. */ + + /* FIXME avoid this code duplication?? see below */ + fs->segtrack->free.first = ss->next; + if (fs->segtrack->free.first == 0xFFFF) + fs->segtrack->free.last = 0xFFFF; + fs->segtrack->free.cnt--; + ss->score = SCORE_ACTIVE; + /* still in table, but unlinked */ spin_unlock(&fs->lock); - if (db) - putdref(db, MKREF(youth)); + putdref(db, MKREF(youth)); return; }