[linux-cifs-client] [PATCH 0/4] cifs: fix several bugs in oplock queue handling (RFC)

Jeff Layton jlayton at redhat.com
Mon Aug 17 06:16:04 MDT 2009


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(-)



More information about the linux-cifs-client mailing list