int credits;
fs = fs_from_inode(b->inode);
/* Don't need ->parent any more */
- if (next_parent == &b->parent->b) {
- if (atomic_dec_and_test(&next_parent
- ->refcnt))
- LAFS_BUG(1, b);
- } else {
- LAFS_BUG(next_parent, b);
+ if (next_parent == NULL)
next_parent = &b->parent->b;
- }
- del_ref(next_parent, MKREF(child),
+ else if (next_parent == &b->parent->b ||
+ next_parent->parent == b->parent) {
+ if (atomic_dec_and_test(&b->parent->b.refcnt))
+ LAFS_BUG(1, b);
+ } else
+ LAFS_BUG(1, b);
+
+ del_ref(&b->parent->b, MKREF(child),
__FILE__, __LINE__);
b->parent = NULL;
if (test_and_clear_bit(B_SegRef, &b->flags))