From: Daniel Stodden Date: Thu, 8 Apr 2010 06:43:45 +0000 (-0700) Subject: CA-39974: Revert -r486:94bcdedc9a6d X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=e2c8de3e595f82de0d06453e84d2edd55cb1b2f6;p=people%2Fdstodden%2Fblktap.git CA-39974: Revert -r486:94bcdedc9a6d Known to risk queue deadlocks without 487:94a6007d887b. --- diff --git a/drivers/tapdisk-vbd.c b/drivers/tapdisk-vbd.c index b95264d..e7b52dc 100644 --- a/drivers/tapdisk-vbd.c +++ b/drivers/tapdisk-vbd.c @@ -1334,40 +1334,17 @@ tapdisk_vbd_check_queue(td_vbd_t *vbd) return 0; } -static int -tapdisk_vbd_request_failed_transient(td_vbd_t *vbd, td_vbd_request_t *vreq) -{ - if (vreq->status != BLKIF_RSP_ERROR) - return 0; - - if (td_flag_test(vbd->state, TD_VBD_DEAD) || - td_flag_test(vbd->state, TD_VBD_SHUTDOWN_REQUESTED)) - return 0; - - switch (abs(vreq->error)) { - case ESTALE: - case ENOSPC: - return 0; - } - - if (tapdisk_vbd_request_timeout(vreq)) - return 0; - - return 1; -} - static void tapdisk_vbd_complete_vbd_request(td_vbd_t *vbd, td_vbd_request_t *vreq) { if (!vreq->submitting && !vreq->secs_pending) { - struct list_head *dest; - - if (tapdisk_vbd_request_failed_transient(vbd, vreq)) - dest = &vbd->failed_requests; + if (vreq->status == BLKIF_RSP_ERROR && + !tapdisk_vbd_request_timeout(vreq) && + !td_flag_test(vbd->state, TD_VBD_DEAD) && + !td_flag_test(vbd->state, TD_VBD_SHUTDOWN_REQUESTED)) + tapdisk_vbd_move_request(vreq, &vbd->failed_requests); else - dest = &vbd->completed_requests; - - tapdisk_vbd_move_request(vreq, dest); + tapdisk_vbd_move_request(vreq, &vbd->completed_requests); } }