From: NeilBrown Date: Fri, 25 Jun 2010 10:38:30 +0000 (+1000) Subject: Add tracing to show orphans at shutdown. X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=3fc263644ea0f1bf11046ee0460affad6cd90bb3;p=LaFS.git Add tracing to show orphans at shutdown. We have had problems with orphans not disappearing. Signed-off-by: NeilBrown --- diff --git a/super.c b/super.c index 8951caf..ccb06da 100644 --- a/super.c +++ b/super.c @@ -677,6 +677,21 @@ lafs_release(struct fs *fs) kfree(fs); } +static int show_orphans(struct fs *fs) +{ + struct datablock *db; + printk("Orphans:\n"); + list_for_each_entry(db, &fs->pending_orphans, + orphans) { + printk("orphan=%s\n", strblk(&db->b)); + if (LAFSI(db->b.inode)->type == TypeInodeFile) + lafs_print_tree(&LAFSI(db->my_inode)->iblock->b, 0); + } + printk("cleaner active: %d %d\n", fs->cleaner.active, + fs->scan.done); + return 1; /* meaningless, but makes it easy to add to wait_event below */ +} + static void lafs_put_super(struct super_block *sb) { @@ -697,6 +712,7 @@ lafs_put_super(struct super_block *sb) /* FIXME maybe I want these tests in a spinlock ?? */ wait_event(fs->async_complete, + show_orphans(fs) && !test_bit(OrphansRunning, &fs->fsstate) && list_empty(&fs->pending_orphans) && fs->scan.done == 1 &&