Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

Al Viro 05fb0e66 4bd9f3fd

+69 -53
+7
Documentation/filesystems/porting.rst
··· 1249 1249 1250 1250 Calling conventions for ->d_automount() have changed; we should *not* grab 1251 1251 an extra reference to new mount - it should be returned with refcount 1. 1252 + 1253 + --- 1254 + 1255 + **mandatory** 1256 + 1257 + If your filesystem sets the default dentry_operations, use set_default_d_op() 1258 + rather than manually setting sb->s_d_op.
+2 -2
fs/9p/vfs_super.c
··· 135 135 goto release_sb; 136 136 137 137 if (v9ses->cache & (CACHE_META|CACHE_LOOSE)) 138 - sb->s_d_op = &v9fs_cached_dentry_operations; 138 + set_default_d_op(sb, &v9fs_cached_dentry_operations); 139 139 else 140 - sb->s_d_op = &v9fs_dentry_operations; 140 + set_default_d_op(sb, &v9fs_dentry_operations); 141 141 142 142 inode = v9fs_get_new_inode_from_fid(v9ses, fid, sb); 143 143 if (IS_ERR(inode)) {
+1 -1
fs/adfs/super.c
··· 397 397 if (asb->s_ftsuffix) 398 398 asb->s_namelen += 4; 399 399 400 - sb->s_d_op = &adfs_dentry_operations; 400 + set_default_d_op(sb, &adfs_dentry_operations); 401 401 root = adfs_iget(sb, &root_obj); 402 402 sb->s_root = d_make_root(root); 403 403 if (!sb->s_root) {
+2 -2
fs/affs/super.c
··· 500 500 return PTR_ERR(root_inode); 501 501 502 502 if (affs_test_opt(AFFS_SB(sb)->s_flags, SF_INTL)) 503 - sb->s_d_op = &affs_intl_dentry_operations; 503 + set_default_d_op(sb, &affs_intl_dentry_operations); 504 504 else 505 - sb->s_d_op = &affs_dentry_operations; 505 + set_default_d_op(sb, &affs_dentry_operations); 506 506 507 507 sb->s_root = d_make_root(root_inode); 508 508 if (!sb->s_root) {
+2 -2
fs/afs/super.c
··· 483 483 goto error; 484 484 485 485 if (as->dyn_root) { 486 - sb->s_d_op = &afs_dynroot_dentry_operations; 486 + set_default_d_op(sb, &afs_dynroot_dentry_operations); 487 487 } else { 488 - sb->s_d_op = &afs_fs_dentry_operations; 488 + set_default_d_op(sb, &afs_fs_dentry_operations); 489 489 rcu_assign_pointer(as->volume->sb, sb); 490 490 } 491 491
+1 -1
fs/autofs/inode.c
··· 311 311 s->s_blocksize_bits = 10; 312 312 s->s_magic = AUTOFS_SUPER_MAGIC; 313 313 s->s_op = &autofs_sops; 314 - s->s_d_op = &autofs_dentry_operations; 314 + set_default_d_op(s, &autofs_dentry_operations); 315 315 s->s_time_gran = 1; 316 316 317 317 /*
+1 -1
fs/btrfs/super.c
··· 950 950 sb->s_maxbytes = MAX_LFS_FILESIZE; 951 951 sb->s_magic = BTRFS_SUPER_MAGIC; 952 952 sb->s_op = &btrfs_super_ops; 953 - sb->s_d_op = &btrfs_dentry_operations; 953 + set_default_d_op(sb, &btrfs_dentry_operations); 954 954 sb->s_export_op = &btrfs_export_ops; 955 955 #ifdef CONFIG_FS_VERITY 956 956 sb->s_vop = &btrfs_verityops;
+1 -1
fs/ceph/super.c
··· 1219 1219 fsc->max_file_size = 1ULL << 40; /* temp value until we get mdsmap */ 1220 1220 1221 1221 s->s_op = &ceph_super_ops; 1222 - s->s_d_op = &ceph_dentry_ops; 1222 + set_default_d_op(s, &ceph_dentry_ops); 1223 1223 s->s_export_op = &ceph_export_ops; 1224 1224 1225 1225 s->s_time_gran = 1;
+1 -1
fs/coda/inode.c
··· 230 230 sb->s_blocksize_bits = 12; 231 231 sb->s_magic = CODA_SUPER_MAGIC; 232 232 sb->s_op = &coda_super_operations; 233 - sb->s_d_op = &coda_dentry_operations; 233 + set_default_d_op(sb, &coda_dentry_operations); 234 234 sb->s_time_gran = 1; 235 235 sb->s_time_min = S64_MIN; 236 236 sb->s_time_max = S64_MAX;
+1 -1
fs/configfs/mount.c
··· 92 92 configfs_root_group.cg_item.ci_dentry = root; 93 93 root->d_fsdata = &configfs_root; 94 94 sb->s_root = root; 95 - sb->s_d_op = &configfs_dentry_ops; /* the rest get that */ 95 + set_default_d_op(sb, &configfs_dentry_ops); /* the rest get that */ 96 96 return 0; 97 97 } 98 98
+8 -2
fs/dcache.c
··· 1738 1738 INIT_HLIST_HEAD(&dentry->d_children); 1739 1739 INIT_HLIST_NODE(&dentry->d_u.d_alias); 1740 1740 INIT_HLIST_NODE(&dentry->d_sib); 1741 - d_set_d_op(dentry, dentry->d_sb->s_d_op); 1741 + d_set_d_op(dentry, dentry->d_sb->__s_d_op); 1742 1742 1743 1743 if (dentry->d_op && dentry->d_op->d_init) { 1744 1744 err = dentry->d_op->d_init(dentry); ··· 1821 1821 struct dentry *dentry = __d_alloc(sb, name); 1822 1822 if (likely(dentry)) { 1823 1823 dentry->d_flags |= DCACHE_NORCU; 1824 - if (!sb->s_d_op) 1824 + if (!dentry->d_op) 1825 1825 d_set_d_op(dentry, &anon_ops); 1826 1826 } 1827 1827 return dentry; ··· 1866 1866 1867 1867 } 1868 1868 EXPORT_SYMBOL(d_set_d_op); 1869 + 1870 + void set_default_d_op(struct super_block *s, const struct dentry_operations *ops) 1871 + { 1872 + s->__s_d_op = ops; 1873 + } 1874 + EXPORT_SYMBOL(set_default_d_op); 1869 1875 1870 1876 static unsigned d_flags_for_inode(struct inode *inode) 1871 1877 {
+1 -1
fs/debugfs/inode.c
··· 273 273 return err; 274 274 275 275 sb->s_op = &debugfs_super_operations; 276 - sb->s_d_op = &debugfs_dops; 276 + set_default_d_op(sb, &debugfs_dops); 277 277 278 278 debugfs_apply_options(sb); 279 279
+1 -1
fs/devpts/inode.c
··· 381 381 s->s_blocksize_bits = 10; 382 382 s->s_magic = DEVPTS_SUPER_MAGIC; 383 383 s->s_op = &devpts_sops; 384 - s->s_d_op = &simple_dentry_operations; 384 + set_default_d_op(s, &simple_dentry_operations); 385 385 s->s_time_gran = 1; 386 386 fsi->sb = s; 387 387
+1 -1
fs/ecryptfs/main.c
··· 471 471 sbi = NULL; 472 472 s->s_op = &ecryptfs_sops; 473 473 s->s_xattr = ecryptfs_xattr_handlers; 474 - s->s_d_op = &ecryptfs_dops; 474 + set_default_d_op(s, &ecryptfs_dops); 475 475 476 476 err = "Reading sb failed"; 477 477 rc = kern_path(fc->source, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &path);
+1 -1
fs/efivarfs/super.c
··· 350 350 sb->s_blocksize_bits = PAGE_SHIFT; 351 351 sb->s_magic = EFIVARFS_MAGIC; 352 352 sb->s_op = &efivarfs_ops; 353 - sb->s_d_op = &efivarfs_d_ops; 353 + set_default_d_op(sb, &efivarfs_d_ops); 354 354 sb->s_time_gran = 1; 355 355 356 356 if (!efivar_supports_writes())
+2 -2
fs/exfat/super.c
··· 667 667 } 668 668 669 669 if (sbi->options.utf8) 670 - sb->s_d_op = &exfat_utf8_dentry_ops; 670 + set_default_d_op(sb, &exfat_utf8_dentry_ops); 671 671 else 672 - sb->s_d_op = &exfat_dentry_ops; 672 + set_default_d_op(sb, &exfat_dentry_ops); 673 673 674 674 root_inode = new_inode(sb); 675 675 if (!root_inode) {
+1 -1
fs/fat/namei_msdos.c
··· 646 646 static void setup(struct super_block *sb) 647 647 { 648 648 MSDOS_SB(sb)->dir_ops = &msdos_dir_inode_operations; 649 - sb->s_d_op = &msdos_dentry_operations; 649 + set_default_d_op(sb, &msdos_dentry_operations); 650 650 sb->s_flags |= SB_NOATIME; 651 651 } 652 652
+2 -2
fs/fat/namei_vfat.c
··· 1187 1187 { 1188 1188 MSDOS_SB(sb)->dir_ops = &vfat_dir_inode_operations; 1189 1189 if (MSDOS_SB(sb)->options.name_check != 's') 1190 - sb->s_d_op = &vfat_ci_dentry_ops; 1190 + set_default_d_op(sb, &vfat_ci_dentry_ops); 1191 1191 else 1192 - sb->s_d_op = &vfat_dentry_ops; 1192 + set_default_d_op(sb, &vfat_dentry_ops); 1193 1193 } 1194 1194 1195 1195 static int vfat_fill_super(struct super_block *sb, struct fs_context *fc)
+2 -2
fs/fuse/inode.c
··· 1715 1715 fi = get_fuse_inode(root); 1716 1716 fi->nlookup--; 1717 1717 1718 - sb->s_d_op = &fuse_dentry_operations; 1718 + set_default_d_op(sb, &fuse_dentry_operations); 1719 1719 sb->s_root = d_make_root(root); 1720 1720 if (!sb->s_root) 1721 1721 return -ENOMEM; ··· 1850 1850 1851 1851 err = -ENOMEM; 1852 1852 root = fuse_get_root_inode(sb, ctx->rootmode); 1853 - sb->s_d_op = &fuse_dentry_operations; 1853 + set_default_d_op(sb, &fuse_dentry_operations); 1854 1854 root_dentry = d_make_root(root); 1855 1855 if (!root_dentry) 1856 1856 goto err_dev_free;
+1 -1
fs/gfs2/ops_fstype.c
··· 1145 1145 sb->s_magic = GFS2_MAGIC; 1146 1146 sb->s_op = &gfs2_super_ops; 1147 1147 1148 - sb->s_d_op = &gfs2_dops; 1148 + set_default_d_op(sb, &gfs2_dops); 1149 1149 sb->s_export_op = &gfs2_export_ops; 1150 1150 sb->s_qcop = &gfs2_quotactl_ops; 1151 1151 sb->s_quota_types = QTYPE_MASK_USR | QTYPE_MASK_GRP;
+1 -1
fs/hfs/super.c
··· 365 365 if (!root_inode) 366 366 goto bail_no_root; 367 367 368 - sb->s_d_op = &hfs_dentry_operations; 368 + set_default_d_op(sb, &hfs_dentry_operations); 369 369 res = -ENOMEM; 370 370 sb->s_root = d_make_root(root_inode); 371 371 if (!sb->s_root)
+1 -1
fs/hfsplus/super.c
··· 508 508 goto out_put_alloc_file; 509 509 } 510 510 511 - sb->s_d_op = &hfsplus_dentry_operations; 511 + set_default_d_op(sb, &hfsplus_dentry_operations); 512 512 sb->s_root = d_make_root(root); 513 513 if (!sb->s_root) { 514 514 err = -ENOMEM;
+1 -1
fs/hostfs/hostfs_kern.c
··· 933 933 sb->s_blocksize_bits = 10; 934 934 sb->s_magic = HOSTFS_SUPER_MAGIC; 935 935 sb->s_op = &hostfs_sbops; 936 - sb->s_d_op = &simple_dentry_operations; 936 + set_default_d_op(sb, &simple_dentry_operations); 937 937 sb->s_maxbytes = MAX_LFS_FILESIZE; 938 938 err = super_setup_bdi(sb); 939 939 if (err)
+1 -1
fs/hpfs/super.c
··· 554 554 /* Fill superblock stuff */ 555 555 s->s_magic = HPFS_SUPER_MAGIC; 556 556 s->s_op = &hpfs_sops; 557 - s->s_d_op = &hpfs_dentry_operations; 557 + set_default_d_op(s, &hpfs_dentry_operations); 558 558 s->s_time_min = local_to_gmt(s, 0); 559 559 s->s_time_max = local_to_gmt(s, U32_MAX); 560 560
+1 -1
fs/isofs/inode.c
··· 939 939 sbi->s_check = opt->check; 940 940 941 941 if (table) 942 - s->s_d_op = &isofs_dentry_ops[table - 1]; 942 + set_default_d_op(s, &isofs_dentry_ops[table - 1]); 943 943 944 944 /* get the root dentry */ 945 945 s->s_root = d_make_root(inode);
+1 -1
fs/jfs/super.c
··· 542 542 sb->s_magic = JFS_SUPER_MAGIC; 543 543 544 544 if (sbi->mntflag & JFS_OS2) 545 - sb->s_d_op = &jfs_ci_dentry_operations; 545 + set_default_d_op(sb, &jfs_ci_dentry_operations); 546 546 547 547 inode = jfs_iget(sb, ROOT_I); 548 548 if (IS_ERR(inode)) {
+1 -1
fs/kernfs/mount.c
··· 318 318 return -ENOMEM; 319 319 } 320 320 sb->s_root = root; 321 - sb->s_d_op = &kernfs_dops; 321 + set_default_d_op(sb, &kernfs_dops); 322 322 return 0; 323 323 } 324 324
+8 -8
fs/libfs.c
··· 75 75 { 76 76 if (dentry->d_name.len > NAME_MAX) 77 77 return ERR_PTR(-ENAMETOOLONG); 78 - if (!dentry->d_sb->s_d_op) 78 + if (!dentry->d_op) 79 79 d_set_d_op(dentry, &simple_dentry_operations); 80 80 81 81 if (IS_ENABLED(CONFIG_UNICODE) && IS_CASEFOLDED(dir)) ··· 684 684 s->s_root = d_make_root(root); 685 685 if (!s->s_root) 686 686 return -ENOMEM; 687 - s->s_d_op = ctx->dops; 687 + set_default_d_op(s, ctx->dops); 688 688 return 0; 689 689 } 690 690 ··· 1950 1950 * @sb: superblock to be configured 1951 1951 * 1952 1952 * Filesystems supporting casefolding and/or fscrypt can call this 1953 - * helper at mount-time to configure sb->s_d_op to best set of dentry 1954 - * operations required for the enabled features. The helper must be 1955 - * called after these have been configured, but before the root dentry 1956 - * is created. 1953 + * helper at mount-time to configure default dentry_operations to the 1954 + * best set of dentry operations required for the enabled features. 1955 + * The helper must be called after these have been configured, but 1956 + * before the root dentry is created. 1957 1957 */ 1958 1958 void generic_set_sb_d_ops(struct super_block *sb) 1959 1959 { 1960 1960 #if IS_ENABLED(CONFIG_UNICODE) 1961 1961 if (sb->s_encoding) { 1962 - sb->s_d_op = &generic_ci_dentry_ops; 1962 + set_default_d_op(sb, &generic_ci_dentry_ops); 1963 1963 return; 1964 1964 } 1965 1965 #endif 1966 1966 #ifdef CONFIG_FS_ENCRYPTION 1967 1967 if (sb->s_cop) { 1968 - sb->s_d_op = &generic_encrypted_dentry_ops; 1968 + set_default_d_op(sb, &generic_encrypted_dentry_ops); 1969 1969 return; 1970 1970 } 1971 1971 #endif
+1 -1
fs/nfs/super.c
··· 1183 1183 struct nfs_server *server = fc->s_fs_info; 1184 1184 int ret; 1185 1185 1186 - s->s_d_op = server->nfs_client->rpc_ops->dentry_ops; 1186 + set_default_d_op(s, server->nfs_client->rpc_ops->dentry_ops); 1187 1187 ret = set_anon_super(s, server); 1188 1188 if (ret == 0) 1189 1189 server->s_dev = s->s_dev;
+2 -1
fs/ntfs3/super.c
··· 1223 1223 sb->s_export_op = &ntfs_export_ops; 1224 1224 sb->s_time_gran = NTFS_TIME_GRAN; // 100 nsec 1225 1225 sb->s_xattr = ntfs_xattr_handlers; 1226 - sb->s_d_op = options->nocase ? &ntfs_dentry_ops : NULL; 1226 + if (options->nocase) 1227 + set_default_d_op(sb, &ntfs_dentry_ops); 1227 1228 1228 1229 options->nls = ntfs_load_nls(options->nls_name); 1229 1230 if (IS_ERR(options->nls)) {
+1 -1
fs/ocfs2/super.c
··· 1962 1962 1963 1963 sb->s_fs_info = osb; 1964 1964 sb->s_op = &ocfs2_sops; 1965 - sb->s_d_op = &ocfs2_dentry_ops; 1965 + set_default_d_op(sb, &ocfs2_dentry_ops); 1966 1966 sb->s_export_op = &ocfs2_export_ops; 1967 1967 sb->s_qcop = &dquot_quotactl_sysfile_ops; 1968 1968 sb->dq_op = &ocfs2_quota_operations;
+1 -1
fs/orangefs/super.c
··· 416 416 sb->s_xattr = orangefs_xattr_handlers; 417 417 sb->s_magic = ORANGEFS_SUPER_MAGIC; 418 418 sb->s_op = &orangefs_s_ops; 419 - sb->s_d_op = &orangefs_dentry_operations; 419 + set_default_d_op(sb, &orangefs_dentry_operations); 420 420 421 421 sb->s_blocksize = PAGE_SIZE; 422 422 sb->s_blocksize_bits = PAGE_SHIFT;
+1 -1
fs/overlayfs/super.c
··· 1322 1322 if (WARN_ON(fc->user_ns != current_user_ns())) 1323 1323 goto out_err; 1324 1324 1325 - sb->s_d_op = &ovl_dentry_operations; 1325 + set_default_d_op(sb, &ovl_dentry_operations); 1326 1326 1327 1327 err = -ENOMEM; 1328 1328 if (!ofs->creator_cred)
+2 -2
fs/smb/client/cifsfs.c
··· 260 260 } 261 261 262 262 if (tcon->nocase) 263 - sb->s_d_op = &cifs_ci_dentry_ops; 263 + set_default_d_op(sb, &cifs_ci_dentry_ops); 264 264 else 265 - sb->s_d_op = &cifs_dentry_ops; 265 + set_default_d_op(sb, &cifs_dentry_ops); 266 266 267 267 sb->s_root = d_make_root(inode); 268 268 if (!sb->s_root) {
+1 -1
fs/tracefs/inode.c
··· 480 480 return err; 481 481 482 482 sb->s_op = &tracefs_super_operations; 483 - sb->s_d_op = &tracefs_dentry_operations; 483 + set_default_d_op(sb, &tracefs_dentry_operations); 484 484 485 485 return 0; 486 486 }
+1 -1
fs/vboxsf/super.c
··· 189 189 sb->s_blocksize = 1024; 190 190 sb->s_maxbytes = MAX_LFS_FILESIZE; 191 191 sb->s_op = &vboxsf_super_ops; 192 - sb->s_d_op = &vboxsf_dentry_ops; 192 + set_default_d_op(sb, &vboxsf_dentry_ops); 193 193 194 194 iroot = iget_locked(sb, 0); 195 195 if (!iroot) {
+2
include/linux/dcache.h
··· 607 607 return hlist_entry_safe(dentry->d_sib.next, struct dentry, d_sib); 608 608 } 609 609 610 + void set_default_d_op(struct super_block *, const struct dentry_operations *); 611 + 610 612 #endif /* __LINUX_DCACHE_H */
+1 -1
include/linux/fs.h
··· 1413 1413 */ 1414 1414 const char *s_subtype; 1415 1415 1416 - const struct dentry_operations *s_d_op; /* default d_op for dentries */ 1416 + const struct dentry_operations *__s_d_op; /* default d_op for dentries */ 1417 1417 1418 1418 struct shrinker *s_shrink; /* per-sb shrinker handle */ 1419 1419
+1 -1
mm/shmem.c
··· 5028 5028 5029 5029 if (ctx->encoding) { 5030 5030 sb->s_encoding = ctx->encoding; 5031 - sb->s_d_op = &shmem_ci_dentry_ops; 5031 + set_default_d_op(sb, &shmem_ci_dentry_ops); 5032 5032 if (ctx->strict_encoding) 5033 5033 sb->s_encoding_flags = SB_ENC_STRICT_MODE_FL; 5034 5034 }
+1 -1
net/sunrpc/rpc_pipe.c
··· 1363 1363 sb->s_blocksize_bits = PAGE_SHIFT; 1364 1364 sb->s_magic = RPCAUTH_GSSMAGIC; 1365 1365 sb->s_op = &s_ops; 1366 - sb->s_d_op = &simple_dentry_operations; 1366 + set_default_d_op(sb, &simple_dentry_operations); 1367 1367 sb->s_time_gran = 1; 1368 1368 1369 1369 inode = rpc_get_inode(sb, S_IFDIR | 0555);