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)
{
/* 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 &&