On Mon, Aug 17, 2020 at 4:33 AM Steven Whitehouse <swhiteho@xxxxxxxxxx> wrote: > > That said, the overall aim here is to solve the problem and if there are > better solutions available then I'm sure that everyone is very open to > those. I agree very much that monitoring at kHz frequencies is not > useful, but at the same time, there are cases which can generate large > amounts of mount changes in a very short time period. So the thing is, I absolutely believe in the kernel _notifying_ about changes so that people don't need to poll. It's why I did merge the notification queues, although I wanted to make sure that those worked. > You recently requested some details of real users for the notifications, > and (I assumed) by extension fsinfo too. No, fsinfo wasn't on the table there. To me, notifications are a completely separate issue, because you *can* get the information from existing sources (ie things like /proc/mounts etc), and notification seemed to be the much more fundamental issue. If you poll for changes, parsing something like /proc/mounts is obviously very heavy indeed. I don't find that particularly controversial. Plus the notification queues had other uses, even if it wasn't clear how many or who would use them. But honestly, the actual fsinfo thing seems (a) overdesigned and (b) broken. I've now had two different people say how they want to use it to figure out whether a filesystem supports certain things that aren't even per-filesystem things in the first place. And this feature is clearly controversial, with actual discussion about it. And I find the whole thing confusing and over-engineered. If this was a better statfs(), that would be one thing. But it is designed to be this monstoer thing that does many different things, and I find it distasteful. Yes, you can query "extended statfs" kind of data with it and get the per-file attributes. I find it really annoying how the vfs layer calls to the filesystems, that then call back to the vfs layer to fill things in, but I guess we have that nasty pattern from stat() already. I'd rather have the VFS layer just fill in all the default values and the stuff it already knows about, and then maybe have the filesystem callback fill in the ones the vfs *doesn't* know about, but whatever. But then you can *also* query odd things like mounts that aren't even visible, and the topology, and completely random error state. So it has this very complex "random structures of random things" implementation. It's a huge sign of over-design and "I don't know what the hell I want to expose, so I'll make this generic thing that can expose anything, and then I start adding random fields". Some things are per-file, some things are per-mount, and some things are per-namespace and cross mount boundaries. And honestly, the "random binary interfaces" just turns me off a lot. A simple and straightforward struct? Sure. But this random "whatever goes" thing? No. Linus