* application reading/writing this device to return until
* the buffers are done being used.
*/
- if (op->downcall.type == ORANGEFS_VFS_OP_FILE_IO) {
- long n = wait_for_completion_interruptible_timeout(&op->done,
- op_timeout_secs * HZ);
- if (unlikely(n < 0)) {
- gossip_debug(GOSSIP_DEV_DEBUG,
- "%s: signal on I/O wait, aborting\n",
- __func__);
- } else if (unlikely(n == 0)) {
- gossip_debug(GOSSIP_DEV_DEBUG,
- "%s: timed out.\n",
- __func__);
- }
- }
out:
if (unlikely(op_is_cancel(op)))
put_cancel(op);
if (orangefs_cancel_op_in_progress(new_op))
return ret;
- goto done_copying;
+ goto out;
}
/*
iter,
new_op->downcall.resp.io.amt_complete);
if (ret < 0)
- goto done_copying;
+ goto out;
}
gossip_debug(GOSSIP_FILE_DEBUG,
"%s(%pU): Amount written as returned by the sys-io call:%d\n",
ret = new_op->downcall.resp.io.amt_complete;
-done_copying:
/*
* tell the device file owner waiting on I/O that this read has
* completed and it can return now.
*/
- complete(&new_op->done);
out:
if (buffer_index >= 0) {
atomic_set(&new_op->ref_count, 1);
- init_completion(&new_op->done);
-
new_op->upcall.type = ORANGEFS_VFS_OP_INVALID;
new_op->downcall.type = ORANGEFS_VFS_OP_INVALID;
new_op->downcall.status = -1;
struct completion waitq;
spinlock_t lock;
- struct completion done;
-
atomic_t ref_count;
/* VFS aio fields */