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