> On Apr 14, 2023, at 12:22, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > On Fri, Apr 14, 2023 at 03:57:34PM +0000, Trond Myklebust wrote: > >>> >>> Being able to convert into an O_PATH descriptor gives you more options than just unmounting. It should allow you to syncfs() before unmounting. It should allow you to call open_tree() so you can manipulate the filesystem that is no longer accessible by path walk (e.g. so you can bind it elsewhere or move it). >>> >> >> One more thing it might allow us to do, which I’ve been wanting for a while in NFS: allow us to flip the mount type from being “hard” to “soft” before doing the lazy unmount, so that any application that might still retry I/O after the call to umount_begin() completes will start timing out with an I/O error, and free up the resources it might otherwise hold forever. >> > > s/lazy/forced/, surely? Confused... I mean both cases. Doing a lazy umount with a hard mounted filesystem is a risk sport: if the server does become permanently borked, you can fill up your page cache with stuff that can’t be evicted. Most users don’t realise this, so they get confused when it happens (particularly since the filesystem is out-of-sight and hence out-of-mind). > > Note, BTW, that hard vs. soft is a property of fs instance; if you have > it present elsewhere in the mount tree, flipping it would affect all > such places. I don't see any good way to make it a per-mount thing, TBH… The main use case is for when the server is permanently down, so normally it shouldn’t be a problem with flipping the mode on all instances. That said, it might be nice to make it per-mountpoint at some time. We do have the ability to declare individual RPC calls to time out, so it’s doable at the RPC level. All we would really need is the ability to store a per-vfsmount flag. _________________________________ Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx