OSDN Git Service

orangefs: have ..._clean_interrupted_...() wait for copy to/from daemon
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 18 Feb 2016 23:59:44 +0000 (18:59 -0500)
committerMike Marshall <hubcap@omnibond.com>
Fri, 19 Feb 2016 18:45:56 +0000 (13:45 -0500)
commit05a50a5be897004b6c1399645256bcf2e768b4ef
tree084ec3b056a0eca7773dcb58b90177677f487b50
parent5964c1b83912dd5052f66ceb50634df958129981
orangefs: have ..._clean_interrupted_...() wait for copy to/from daemon

* turn all those list_del(&op->list) into list_del_init()
* don't pick ops that are already given up in control device
  ->read()/->write_iter().
* have orangefs_clean_interrupted_operation() notice if op is currently
  being copied to/from daemon (by said ->read()/->write_iter()) and
  wait for that to finish.
* when we are done copying to/from daemon and find that it had been
  given up while we were doing that, wake the waiting ..._clean_interrupted_...

As the result, we are guaranteed that orangefs_clean_interrupted_operation(op)
doesn't return until nobody else can see op.  Moreover, we don't need to play
with op refcounts anymore.

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/orangefs-kernel.h
fs/orangefs/waitqueue.c