2013-04-28 60 views
2

我写notifyfs(对于Linux现在只),它是:如何确定纯系统文件系统?

  • 一个fsevent通知,这应该与保险丝和网络文件系统的工作,像fuse.sshfs,CIFS和NFS。

  • 项的GUI客户端可以用它来建立自己的意见的缓存

必须有notifyfs确定文件系统的方式,如报告在/ proc /自/ mountinfo,是系统相关文件系统或“真实”文件系统。例如cpuset,cgroup,devtmpfs和sysfs就是我所说的系统文件系统,而ext2,ext3和tmpfs,vfat和nfs,cifs是“真正的”文件系统。

系统文件系统和真实文件系统的区别在于真正的文件系统可以通过inotify进行监视,而系统文件系统则不是。将一个inotify手表放在/ proc的“文件”中,你会发现这是行不通的。

查看/ proc/filesystems时,唯一的额外信息是“nodev”,它表示mountsource是一个blockdevice或不是。当它是一个块设备时,它不是一个系统文件系统。但是当它不是一个块设备(并且指定了nodev)时,它并不总是一个系统文件系统,例如网络文件系统cifs和nfs,或者tmpfs和ramfs。

有没有一种方法可以确定“nodev”文件系统的行为类似真实文件系统,例如通过inotify可以监视?

由于提前,

燕姿

+0

'df'(磁盘空闲)只显示您称为“真实”的文件系统吗?如果是的话,你可以看看它的源代码。 – rantanplan 2013-04-28 12:02:58

+0

这是一个很好的。我会查一下。 – user1388973 2013-04-28 15:11:07

+0

我发现:fstat调用(获取statvfs)是在挂载点上完成的。如果nr块(或inode)被报告大于零,那么与处理“真实”fs,否则是系统fs。 – user1388973 2013-04-28 15:53:48

回答

1

不DF(可用磁盘)只显示你所说的 “真正的” 文件系统?如果是的话,你可以看看它的源代码。