]> git.neil.brown.name Git - LaFS.git/commitdiff
Make sure segusage blocks are uptodate in seg_apply.
authorNeilBrown <neilb@suse.de>
Sun, 2 Aug 2009 11:09:47 +0000 (21:09 +1000)
committerNeilBrown <neilb@suse.de>
Sun, 2 Aug 2009 11:09:47 +0000 (21:09 +1000)
During roll-forward they can be not-read-yet.

segments.c

index 21d55b56500f1034258ad40cfef465d73c9d65b7..c4585e336738b1cbd173825729840c3162248783 100644 (file)
@@ -402,10 +402,13 @@ static void seg_apply(struct fs *fs, struct segsum *ss)
 {
        void *buf;
        u16 *p;
+       int err;
        if (atomic_read(&ss->delayed) == 0)
                return;
        dprintk("Seg apply %d %s\n", (int)atomic_read(&ss->delayed),
               strblk(&ss->ssblk->b));
+       err = lafs_read_block(ss->ssblk);
+       BUG_ON(err); // FIXME do something useful here
        buf = map_dblock(ss->ssblk);
        p = buf;
        p += ss->segnum & (fs->prime_sb->s_blocksize/2 - 1);