]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
convert hugetlbfs
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 26 Feb 2024 06:40:22 +0000 (01:40 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 16 Nov 2025 06:35:02 +0000 (01:35 -0500)
Very much ramfs-like; dget()+d_instantiate() -> d_make_persistent()
(in two places) is all it takes.

NB: might make sense to turn its ->put_super() into ->kill_sb().

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/hugetlbfs/inode.c

index f42548ee9083c6bf4b20f9a75e069e5f69fdfc3a..83273677183d4b3b6dd141e3b03284511bf3199d 100644 (file)
@@ -975,8 +975,7 @@ static int hugetlbfs_mknod(struct mnt_idmap *idmap, struct inode *dir,
        if (!inode)
                return -ENOSPC;
        inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
-       d_instantiate(dentry, inode);
-       dget(dentry);/* Extra count - pin the dentry in core */
+       d_make_persistent(dentry, inode);
        return 0;
 }
 
@@ -1023,10 +1022,9 @@ static int hugetlbfs_symlink(struct mnt_idmap *idmap,
        if (inode) {
                int l = strlen(symname)+1;
                error = page_symlink(inode, symname, l);
-               if (!error) {
-                       d_instantiate(dentry, inode);
-                       dget(dentry);
-               } else
+               if (!error)
+                       d_make_persistent(dentry, inode);
+               else
                        iput(inode);
        }
        inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
@@ -1483,7 +1481,7 @@ static struct file_system_type hugetlbfs_fs_type = {
        .name                   = "hugetlbfs",
        .init_fs_context        = hugetlbfs_init_fs_context,
        .parameters             = hugetlb_fs_parameters,
-       .kill_sb                = kill_litter_super,
+       .kill_sb                = kill_anon_super,
        .fs_flags               = FS_ALLOW_IDMAP,
 };