- Drop unused data locks in clear_inode
- Fix for directory and inode counts and link counts
if (dentry == de)
continue;
- if (!atomic_read(&dentry->d_count))
+ if (!atomic_read(&dentry->d_count)) {
+ iput(inode);
continue;
+ }
if (!list_empty(&dentry->d_lru))
continue;
if (IS_ERR(inode))
goto out_dir;
- ext2_inc_count(inode);
-
err = ext2_make_empty(inode, dir);
if (err)
goto out_fail;
/* no directory data updates when intents rule */
if (!it || !it->it_disposition) {
+ /* XXX FIXME This code needs re-checked for non-intents */
+ ext2_inc_count(inode);
err = ll_add_link(dentry, inode);
if (err)
goto out_fail;
/* XXX FIXME do something dramatic */
}
+ rc = obd_cancel_unused(&sbi->ll_osc_conn, inode, LDLM_FL_NO_CALLBACK);
+ if (rc < 0) {
+ CERROR("obd_cancel_unused: %d\n", rc);
+ /* XXX FIXME do something dramatic */
+ }
+
if (atomic_read(&inode->i_count) == 0) {
struct ll_inode_info *lli = ll_i2info(inode);
struct lov_stripe_md *lsm = lli->lli_smd;