if ORANGEFS_VFS_OP_FILE_IO request had been given up, don't bother waiting

... we are not going to get woken up anyway, so it's just going to time out
and whine.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Mike Marshall <hubcap@omnibond.com>
This commit is contained in:
Al Viro
2016-01-23 13:27:50 -05:00
committed by Mike Marshall
parent 727cbfea62
commit 4f55e39732

View File

@@ -418,7 +418,10 @@ wakeup:
* that this op is done * that this op is done
*/ */
spin_lock(&op->lock); spin_lock(&op->lock);
if (!op_state_given_up(op)) if (unlikely(op_state_given_up(op))) {
spin_unlock(&op->lock);
goto out;
}
set_op_state_serviced(op); set_op_state_serviced(op);
spin_unlock(&op->lock); spin_unlock(&op->lock);
@@ -433,22 +436,19 @@ wakeup:
break; break;
} }
spin_unlock(&op->lock); spin_unlock(&op->lock);
if (unlikely(signal_pending(current))) {
gossip_debug(GOSSIP_DEV_DEBUG,
"%s: signal on I/O wait, aborting\n",
__func__);
break;
}
if (!signal_pending(current)) { if (!schedule_timeout(op_timeout_secs * HZ)) {
int timeout = op_timeout_secs * HZ;
if (!schedule_timeout(timeout)) {
gossip_debug(GOSSIP_DEV_DEBUG, gossip_debug(GOSSIP_DEV_DEBUG,
"%s: timed out.\n", "%s: timed out.\n",
__func__); __func__);
break; break;
} }
continue;
}
gossip_debug(GOSSIP_DEV_DEBUG,
"%s: signal on I/O wait, aborting\n",
__func__);
break;
} }
spin_lock(&op->lock); spin_lock(&op->lock);