[PATCH 0/4] cifs: fix several bugs in oplock queue handling (RFC)
Jeff Layton <[email protected]>
| Newsgroups | gmane.linux.file-systems.cifs |
|---|---|
| Message-ID | <[email protected]> |
We recently had a customer report panics in the oplock thread: https://bugzilla.redhat.com/show_bug.cgi?id=516742 It looks like what happened is that an oplock break raced with a umount, and tcon got torn down before the oplock release call happened. They also reported another panic within DeleteTconOplockQEntries. That function is removing entries from the list but isn't using list_for_each_entry_safe. This set is a draft patchset that tries to fix these problems. I'd appreciate prompt feedback on them. Does this look like a sane approach to fixing these problems? Jeff Layton (4): cifs: protect GlobalOplock_Q with its own mutex cifs: iterate over cifs_oplock_list using list_for_each_entry_safe cifs: take reference to inode for oplock breaks cifs: hold cifs_oplock_mutex while doing oplock release call fs/cifs/cifsfs.c | 98 +++++++++++++++++++++++++++++---------------------- fs/cifs/cifsglob.h | 6 +++- fs/cifs/cifsproto.h | 1 - fs/cifs/misc.c | 9 +++-- fs/cifs/transport.c | 37 ++++++------------- 5 files changed, 78 insertions(+), 73 deletions(-)