On Fri, 2 Feb 2024 at 11:30, David Howells <dhowells@xxxxxxxxxx> wrote: > > Miklos Szeredi <miklos@xxxxxxxxxx> wrote: > > > > We have various locks, mutexes, etc., that are taken on entry to > > > filesystem code, for example, and a bunch of them are taken interruptibly > > > or killably (or ought to be) - but filesystem code might be called into > > > from uninterruptible code, such as the memory allocator, fscache, etc.. > > > > Are you suggesting to make lots more filesystem/vfs/mm sleeps > > killable? That would present problems with being called from certain > > contexts. > > No, it wouldn't. What I'm suggesting is something like: > > overlayfs_mkdir(inode) > { > inode_lock(inode); <--- This could be interruptible Just making inode_lock() interruptible would break everything. So I assume this is not what you meant, but that we add error handling to each and every inode_lock() call? > ... > begin_task_uninterruptible(); Yes, I understand that this is your suggestion. For overlayfs it doesn't really make sense, but for network fs and fuse I guess it could be interesting. I would have thought that making all fs related sleeping locks interruptible is not something that would be worth the effort, but maybe you have a very good use case. Thanks, Miklos