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)
commited42fe059389daa35a2aa10ec832e9f8d0a9e59e
tree778e6ebb516e7a6301305b077e31ee40d9fe96c2
parentfee25ce12504ff071254fd213055c3f1d3004622
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