[linux-cifs-client] [PATCH 0/4] cifs: alternate approach to fixing oplock queue races

Jeff Layton jlayton at redhat.com
Tue Sep 8 08:12:55 MDT 2009


This patchset is an alternate approach to fixing the oplock queue
problems. Rather than tracking oplocks with separate structures, this
patchset adds some fields to cifsFileInfo.

When an oplock break comes in, is_valid_oplock_break takes an extra
reference to the cifsFileInfo and queues the oplock break job to the
events workqueue.

This works around the main drawback of the old set, which was that an
oplock break could essentially be ignored if the allocation failed.

This set represents a pretty substantial code reduction since the
dedicated oplock thread is no longer needed with it.

Jeff Layton (4):
  cifs: remove cifsInodeInfo.oplockPending flag
  cifs: take read lock on GlobalSMBSes_lock in is_valid_oplock_break
  cifs: have cifsFileInfo hold an extra inode reference
  cifs: turn oplock breaks into a workqueue job

 fs/cifs/cifsfs.c    |   91 ---------------------------------------------------
 fs/cifs/cifsglob.h  |   15 +++-----
 fs/cifs/cifsproto.h |    5 +--
 fs/cifs/cifssmb.c   |    1 +
 fs/cifs/connect.c   |    1 -
 fs/cifs/dir.c       |    4 ++-
 fs/cifs/file.c      |   52 +++++++++++++++++++++++++++--
 fs/cifs/misc.c      |   27 +++++++++------
 fs/cifs/transport.c |   50 ----------------------------
 9 files changed, 76 insertions(+), 170 deletions(-)



More information about the linux-cifs-client mailing list