[PATCH 0/4] cifs: alternate approach to fixing oplock queue races
Jeff Layton <[email protected]>
| Newsgroups | gmane.linux.file-systems.cifs |
|---|---|
| Message-ID | <[email protected]> |
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(-)