if (list_empty(&b->orphans)) {
list_add_tail(&b->orphans, &fs->pending_orphans);
getdref(b, MKREF(orphan_list));
+ lafs_wake_cleaner(fs);
}
spin_unlock(&fs->lock);
}
/* Committed to being an orphan now */
b->orphan_slot = om->nextfree++;
- spin_lock(&fs->lock);
set_bit(B_Orphan, &b->b.flags);
- if (list_empty(&b->orphans)) {
- getdref(b, MKREF(orphan_list));
- list_add_tail(&b->orphans, &fs->pending_orphans);
- }
- spin_unlock(&fs->lock);
+ lafs_add_orphan(fs, b);
+
dprintk("%p->orphan_slot=%d (%lu,%lu,%lu) %s\n", b, b->orphan_slot,
LAFSI(b->b.inode)->filesys->i_ino,
b->b.inode->i_ino, b->b.fileaddr, strblk(&b->b));
getdref(db, MKREF(orphan_list));
}
spin_unlock(&fs->lock);
+ lafs_wake_cleaner(fs);
}
void lafs_orphan_forget(struct fs *fs, struct datablock *db)