mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
new helper: set_default_d_op()
... to be used instead of manually assigning to ->s_d_op. All in-tree filesystem converted (and field itself is renamed, so any out-of-tree ones in need of conversion will be caught by compiler). Reviewed-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -1249,3 +1249,10 @@ Using try_lookup_noperm() will require linux/namei.h to be included.
|
||||
|
||||
Calling conventions for ->d_automount() have changed; we should *not* grab
|
||||
an extra reference to new mount - it should be returned with refcount 1.
|
||||
|
||||
---
|
||||
|
||||
**mandatory**
|
||||
|
||||
If your filesystem sets the default dentry_operations, use set_default_d_op()
|
||||
rather than manually setting sb->s_d_op.
|
||||
|
||||
+2
-2
@@ -135,9 +135,9 @@ static struct dentry *v9fs_mount(struct file_system_type *fs_type, int flags,
|
||||
goto release_sb;
|
||||
|
||||
if (v9ses->cache & (CACHE_META|CACHE_LOOSE))
|
||||
sb->s_d_op = &v9fs_cached_dentry_operations;
|
||||
set_default_d_op(sb, &v9fs_cached_dentry_operations);
|
||||
else
|
||||
sb->s_d_op = &v9fs_dentry_operations;
|
||||
set_default_d_op(sb, &v9fs_dentry_operations);
|
||||
|
||||
inode = v9fs_get_new_inode_from_fid(v9ses, fid, sb);
|
||||
if (IS_ERR(inode)) {
|
||||
|
||||
+1
-1
@@ -397,7 +397,7 @@ static int adfs_fill_super(struct super_block *sb, struct fs_context *fc)
|
||||
if (asb->s_ftsuffix)
|
||||
asb->s_namelen += 4;
|
||||
|
||||
sb->s_d_op = &adfs_dentry_operations;
|
||||
set_default_d_op(sb, &adfs_dentry_operations);
|
||||
root = adfs_iget(sb, &root_obj);
|
||||
sb->s_root = d_make_root(root);
|
||||
if (!sb->s_root) {
|
||||
|
||||
+2
-2
@@ -500,9 +500,9 @@ got_root:
|
||||
return PTR_ERR(root_inode);
|
||||
|
||||
if (affs_test_opt(AFFS_SB(sb)->s_flags, SF_INTL))
|
||||
sb->s_d_op = &affs_intl_dentry_operations;
|
||||
set_default_d_op(sb, &affs_intl_dentry_operations);
|
||||
else
|
||||
sb->s_d_op = &affs_dentry_operations;
|
||||
set_default_d_op(sb, &affs_dentry_operations);
|
||||
|
||||
sb->s_root = d_make_root(root_inode);
|
||||
if (!sb->s_root) {
|
||||
|
||||
+2
-2
@@ -483,9 +483,9 @@ static int afs_fill_super(struct super_block *sb, struct afs_fs_context *ctx)
|
||||
goto error;
|
||||
|
||||
if (as->dyn_root) {
|
||||
sb->s_d_op = &afs_dynroot_dentry_operations;
|
||||
set_default_d_op(sb, &afs_dynroot_dentry_operations);
|
||||
} else {
|
||||
sb->s_d_op = &afs_fs_dentry_operations;
|
||||
set_default_d_op(sb, &afs_fs_dentry_operations);
|
||||
rcu_assign_pointer(as->volume->sb, sb);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -311,7 +311,7 @@ static int autofs_fill_super(struct super_block *s, struct fs_context *fc)
|
||||
s->s_blocksize_bits = 10;
|
||||
s->s_magic = AUTOFS_SUPER_MAGIC;
|
||||
s->s_op = &autofs_sops;
|
||||
s->s_d_op = &autofs_dentry_operations;
|
||||
set_default_d_op(s, &autofs_dentry_operations);
|
||||
s->s_time_gran = 1;
|
||||
|
||||
/*
|
||||
|
||||
+1
-1
@@ -950,7 +950,7 @@ static int btrfs_fill_super(struct super_block *sb,
|
||||
sb->s_maxbytes = MAX_LFS_FILESIZE;
|
||||
sb->s_magic = BTRFS_SUPER_MAGIC;
|
||||
sb->s_op = &btrfs_super_ops;
|
||||
sb->s_d_op = &btrfs_dentry_operations;
|
||||
set_default_d_op(sb, &btrfs_dentry_operations);
|
||||
sb->s_export_op = &btrfs_export_ops;
|
||||
#ifdef CONFIG_FS_VERITY
|
||||
sb->s_vop = &btrfs_verityops;
|
||||
|
||||
+1
-1
@@ -1219,7 +1219,7 @@ static int ceph_set_super(struct super_block *s, struct fs_context *fc)
|
||||
fsc->max_file_size = 1ULL << 40; /* temp value until we get mdsmap */
|
||||
|
||||
s->s_op = &ceph_super_ops;
|
||||
s->s_d_op = &ceph_dentry_ops;
|
||||
set_default_d_op(s, &ceph_dentry_ops);
|
||||
s->s_export_op = &ceph_export_ops;
|
||||
|
||||
s->s_time_gran = 1;
|
||||
|
||||
+1
-1
@@ -230,7 +230,7 @@ static int coda_fill_super(struct super_block *sb, struct fs_context *fc)
|
||||
sb->s_blocksize_bits = 12;
|
||||
sb->s_magic = CODA_SUPER_MAGIC;
|
||||
sb->s_op = &coda_super_operations;
|
||||
sb->s_d_op = &coda_dentry_operations;
|
||||
set_default_d_op(sb, &coda_dentry_operations);
|
||||
sb->s_time_gran = 1;
|
||||
sb->s_time_min = S64_MIN;
|
||||
sb->s_time_max = S64_MAX;
|
||||
|
||||
+1
-1
@@ -92,7 +92,7 @@ static int configfs_fill_super(struct super_block *sb, struct fs_context *fc)
|
||||
configfs_root_group.cg_item.ci_dentry = root;
|
||||
root->d_fsdata = &configfs_root;
|
||||
sb->s_root = root;
|
||||
sb->s_d_op = &configfs_dentry_ops; /* the rest get that */
|
||||
set_default_d_op(sb, &configfs_dentry_ops); /* the rest get that */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+8
-2
@@ -1738,7 +1738,7 @@ static struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
|
||||
INIT_HLIST_HEAD(&dentry->d_children);
|
||||
INIT_HLIST_NODE(&dentry->d_u.d_alias);
|
||||
INIT_HLIST_NODE(&dentry->d_sib);
|
||||
d_set_d_op(dentry, dentry->d_sb->s_d_op);
|
||||
d_set_d_op(dentry, dentry->d_sb->__s_d_op);
|
||||
|
||||
if (dentry->d_op && dentry->d_op->d_init) {
|
||||
err = dentry->d_op->d_init(dentry);
|
||||
@@ -1821,7 +1821,7 @@ struct dentry *d_alloc_pseudo(struct super_block *sb, const struct qstr *name)
|
||||
struct dentry *dentry = __d_alloc(sb, name);
|
||||
if (likely(dentry)) {
|
||||
dentry->d_flags |= DCACHE_NORCU;
|
||||
if (!sb->s_d_op)
|
||||
if (!dentry->d_op)
|
||||
d_set_d_op(dentry, &anon_ops);
|
||||
}
|
||||
return dentry;
|
||||
@@ -1867,6 +1867,12 @@ void d_set_d_op(struct dentry *dentry, const struct dentry_operations *op)
|
||||
}
|
||||
EXPORT_SYMBOL(d_set_d_op);
|
||||
|
||||
void set_default_d_op(struct super_block *s, const struct dentry_operations *ops)
|
||||
{
|
||||
s->__s_d_op = ops;
|
||||
}
|
||||
EXPORT_SYMBOL(set_default_d_op);
|
||||
|
||||
static unsigned d_flags_for_inode(struct inode *inode)
|
||||
{
|
||||
unsigned add_flags = DCACHE_REGULAR_TYPE;
|
||||
|
||||
+1
-1
@@ -273,7 +273,7 @@ static int debugfs_fill_super(struct super_block *sb, struct fs_context *fc)
|
||||
return err;
|
||||
|
||||
sb->s_op = &debugfs_super_operations;
|
||||
sb->s_d_op = &debugfs_dops;
|
||||
set_default_d_op(sb, &debugfs_dops);
|
||||
|
||||
debugfs_apply_options(sb);
|
||||
|
||||
|
||||
+1
-1
@@ -381,7 +381,7 @@ static int devpts_fill_super(struct super_block *s, struct fs_context *fc)
|
||||
s->s_blocksize_bits = 10;
|
||||
s->s_magic = DEVPTS_SUPER_MAGIC;
|
||||
s->s_op = &devpts_sops;
|
||||
s->s_d_op = &simple_dentry_operations;
|
||||
set_default_d_op(s, &simple_dentry_operations);
|
||||
s->s_time_gran = 1;
|
||||
fsi->sb = s;
|
||||
|
||||
|
||||
+1
-1
@@ -471,7 +471,7 @@ static int ecryptfs_get_tree(struct fs_context *fc)
|
||||
sbi = NULL;
|
||||
s->s_op = &ecryptfs_sops;
|
||||
s->s_xattr = ecryptfs_xattr_handlers;
|
||||
s->s_d_op = &ecryptfs_dops;
|
||||
set_default_d_op(s, &ecryptfs_dops);
|
||||
|
||||
err = "Reading sb failed";
|
||||
rc = kern_path(fc->source, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &path);
|
||||
|
||||
+1
-1
@@ -350,7 +350,7 @@ static int efivarfs_fill_super(struct super_block *sb, struct fs_context *fc)
|
||||
sb->s_blocksize_bits = PAGE_SHIFT;
|
||||
sb->s_magic = EFIVARFS_MAGIC;
|
||||
sb->s_op = &efivarfs_ops;
|
||||
sb->s_d_op = &efivarfs_d_ops;
|
||||
set_default_d_op(sb, &efivarfs_d_ops);
|
||||
sb->s_time_gran = 1;
|
||||
|
||||
if (!efivar_supports_writes())
|
||||
|
||||
+2
-2
@@ -667,9 +667,9 @@ static int exfat_fill_super(struct super_block *sb, struct fs_context *fc)
|
||||
}
|
||||
|
||||
if (sbi->options.utf8)
|
||||
sb->s_d_op = &exfat_utf8_dentry_ops;
|
||||
set_default_d_op(sb, &exfat_utf8_dentry_ops);
|
||||
else
|
||||
sb->s_d_op = &exfat_dentry_ops;
|
||||
set_default_d_op(sb, &exfat_dentry_ops);
|
||||
|
||||
root_inode = new_inode(sb);
|
||||
if (!root_inode) {
|
||||
|
||||
@@ -646,7 +646,7 @@ static const struct inode_operations msdos_dir_inode_operations = {
|
||||
static void setup(struct super_block *sb)
|
||||
{
|
||||
MSDOS_SB(sb)->dir_ops = &msdos_dir_inode_operations;
|
||||
sb->s_d_op = &msdos_dentry_operations;
|
||||
set_default_d_op(sb, &msdos_dentry_operations);
|
||||
sb->s_flags |= SB_NOATIME;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -1187,9 +1187,9 @@ static void setup(struct super_block *sb)
|
||||
{
|
||||
MSDOS_SB(sb)->dir_ops = &vfat_dir_inode_operations;
|
||||
if (MSDOS_SB(sb)->options.name_check != 's')
|
||||
sb->s_d_op = &vfat_ci_dentry_ops;
|
||||
set_default_d_op(sb, &vfat_ci_dentry_ops);
|
||||
else
|
||||
sb->s_d_op = &vfat_dentry_ops;
|
||||
set_default_d_op(sb, &vfat_dentry_ops);
|
||||
}
|
||||
|
||||
static int vfat_fill_super(struct super_block *sb, struct fs_context *fc)
|
||||
|
||||
+2
-2
@@ -1715,7 +1715,7 @@ static int fuse_fill_super_submount(struct super_block *sb,
|
||||
fi = get_fuse_inode(root);
|
||||
fi->nlookup--;
|
||||
|
||||
sb->s_d_op = &fuse_dentry_operations;
|
||||
set_default_d_op(sb, &fuse_dentry_operations);
|
||||
sb->s_root = d_make_root(root);
|
||||
if (!sb->s_root)
|
||||
return -ENOMEM;
|
||||
@@ -1850,7 +1850,7 @@ int fuse_fill_super_common(struct super_block *sb, struct fuse_fs_context *ctx)
|
||||
|
||||
err = -ENOMEM;
|
||||
root = fuse_get_root_inode(sb, ctx->rootmode);
|
||||
sb->s_d_op = &fuse_dentry_operations;
|
||||
set_default_d_op(sb, &fuse_dentry_operations);
|
||||
root_dentry = d_make_root(root);
|
||||
if (!root_dentry)
|
||||
goto err_dev_free;
|
||||
|
||||
@@ -1145,7 +1145,7 @@ static int gfs2_fill_super(struct super_block *sb, struct fs_context *fc)
|
||||
sb->s_magic = GFS2_MAGIC;
|
||||
sb->s_op = &gfs2_super_ops;
|
||||
|
||||
sb->s_d_op = &gfs2_dops;
|
||||
set_default_d_op(sb, &gfs2_dops);
|
||||
sb->s_export_op = &gfs2_export_ops;
|
||||
sb->s_qcop = &gfs2_quotactl_ops;
|
||||
sb->s_quota_types = QTYPE_MASK_USR | QTYPE_MASK_GRP;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user