On (08/02/19 22:15), Sergey Senozhatsky wrote: [..]
Looking around, it looks like we always need to drop type after mounting. Should the put_filesystem(type); be here instead?
Anyway, nice catch.
Sigh. put_filesystem() is part of fs internals. I'd be tempted to add
Good catch!
So we can switch to vfs_kern_mount(), I guess, but pass different options, depending on has_transparent_hugepage().
Hmm. This doesn't look exactly right. It appears that vfs_kern_mount() has a slightly different purpose. It's for drivers which register their own fstype and fs_context/sb callbacks. A typical usage would be
static struct file_system_type nfsd_fs_type = { .owner→ → = THIS_MODULE, .name→ → = "nfsd", .init_fs_context = nfsd_init_fs_context, .kill_sb→ = nfsd_umount, }; MODULE_ALIAS_FS("nfsd");
vfs_kern_mount(&nfsd_fs_type, SB_KERNMOUNT, "nfsd", NULL);
i915 is a different beast, it just wants to mount fs and reconfigure it, it doesn't want to be an fs. So it seems that current kern_mount() is actually right.
Maybe we need to export put_filesystem() instead.
-ss