/etc/mtab vs. /proc/mounts

David M. Lloyd david.lloyd at redhat.com
Mon Jan 31 12:20:14 PST 2011


On 01/31/2011 02:03 PM, Alan Bateman wrote:
>
> I think I need help to (re)understand the difference between /etc/mtab
> and /proc/mounts on Linux.
>
> On Linux, our getFileStores() is implemented to essentially enumerate
> /etc/mtab. That should give a similar list to what df(1) prints although
> the filtering may be slightly different. On the other hand the
> getFileStore method to get the FileStore for where a file is located
> uses /proc/mounts to find the mount point (folks on this list may recall
> the reasons why we switched to using /proc [1]). Using both leads to at
> least one reported anomaly where it has been observed that getFileStore
> returns a FileStore representing the root file system with both a name
> and type of rootfs but df -T (and getFileStores) report something
> different (/dev/sda1 and ext4 on one system I tried). I'm trying to
> figure if this code should be changed and what the right answer is for
> this case. Any suggestions?

I think you'll find that /proc/mounts returns *both* the rootfs and the 
real filesystem mounted atop it (in other words, the mount point can be 
non-unique).

The rootfs filesystem type is used as an early bootstrap phase in many 
distributions (it replaces the older initramfs IIRC).

That said - /etc/mtab will give you the software's idea of what the 
right mounts are.  /proc/mounts will give you *everything* that is 
currently mounted, even if multiple filesystems are mounted in the same 
spot.

Using /proc/mounts to get the filesystem is probably *not* the right 
approach, at least not by itself, because of the non-uniqueness of 
mounts, however it is probably better than /etc/mtab which may have 
inaccurate information.  You *might* be able to rely on /proc/mounts 
ordering though, I'd have to look that up to be sure.  If that is the 
case then you can use a longest-match-then-latest-match kind of 
algorithm and get an accurate result.

Either way I'd recommend not using /etc/mtab as the information source 
for either method.
-- 
- DML


More information about the nio-dev mailing list