}
}
+ /* FIXME I think I want to hold the lock
+ * until I no longer reference b.
+ * but I need to drop it before calling
+ * lafs_destroy_inode, so I might need to get
+ * a counted ref to 'in'
+ */
spin_unlock(&lafs_hash_lock);
/* Free a delayed-release inode */
if (atomic_read(&b->refcnt) == 0 &&
#endif
err = lafs_load_block(&ib2->b, 0);
if (err)
- goto err;
+ goto err_ib2;
if (async)
err = lafs_wait_block_async(&ib2->b);
else
err = lafs_wait_block(&ib2->b);
if (err)
- goto err;
+ goto err_ib2;
/* This block might have been split, in which case
* we need to consider adjacent siblings
return ib;
+ err_ib2:
+ putiref(ib2);
err:
putiref(ib);
return ERR_PTR(err);