if (lockh[1].cookie)
ldlm_lock_decref(lockh + 1, *mode);
#endif
+ } if (de->d_inode && de->d_inode->i_nlink == 0) {
+ /* as sometimes we lookup inode by ino/generation through
+ iopen mechanism, it's possible to find already unlinked
+ inode with nlink == 0. let's interpretate the case as
+ ENOENT -bzzz */
+ CWARN("found already unlinked inode %lu/%u\n",
+ de->d_inode->i_ino, de->d_inode->i_generation);
+ l_dput(de);
+ retval = ERR_PTR(-ENOENT);
+ ldlm_lock_decref(lockh, lock_mode);
+#ifdef S_PDIROPS
+ if (lockh[1].cookie)
+ ldlm_lock_decref(lockh + 1, *mode);
+#endif
}
RETURN(retval);