]> git.baikalelectronics.ru Git - kernel.git/commit
orangefs: hopefully saner op refcounting and locking
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 23 Jan 2016 00:47:47 +0000 (19:47 -0500)
committerMike Marshall <hubcap@omnibond.com>
Sat, 23 Jan 2016 18:03:12 +0000 (13:03 -0500)
commit30a0d02c6d77573f71df89c6fd745bd60268bb9d
tree778e6ebb516e7a6301305b077e31ee40d9fe96c2
parent04a9169e06cbf47c5b58c96a30cb23401773bcc2
orangefs: hopefully saner op refcounting and locking

* create with refcount 1
* make op_release() decrement and free if zero (i.e. old put_op()
  has become that).
* mark when submitter has given up waiting; from that point nobody
  else can move between the lists, change state, etc.
* have daemon read/write_iter grab a reference when picking op
  and *always* give it up in the end
* don't put into hash until we know it's been successfully passed to
  daemon

* move op->lock _lower_ than htab_in_progress_lock (and make sure
  to take it in purge_inprogress_ops())

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Mike Marshall <hubcap@omnibond.com>
fs/orangefs/devorangefs-req.c
fs/orangefs/file.c
fs/orangefs/orangefs-cache.c
fs/orangefs/orangefs-kernel.h
fs/orangefs/orangefs-mod.c
fs/orangefs/orangefs-sysfs.c
fs/orangefs/orangefs-utils.c
fs/orangefs/waitqueue.c