You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
fs: dcache reduce branches in lookup path
Reduce some branches and memory accesses in dcache lookup by adding dentry flags to indicate common d_ops are set, rather than having to check them. This saves a pointer memory access (dentry->d_op) in common path lookup situations, and saves another pointer load and branch in cases where we have d_op but not the particular operation. Patched with: git grep -E '[.>]([[:space:]])*d_op([[:space:]])*=' | xargs sed -e 's/\([^\t ]*\)->d_op = \(.*\);/d_set_d_op(\1, \2);/' -e 's/\([^\t ]*\)\.d_op = \(.*\);/d_set_d_op(\&\1, \2);/' -i Signed-off-by: Nick Piggin <npiggin@kernel.dk>
This commit is contained in:
@@ -2233,7 +2233,7 @@ pfm_alloc_file(pfm_context_t *ctx)
|
|||||||
}
|
}
|
||||||
path.mnt = mntget(pfmfs_mnt);
|
path.mnt = mntget(pfmfs_mnt);
|
||||||
|
|
||||||
path.dentry->d_op = &pfmfs_dentry_operations;
|
d_set_d_op(path.dentry, &pfmfs_dentry_operations);
|
||||||
d_add(path.dentry, inode);
|
d_add(path.dentry, inode);
|
||||||
|
|
||||||
file = alloc_file(&path, FMODE_READ, &pfm_file_ops);
|
file = alloc_file(&path, FMODE_READ, &pfm_file_ops);
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ static struct dentry *autofs_root_lookup(struct inode *dir, struct dentry *dentr
|
|||||||
*
|
*
|
||||||
* We need to do this before we release the directory semaphore.
|
* We need to do this before we release the directory semaphore.
|
||||||
*/
|
*/
|
||||||
dentry->d_op = &autofs_dentry_operations;
|
d_set_d_op(dentry, &autofs_dentry_operations);
|
||||||
dentry->d_flags |= DCACHE_AUTOFS_PENDING;
|
dentry->d_flags |= DCACHE_AUTOFS_PENDING;
|
||||||
d_add(dentry, NULL);
|
d_add(dentry, NULL);
|
||||||
|
|
||||||
|
|||||||
@@ -398,9 +398,9 @@ smb_new_dentry(struct dentry *dentry)
|
|||||||
struct smb_sb_info *server = server_from_dentry(dentry);
|
struct smb_sb_info *server = server_from_dentry(dentry);
|
||||||
|
|
||||||
if (server->mnt->flags & SMB_MOUNT_CASE)
|
if (server->mnt->flags & SMB_MOUNT_CASE)
|
||||||
dentry->d_op = &smbfs_dentry_operations_case;
|
d_set_d_op(dentry, &smbfs_dentry_operations_case);
|
||||||
else
|
else
|
||||||
dentry->d_op = &smbfs_dentry_operations;
|
d_set_d_op(dentry, &smbfs_dentry_operations);
|
||||||
dentry->d_time = jiffies;
|
dentry->d_time = jiffies;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -462,9 +462,9 @@ smb_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
|
|||||||
add_entry:
|
add_entry:
|
||||||
server = server_from_dentry(dentry);
|
server = server_from_dentry(dentry);
|
||||||
if (server->mnt->flags & SMB_MOUNT_CASE)
|
if (server->mnt->flags & SMB_MOUNT_CASE)
|
||||||
dentry->d_op = &smbfs_dentry_operations_case;
|
d_set_d_op(dentry, &smbfs_dentry_operations_case);
|
||||||
else
|
else
|
||||||
dentry->d_op = &smbfs_dentry_operations;
|
d_set_d_op(dentry, &smbfs_dentry_operations);
|
||||||
|
|
||||||
d_add(dentry, inode);
|
d_add(dentry, inode);
|
||||||
smb_renew_times(dentry);
|
smb_renew_times(dentry);
|
||||||
|
|||||||
+13
-13
@@ -635,9 +635,9 @@ v9fs_create(struct v9fs_session_info *v9ses, struct inode *dir,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (v9ses->cache)
|
if (v9ses->cache)
|
||||||
dentry->d_op = &v9fs_cached_dentry_operations;
|
d_set_d_op(dentry, &v9fs_cached_dentry_operations);
|
||||||
else
|
else
|
||||||
dentry->d_op = &v9fs_dentry_operations;
|
d_set_d_op(dentry, &v9fs_dentry_operations);
|
||||||
|
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
err = v9fs_fid_add(dentry, fid);
|
err = v9fs_fid_add(dentry, fid);
|
||||||
@@ -749,7 +749,7 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode,
|
|||||||
err);
|
err);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
dentry->d_op = &v9fs_cached_dentry_operations;
|
d_set_d_op(dentry, &v9fs_cached_dentry_operations);
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
err = v9fs_fid_add(dentry, fid);
|
err = v9fs_fid_add(dentry, fid);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
@@ -767,7 +767,7 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode,
|
|||||||
err = PTR_ERR(inode);
|
err = PTR_ERR(inode);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
dentry->d_op = &v9fs_dentry_operations;
|
d_set_d_op(dentry, &v9fs_dentry_operations);
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
}
|
}
|
||||||
/* Now set the ACL based on the default value */
|
/* Now set the ACL based on the default value */
|
||||||
@@ -956,7 +956,7 @@ static int v9fs_vfs_mkdir_dotl(struct inode *dir,
|
|||||||
err);
|
err);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
dentry->d_op = &v9fs_cached_dentry_operations;
|
d_set_d_op(dentry, &v9fs_cached_dentry_operations);
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
err = v9fs_fid_add(dentry, fid);
|
err = v9fs_fid_add(dentry, fid);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
@@ -973,7 +973,7 @@ static int v9fs_vfs_mkdir_dotl(struct inode *dir,
|
|||||||
err = PTR_ERR(inode);
|
err = PTR_ERR(inode);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
dentry->d_op = &v9fs_dentry_operations;
|
d_set_d_op(dentry, &v9fs_dentry_operations);
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
}
|
}
|
||||||
/* Now set the ACL based on the default value */
|
/* Now set the ACL based on the default value */
|
||||||
@@ -1041,9 +1041,9 @@ static struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
|
|||||||
|
|
||||||
inst_out:
|
inst_out:
|
||||||
if (v9ses->cache)
|
if (v9ses->cache)
|
||||||
dentry->d_op = &v9fs_cached_dentry_operations;
|
d_set_d_op(dentry, &v9fs_cached_dentry_operations);
|
||||||
else
|
else
|
||||||
dentry->d_op = &v9fs_dentry_operations;
|
d_set_d_op(dentry, &v9fs_dentry_operations);
|
||||||
|
|
||||||
d_add(dentry, inode);
|
d_add(dentry, inode);
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -1709,7 +1709,7 @@ v9fs_vfs_symlink_dotl(struct inode *dir, struct dentry *dentry,
|
|||||||
err);
|
err);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
dentry->d_op = &v9fs_cached_dentry_operations;
|
d_set_d_op(dentry, &v9fs_cached_dentry_operations);
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
err = v9fs_fid_add(dentry, fid);
|
err = v9fs_fid_add(dentry, fid);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
@@ -1722,7 +1722,7 @@ v9fs_vfs_symlink_dotl(struct inode *dir, struct dentry *dentry,
|
|||||||
err = PTR_ERR(inode);
|
err = PTR_ERR(inode);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
dentry->d_op = &v9fs_dentry_operations;
|
d_set_d_op(dentry, &v9fs_dentry_operations);
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1856,7 +1856,7 @@ v9fs_vfs_link_dotl(struct dentry *old_dentry, struct inode *dir,
|
|||||||
ihold(old_dentry->d_inode);
|
ihold(old_dentry->d_inode);
|
||||||
}
|
}
|
||||||
|
|
||||||
dentry->d_op = old_dentry->d_op;
|
d_set_d_op(dentry, old_dentry->d_op);
|
||||||
d_instantiate(dentry, old_dentry->d_inode);
|
d_instantiate(dentry, old_dentry->d_inode);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
@@ -1980,7 +1980,7 @@ v9fs_vfs_mknod_dotl(struct inode *dir, struct dentry *dentry, int omode,
|
|||||||
err);
|
err);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
dentry->d_op = &v9fs_cached_dentry_operations;
|
d_set_d_op(dentry, &v9fs_cached_dentry_operations);
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
err = v9fs_fid_add(dentry, fid);
|
err = v9fs_fid_add(dentry, fid);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
@@ -1996,7 +1996,7 @@ v9fs_vfs_mknod_dotl(struct inode *dir, struct dentry *dentry, int omode,
|
|||||||
err = PTR_ERR(inode);
|
err = PTR_ERR(inode);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
dentry->d_op = &v9fs_dentry_operations;
|
d_set_d_op(dentry, &v9fs_dentry_operations);
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
}
|
}
|
||||||
/* Now set the ACL based on the default value */
|
/* Now set the ACL based on the default value */
|
||||||
|
|||||||
+1
-1
@@ -276,7 +276,7 @@ adfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
|
|||||||
struct object_info obj;
|
struct object_info obj;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
dentry->d_op = &adfs_dentry_operations;
|
d_set_d_op(dentry, &adfs_dentry_operations);
|
||||||
lock_kernel();
|
lock_kernel();
|
||||||
error = adfs_dir_lookup_byname(dir, &dentry->d_name, &obj);
|
error = adfs_dir_lookup_byname(dir, &dentry->d_name, &obj);
|
||||||
if (error == 0) {
|
if (error == 0) {
|
||||||
|
|||||||
+1
-1
@@ -484,7 +484,7 @@ static int adfs_fill_super(struct super_block *sb, void *data, int silent)
|
|||||||
adfs_error(sb, "get root inode failed\n");
|
adfs_error(sb, "get root inode failed\n");
|
||||||
goto error;
|
goto error;
|
||||||
} else
|
} else
|
||||||
sb->s_root->d_op = &adfs_dentry_operations;
|
d_set_d_op(sb->s_root, &adfs_dentry_operations);
|
||||||
unlock_kernel();
|
unlock_kernel();
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -240,7 +240,7 @@ affs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
|
|||||||
if (IS_ERR(inode))
|
if (IS_ERR(inode))
|
||||||
return ERR_CAST(inode);
|
return ERR_CAST(inode);
|
||||||
}
|
}
|
||||||
dentry->d_op = AFFS_SB(sb)->s_flags & SF_INTL ? &affs_intl_dentry_operations : &affs_dentry_operations;
|
d_set_d_op(dentry, AFFS_SB(sb)->s_flags & SF_INTL ? &affs_intl_dentry_operations : &affs_dentry_operations);
|
||||||
d_add(dentry, inode);
|
d_add(dentry, inode);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -482,7 +482,7 @@ got_root:
|
|||||||
printk(KERN_ERR "AFFS: Get root inode failed\n");
|
printk(KERN_ERR "AFFS: Get root inode failed\n");
|
||||||
goto out_error;
|
goto out_error;
|
||||||
}
|
}
|
||||||
sb->s_root->d_op = &affs_dentry_operations;
|
d_set_d_op(sb->s_root, &affs_dentry_operations);
|
||||||
|
|
||||||
pr_debug("AFFS: s_flags=%lX\n",sb->s_flags);
|
pr_debug("AFFS: s_flags=%lX\n",sb->s_flags);
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
+1
-1
@@ -581,7 +581,7 @@ static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry,
|
|||||||
}
|
}
|
||||||
|
|
||||||
success:
|
success:
|
||||||
dentry->d_op = &afs_fs_dentry_operations;
|
d_set_d_op(dentry, &afs_fs_dentry_operations);
|
||||||
|
|
||||||
d_add(dentry, inode);
|
d_add(dentry, inode);
|
||||||
_leave(" = 0 { vn=%u u=%u } -> { ino=%lu v=%llu }",
|
_leave(" = 0 { vn=%u u=%u } -> { ino=%lu v=%llu }",
|
||||||
|
|||||||
+1
-1
@@ -113,7 +113,7 @@ struct file *anon_inode_getfile(const char *name,
|
|||||||
*/
|
*/
|
||||||
ihold(anon_inode_inode);
|
ihold(anon_inode_inode);
|
||||||
|
|
||||||
path.dentry->d_op = &anon_inodefs_dentry_operations;
|
d_set_d_op(path.dentry, &anon_inodefs_dentry_operations);
|
||||||
d_instantiate(path.dentry, anon_inode_inode);
|
d_instantiate(path.dentry, anon_inode_inode);
|
||||||
|
|
||||||
error = -ENFILE;
|
error = -ENFILE;
|
||||||
|
|||||||
+1
-1
@@ -309,7 +309,7 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
|
|||||||
goto fail_iput;
|
goto fail_iput;
|
||||||
pipe = NULL;
|
pipe = NULL;
|
||||||
|
|
||||||
root->d_op = &autofs4_sb_dentry_operations;
|
d_set_d_op(root, &autofs4_sb_dentry_operations);
|
||||||
root->d_fsdata = ino;
|
root->d_fsdata = ino;
|
||||||
|
|
||||||
/* Can this call block? */
|
/* Can this call block? */
|
||||||
|
|||||||
+5
-5
@@ -571,7 +571,7 @@ static struct dentry *autofs4_lookup(struct inode *dir, struct dentry *dentry, s
|
|||||||
* we check for the hashed dentry and return the newly
|
* we check for the hashed dentry and return the newly
|
||||||
* hashed dentry.
|
* hashed dentry.
|
||||||
*/
|
*/
|
||||||
dentry->d_op = &autofs4_root_dentry_operations;
|
d_set_d_op(dentry, &autofs4_root_dentry_operations);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* And we need to ensure that the same dentry is used for
|
* And we need to ensure that the same dentry is used for
|
||||||
@@ -710,9 +710,9 @@ static int autofs4_dir_symlink(struct inode *dir,
|
|||||||
d_add(dentry, inode);
|
d_add(dentry, inode);
|
||||||
|
|
||||||
if (dir == dir->i_sb->s_root->d_inode)
|
if (dir == dir->i_sb->s_root->d_inode)
|
||||||
dentry->d_op = &autofs4_root_dentry_operations;
|
d_set_d_op(dentry, &autofs4_root_dentry_operations);
|
||||||
else
|
else
|
||||||
dentry->d_op = &autofs4_dentry_operations;
|
d_set_d_op(dentry, &autofs4_dentry_operations);
|
||||||
|
|
||||||
dentry->d_fsdata = ino;
|
dentry->d_fsdata = ino;
|
||||||
ino->dentry = dget(dentry);
|
ino->dentry = dget(dentry);
|
||||||
@@ -845,9 +845,9 @@ static int autofs4_dir_mkdir(struct inode *dir, struct dentry *dentry, int mode)
|
|||||||
d_add(dentry, inode);
|
d_add(dentry, inode);
|
||||||
|
|
||||||
if (dir == dir->i_sb->s_root->d_inode)
|
if (dir == dir->i_sb->s_root->d_inode)
|
||||||
dentry->d_op = &autofs4_root_dentry_operations;
|
d_set_d_op(dentry, &autofs4_root_dentry_operations);
|
||||||
else
|
else
|
||||||
dentry->d_op = &autofs4_dentry_operations;
|
d_set_d_op(dentry, &autofs4_dentry_operations);
|
||||||
|
|
||||||
dentry->d_fsdata = ino;
|
dentry->d_fsdata = ino;
|
||||||
ino->dentry = dget(dentry);
|
ino->dentry = dget(dentry);
|
||||||
|
|||||||
+2
-2
@@ -110,7 +110,7 @@ static struct dentry *btrfs_get_dentry(struct super_block *sb, u64 objectid,
|
|||||||
|
|
||||||
dentry = d_obtain_alias(inode);
|
dentry = d_obtain_alias(inode);
|
||||||
if (!IS_ERR(dentry))
|
if (!IS_ERR(dentry))
|
||||||
dentry->d_op = &btrfs_dentry_operations;
|
d_set_d_op(dentry, &btrfs_dentry_operations);
|
||||||
return dentry;
|
return dentry;
|
||||||
fail:
|
fail:
|
||||||
srcu_read_unlock(&fs_info->subvol_srcu, index);
|
srcu_read_unlock(&fs_info->subvol_srcu, index);
|
||||||
@@ -225,7 +225,7 @@ static struct dentry *btrfs_get_parent(struct dentry *child)
|
|||||||
key.offset = 0;
|
key.offset = 0;
|
||||||
dentry = d_obtain_alias(btrfs_iget(root->fs_info->sb, &key, root, NULL));
|
dentry = d_obtain_alias(btrfs_iget(root->fs_info->sb, &key, root, NULL));
|
||||||
if (!IS_ERR(dentry))
|
if (!IS_ERR(dentry))
|
||||||
dentry->d_op = &btrfs_dentry_operations;
|
d_set_d_op(dentry, &btrfs_dentry_operations);
|
||||||
return dentry;
|
return dentry;
|
||||||
fail:
|
fail:
|
||||||
btrfs_free_path(path);
|
btrfs_free_path(path);
|
||||||
|
|||||||
+1
-1
@@ -4084,7 +4084,7 @@ struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry)
|
|||||||
int index;
|
int index;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
dentry->d_op = &btrfs_dentry_operations;
|
d_set_d_op(dentry, &btrfs_dentry_operations);
|
||||||
|
|
||||||
if (dentry->d_name.len > BTRFS_NAME_LEN)
|
if (dentry->d_name.len > BTRFS_NAME_LEN)
|
||||||
return ERR_PTR(-ENAMETOOLONG);
|
return ERR_PTR(-ENAMETOOLONG);
|
||||||
|
|||||||
+3
-3
@@ -42,11 +42,11 @@ int ceph_init_dentry(struct dentry *dentry)
|
|||||||
|
|
||||||
if (dentry->d_parent == NULL || /* nfs fh_to_dentry */
|
if (dentry->d_parent == NULL || /* nfs fh_to_dentry */
|
||||||
ceph_snap(dentry->d_parent->d_inode) == CEPH_NOSNAP)
|
ceph_snap(dentry->d_parent->d_inode) == CEPH_NOSNAP)
|
||||||
dentry->d_op = &ceph_dentry_ops;
|
d_set_d_op(dentry, &ceph_dentry_ops);
|
||||||
else if (ceph_snap(dentry->d_parent->d_inode) == CEPH_SNAPDIR)
|
else if (ceph_snap(dentry->d_parent->d_inode) == CEPH_SNAPDIR)
|
||||||
dentry->d_op = &ceph_snapdir_dentry_ops;
|
d_set_d_op(dentry, &ceph_snapdir_dentry_ops);
|
||||||
else
|
else
|
||||||
dentry->d_op = &ceph_snap_dentry_ops;
|
d_set_d_op(dentry, &ceph_snap_dentry_ops);
|
||||||
|
|
||||||
di = kmem_cache_alloc(ceph_dentry_cachep, GFP_NOFS | __GFP_ZERO);
|
di = kmem_cache_alloc(ceph_dentry_cachep, GFP_NOFS | __GFP_ZERO);
|
||||||
if (!di)
|
if (!di)
|
||||||
|
|||||||
+8
-8
@@ -135,9 +135,9 @@ static void setup_cifs_dentry(struct cifsTconInfo *tcon,
|
|||||||
struct inode *newinode)
|
struct inode *newinode)
|
||||||
{
|
{
|
||||||
if (tcon->nocase)
|
if (tcon->nocase)
|
||||||
direntry->d_op = &cifs_ci_dentry_ops;
|
d_set_d_op(direntry, &cifs_ci_dentry_ops);
|
||||||
else
|
else
|
||||||
direntry->d_op = &cifs_dentry_ops;
|
d_set_d_op(direntry, &cifs_dentry_ops);
|
||||||
d_instantiate(direntry, newinode);
|
d_instantiate(direntry, newinode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -421,9 +421,9 @@ int cifs_mknod(struct inode *inode, struct dentry *direntry, int mode,
|
|||||||
rc = cifs_get_inode_info_unix(&newinode, full_path,
|
rc = cifs_get_inode_info_unix(&newinode, full_path,
|
||||||
inode->i_sb, xid);
|
inode->i_sb, xid);
|
||||||
if (pTcon->nocase)
|
if (pTcon->nocase)
|
||||||
direntry->d_op = &cifs_ci_dentry_ops;
|
d_set_d_op(direntry, &cifs_ci_dentry_ops);
|
||||||
else
|
else
|
||||||
direntry->d_op = &cifs_dentry_ops;
|
d_set_d_op(direntry, &cifs_dentry_ops);
|
||||||
|
|
||||||
if (rc == 0)
|
if (rc == 0)
|
||||||
d_instantiate(direntry, newinode);
|
d_instantiate(direntry, newinode);
|
||||||
@@ -604,9 +604,9 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
|
|||||||
|
|
||||||
if ((rc == 0) && (newInode != NULL)) {
|
if ((rc == 0) && (newInode != NULL)) {
|
||||||
if (pTcon->nocase)
|
if (pTcon->nocase)
|
||||||
direntry->d_op = &cifs_ci_dentry_ops;
|
d_set_d_op(direntry, &cifs_ci_dentry_ops);
|
||||||
else
|
else
|
||||||
direntry->d_op = &cifs_dentry_ops;
|
d_set_d_op(direntry, &cifs_dentry_ops);
|
||||||
d_add(direntry, newInode);
|
d_add(direntry, newInode);
|
||||||
if (posix_open) {
|
if (posix_open) {
|
||||||
filp = lookup_instantiate_filp(nd, direntry,
|
filp = lookup_instantiate_filp(nd, direntry,
|
||||||
@@ -634,9 +634,9 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
|
|||||||
rc = 0;
|
rc = 0;
|
||||||
direntry->d_time = jiffies;
|
direntry->d_time = jiffies;
|
||||||
if (pTcon->nocase)
|
if (pTcon->nocase)
|
||||||
direntry->d_op = &cifs_ci_dentry_ops;
|
d_set_d_op(direntry, &cifs_ci_dentry_ops);
|
||||||
else
|
else
|
||||||
direntry->d_op = &cifs_dentry_ops;
|
d_set_d_op(direntry, &cifs_dentry_ops);
|
||||||
d_add(direntry, NULL);
|
d_add(direntry, NULL);
|
||||||
/* if it was once a directory (but how can we tell?) we could do
|
/* if it was once a directory (but how can we tell?) we could do
|
||||||
shrink_dcache_parent(direntry); */
|
shrink_dcache_parent(direntry); */
|
||||||
|
|||||||
+4
-4
@@ -1319,9 +1319,9 @@ int cifs_mkdir(struct inode *inode, struct dentry *direntry, int mode)
|
|||||||
to set uid/gid */
|
to set uid/gid */
|
||||||
inc_nlink(inode);
|
inc_nlink(inode);
|
||||||
if (pTcon->nocase)
|
if (pTcon->nocase)
|
||||||
direntry->d_op = &cifs_ci_dentry_ops;
|
d_set_d_op(direntry, &cifs_ci_dentry_ops);
|
||||||
else
|
else
|
||||||
direntry->d_op = &cifs_dentry_ops;
|
d_set_d_op(direntry, &cifs_dentry_ops);
|
||||||
|
|
||||||
cifs_unix_basic_to_fattr(&fattr, pInfo, cifs_sb);
|
cifs_unix_basic_to_fattr(&fattr, pInfo, cifs_sb);
|
||||||
cifs_fill_uniqueid(inode->i_sb, &fattr);
|
cifs_fill_uniqueid(inode->i_sb, &fattr);
|
||||||
@@ -1363,9 +1363,9 @@ mkdir_get_info:
|
|||||||
inode->i_sb, xid, NULL);
|
inode->i_sb, xid, NULL);
|
||||||
|
|
||||||
if (pTcon->nocase)
|
if (pTcon->nocase)
|
||||||
direntry->d_op = &cifs_ci_dentry_ops;
|
d_set_d_op(direntry, &cifs_ci_dentry_ops);
|
||||||
else
|
else
|
||||||
direntry->d_op = &cifs_dentry_ops;
|
d_set_d_op(direntry, &cifs_dentry_ops);
|
||||||
d_instantiate(direntry, newinode);
|
d_instantiate(direntry, newinode);
|
||||||
/* setting nlink not necessary except in cases where we
|
/* setting nlink not necessary except in cases where we
|
||||||
* failed to get it from the server or was set bogus */
|
* failed to get it from the server or was set bogus */
|
||||||
|
|||||||
+2
-2
@@ -525,9 +525,9 @@ cifs_symlink(struct inode *inode, struct dentry *direntry, const char *symname)
|
|||||||
rc);
|
rc);
|
||||||
} else {
|
} else {
|
||||||
if (pTcon->nocase)
|
if (pTcon->nocase)
|
||||||
direntry->d_op = &cifs_ci_dentry_ops;
|
d_set_d_op(direntry, &cifs_ci_dentry_ops);
|
||||||
else
|
else
|
||||||
direntry->d_op = &cifs_dentry_ops;
|
d_set_d_op(direntry, &cifs_dentry_ops);
|
||||||
d_instantiate(direntry, newinode);
|
d_instantiate(direntry, newinode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -103,9 +103,9 @@ cifs_readdir_lookup(struct dentry *parent, struct qstr *name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cifs_sb_master_tcon(CIFS_SB(sb))->nocase)
|
if (cifs_sb_master_tcon(CIFS_SB(sb))->nocase)
|
||||||
dentry->d_op = &cifs_ci_dentry_ops;
|
d_set_d_op(dentry, &cifs_ci_dentry_ops);
|
||||||
else
|
else
|
||||||
dentry->d_op = &cifs_dentry_ops;
|
d_set_d_op(dentry, &cifs_dentry_ops);
|
||||||
|
|
||||||
alias = d_materialise_unique(dentry, inode);
|
alias = d_materialise_unique(dentry, inode);
|
||||||
if (alias != NULL) {
|
if (alias != NULL) {
|
||||||
|
|||||||
+1
-1
@@ -125,7 +125,7 @@ static struct dentry *coda_lookup(struct inode *dir, struct dentry *entry, struc
|
|||||||
return ERR_PTR(error);
|
return ERR_PTR(error);
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
entry->d_op = &coda_dentry_operations;
|
d_set_d_op(entry, &coda_dentry_operations);
|
||||||
|
|
||||||
if (inode && (type & CODA_NOCACHE))
|
if (inode && (type & CODA_NOCACHE))
|
||||||
coda_flag_inode(inode, C_VATTR | C_PURGE);
|
coda_flag_inode(inode, C_VATTR | C_PURGE);
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user