LASSERT(cache_dir);
LASSERT(cache_dir->i_op->create);
-
- //lock_kernel();
+
cache_parent = pre_smfs_dentry(NULL, parent, dentry->d_parent);
cache_dentry = pre_smfs_dentry(cache_parent, NULL, dentry);
if (!cache_dentry || !cache_parent) {
post_smfs_inode(dir, cache_dir);
smfs_trans_commit(dir, handle, 0);
-
+
exit:
- //unlock_kernel();
post_smfs_dentry(cache_dentry);
post_smfs_dentry(cache_parent);
RETURN(rc);
ENTRY;
- cache_dir = I2CI(dir);
if (!cache_dir)
RETURN(-ENOENT);
smfs_update_dentry(dentry, tmp);
if (tmp->d_inode) {
+ if (!tmp->d_inode->i_nlink)
+ CWARN("inode #%lu (%p) nlink is 0\n",
+ tmp->d_inode->i_ino, tmp->d_inode);
+
*inode = smfs_get_inode(dir->i_sb, tmp->d_inode->i_ino,
dir, 0);
if (!(*inode))
struct dentry * rdentry = NULL;
struct inode * inode = NULL;
int rc;
+
+ ENTRY;
rc = smfs_do_lookup(dir, dentry, nd, &inode);
if (rc)
goto exit;
}
- //lock_kernel();
handle = smfs_trans_start(dir, FSFILT_OP_UNLINK, NULL);
if (IS_ERR(handle)) {
rc = -ENOSPC;
goto exit;
}
-
+
pre_smfs_inode(dir, cache_dir);
pre_smfs_inode(dentry->d_inode, cache_inode);
post_smfs_inode(dentry->d_inode, cache_dentry->d_inode);
post_smfs_inode(dir, cache_dir);
- //unlock_kernel();
smfs_trans_commit(dir, handle, 0);
exit:
goto exit;
}
- //lock_kernel();
pre_smfs_inode(dir, cache_dir);
SMFS_PRE_HOOK(dir, HOOK_SYMLINK, &msg);
inode = smfs_get_inode(dir->i_sb, cache_dentry->d_inode->i_ino,
dir, 0);
if (inode) {
- //smfs_update_dentry(dentry, cache_dentry);
d_instantiate(dentry, inode);
}
else
smfs_trans_commit(dir, handle, 0);
exit:
- //unlock_kernel();
post_smfs_dentry(cache_dentry);
post_smfs_dentry(cache_parent);
RETURN(rc);
rc = -ENOSPC;
goto exit;
}
-
+
pre_smfs_inode(dir, cache_dir);
pre_smfs_inode(dentry->d_inode, cache_dentry->d_inode);