On Thu, Jan 7, 2021 at 11:44 PM Amir Goldstein <amir73il@xxxxxxxxx> wrote: > > Miklos, > > I was trying to address the lack of iostat report for non-blockdev > filesystems such as overlayfs and fuse. > > NFS has already addressed this with it own custom stats collection, > which is displayed in /proc/<pid>/mountstats. > > When looking at the options, I found that a generic solution is quite > simple and could serve all filesystems that opt-in to use it. > > This short patch set results in the following mountstats example report: > > device overlay mounted on /mnt with fstype overlay > times: 125 153 > rchar: 12 > wchar: 0 > syscr: 2 > syscw: 0 > > The choise to collect and report io stats by mount and not by sb is > quite arbitrary, because it was quite easy to implement and is natural > to the existing mountstats proc file. > > I used the arbirtaty flag FS_USERNS_MOUNT as an example for a way for > filesystem to opt-in to mount io stats, but it could be either an FS_ > SB_ or MNT_ flag. I do not anticipate shortage of opinions on this > matter. > > As for performance, the io accounting hooks are the existing hooks for > task io accounting. mount io stats add a dereference to mnt_pcp for > the filesystems that opt-in and one per-cpu var update. The dereference > to mnt_sb->s_type->fs_flags is temporary as we will probably want to > use an MNT_ flag, whether kernel internal or user controlled. > > What do everyone think about this? > > Al, > > did I break any subtle rules of the vfs? > That is besides dereferencing a NULL file pointer when getting EBADF in p/readv/writev... Thanks, Amir.