From 952d9a27c93c522dfa9d9e23577bd0cfb903c380 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Sat, 18 Sep 2010 22:24:36 +1000 Subject: [PATCH] segments: swap then/else branches. Swap 'then' and 'else' branches, inverting condition Signed-off-by: NeilBrown --- segments.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/segments.c b/segments.c index 5690add..f34799c 100644 --- a/segments.c +++ b/segments.c @@ -1088,11 +1088,27 @@ again: * FIXME there should be a more general way to delay * updates to the Youth block. */ - if (test_bit(FinalCheckpoint, &fs->fsstate) || - (db && - db->b.inode == fs->devs[*dev].segsum && - db->b.fileaddr == ((*seg) >> (fs->blocksize_bits - - 1)))) { + if (!test_bit(FinalCheckpoint, &fs->fsstate) && + !(db && + db->b.inode == fs->devs[*dev].segsum && + db->b.fileaddr == ((*seg) >> (fs->blocksize_bits + - 1)))) { + spin_unlock(&fs->lock); + if (db) + putdref(db, MKREF(youth)); + + db = lafs_get_block(fs->devs[*dev].segsum, + (*seg) >> (fs->blocksize_bits + - 1), + NULL, GFP_KERNEL, + MKREF(youth)); + /* As we hold a ref on youth block for anything in the + * table, and that block was loaded at the time, it must + * still be valid. + */ + BUG_ON(!test_bit(B_Valid, &db->b.flags)); + goto again; + } else { /* HACK youth_next should always be at least 0x8000 so that * cleanable score differentiates well for new segments. * old code would sometimes set youth_next very low, so @@ -1163,22 +1179,6 @@ again: *dev, *seg, fs->youth_next - 1); /* Note that we return an implicit reference to the ssum */ return; - } else { - spin_unlock(&fs->lock); - if (db) - putdref(db, MKREF(youth)); - - db = lafs_get_block(fs->devs[*dev].segsum, - (*seg) >> (fs->blocksize_bits - - 1), - NULL, GFP_KERNEL, - MKREF(youth)); - /* As we hold a ref on youth block for anything in the - * table, and that block was loaded at the time, it must - * still be valid. - */ - BUG_ON(!test_bit(B_Valid, &db->b.flags)); - goto again; } } -- 2.39.5