在开始时合并回Linux 6.8合并窗口是VFS挂载API更新,它引入了两个新的系统调用:statmount()和listmount(),用于读取有关文件系统挂载的更多详细信息。
新的statmount()和listmount()系统调用源于围绕可靠地检索挂载信息以及引入新的64位挂载ID的持续讨论
微软的Linux工程师克里斯蒂安·布劳纳解释了新的系统调用:
Statmount()模仿了statx()的语义,并公开了一组标志,用户空间可以在mnt_id_req中引发这些标志来请求要检索的特定信息。Statmount()调用返回一个结构statmount,其中填充了有关所请求的挂载的信息。支持的请求通过在struct statmount的@MASK参数中提升在struct mnt_id_req中传递的请求标志来指示。目前,我们确实支持:
* STATMOUNT_SB_BASIC:
基本文件系统信息。*STATMOUNT_MNT_BASIC
装载信息(装载ID、父装载ID、装载属性等)。*STATMOUNT_PROPROCATE_FROM
从当前命名空间中装载的内容进行传播。* STATMOUNT_MNT_ROOT
装载的根目录的路径(例如mount--绑定/bla/mnt返回/bla)。*STATMOUNT_MNT_POINT
挂载点的路径(例如,mount--绑定/bla/mnt返回/mnt)。* STATMOUNT_FS_TYPE
由于子装载,文件系统类型的名称作为幻数是不够的。
..。
与statmount()一样,通过mnt_id_req为listmount()提供了一个64位的挂载id。它需要一个缓冲区和一个大小来返回请求装载的子装载的64位ID数组。因此,用户空间可以选择分批检索装载的子装载,或者迭代通过子装载。对于大多数用例,只需为几个子装载留出空间就足够了。但对于较大的装载表,使用迭代器确实很有帮助。
那些对Linux6.8中引入的新的statmount和listmount系统调用感兴趣的人可以通过这一拉力.