Bug 14351 - The filesystems cifs & smb3 do not appear as available filesystems in /proc/filesystems
Summary: The filesystems cifs & smb3 do not appear as available filesystems in /proc/f...
Status: RESOLVED INVALID
Alias: None
Product: CifsVFS
Classification: Unclassified
Component: kernel fs (show other bugs)
Version: 3.x
Hardware: All Linux
: P5 minor
Target Milestone: ---
Assignee: Steve French
QA Contact:
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-04-20 13:57 UTC by Daniel Leicht
Modified: 2020-04-21 16:54 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel Leicht 2020-04-20 13:57:25 UTC
Hi all,

I found a small bug and I believe this is the right place to post it to, please correct me if I'm wrong.

This bug was found on Debian 10, but it might be relevant for other distros.

The linux kernel shows the supported filesystems of the current system in /proc/filesystems, but after installing the debian package cifs-utils from the stable repository, the cifs and smb3 filesystems are still not registered there.

If I try to mount a share by specifying "-t cifs" it works, and it is even added /proc/filesystems after that. But I would expect it to be there before it is being used, since it is supported and working.

I'm just guessing that the bug is somehow related to how it is being installed?

Versions, and how to reproduce:

root@debian:~# uname -a
Linux debian 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/Linux
root@debian:~# samba --version
Version 4.9.5-Debian


root@debian:~# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   ramfs
nodev   bdev
nodev   proc
nodev   cpuset
nodev   cgroup
nodev   cgroup2
nodev   tmpfs
nodev   devtmpfs
nodev   debugfs
nodev   tracefs
nodev   securityfs
nodev   sockfs
nodev   dax
nodev   bpf
nodev   pipefs
nodev   hugetlbfs
nodev   devpts
nodev   mqueue
nodev   pstore
        ext3
        ext2
        ext4
nodev   autofs


root@debian:~# mount -t cifs -o username=guest,password= //10.1.1.1/Share /root/smbshare


root@debian:~# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   ramfs
nodev   bdev
nodev   proc
nodev   cpuset
nodev   cgroup
nodev   cgroup2
nodev   tmpfs
nodev   devtmpfs
nodev   debugfs
nodev   tracefs
nodev   securityfs
nodev   sockfs
nodev   dax
nodev   bpf
nodev   pipefs
nodev   hugetlbfs
nodev   devpts
nodev   mqueue
nodev   pstore
        ext3
        ext2
        ext4
nodev   autofs
nodev   cifs
nodev   smb3


Thank you!
Comment 1 Steve French 2020-04-21 06:37:51 UTC
I don't believe this is a bug but if you see other filesystems behaving differently let me know.

When you do "cat /proc/filesystems | grep fs" you will see file systems whose modules are loaded.   For smb3 or cifs mounts this driver is "cifs.ko" - so if you do "modprobe cifs" and then "cat /proc/filesystems | grep cifs" you will see cifs is loaded.   Similarly if you do "modprobe nfs" and then "cat /proc/filesystems | grep nfs" you will see that nfs is loaded.   If you do rmmod cifs or rmmod nfs and retry you will see that the module no longer apears.

But ... looking at this I do see a possible bug.   For nfs they show "nfs" and "nfs4" to indicate support for older dialects and for cifs we should show support for "smb3" not just "cifs" so "modprobe cifs" should display both "smb3" and "cifs"
Comment 2 Steve French 2020-04-21 16:41:39 UTC
I was wrong - "modprobe cifs" (or modprobe smb3) does what we want - and loads both "cifs" and "smb3"

# cat /proc/filesystems | grep smb3
nodev	smb3
Comment 3 Steve French 2020-04-21 16:42:39 UTC
I was wrong - "modprobe cifs" (or modprobe smb3) does what we want - and loads both "cifs" and "smb3"

# cat /proc/filesystems | grep smb3
nodev	smb3

# cat /proc/filesystems | grep cifs
nodev	cifs


So looks correct
Comment 4 Steve French 2020-04-21 16:54:00 UTC
Entries in /proc/filesystems don't show up until the module is loaded (loaded explicitly via modprobe, or implicitly via mount), in this case "modprobe cifs" or "modprobe smb3" (or mount -t cifs //server/share ...   or mount -t smb3 //server/share ...)

This behaves the same as other kernel file system modules