Loading drivers/scsi/scsi_lib.c +13 −30 Original line number Diff line number Diff line Loading @@ -672,33 +672,6 @@ void scsi_release_buffers(struct scsi_cmnd *cmd) } EXPORT_SYMBOL(scsi_release_buffers); /* * Bidi commands Must be complete as a whole, both sides at once. If * part of the bytes were written and lld returned scsi_in()->resid * and/or scsi_out()->resid this information will be left in * req->resid_len and req->next_rq->resid_len. The upper-layer driver * can decide what to do with this information. */ static void scsi_end_bidi_request(struct scsi_cmnd *cmd) { struct request *req = cmd->request; req->resid_len = scsi_out(cmd)->resid; req->next_rq->resid_len = scsi_in(cmd)->resid; /* The req and req->next_rq have not been completed */ BUG_ON(blk_end_bidi_request(req, 0, blk_rq_bytes(req), blk_rq_bytes(req->next_rq))); scsi_release_buffers(cmd); /* * This will goose the queue request function at the end, so we don't * need to worry about launching another command. */ scsi_next_command(cmd); } /* * Function: scsi_io_completion() * Loading Loading @@ -772,12 +745,22 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) if (!sense_deferred) error = -EIO; } req->resid_len = scsi_get_resid(cmd); if (scsi_bidi_cmnd(cmd)) { /* will also release_buffers */ scsi_end_bidi_request(cmd); /* * Bidi commands Must be complete as a whole, * both sides at once. */ req->next_rq->resid_len = scsi_in(cmd)->resid; blk_end_request_all(req, 0); scsi_release_buffers(cmd); scsi_next_command(cmd); return; } req->resid_len = scsi_get_resid(cmd); } BUG_ON(blk_bidi_rq(req)); /* bidi not support for !blk_pc_request yet */ Loading Loading
drivers/scsi/scsi_lib.c +13 −30 Original line number Diff line number Diff line Loading @@ -672,33 +672,6 @@ void scsi_release_buffers(struct scsi_cmnd *cmd) } EXPORT_SYMBOL(scsi_release_buffers); /* * Bidi commands Must be complete as a whole, both sides at once. If * part of the bytes were written and lld returned scsi_in()->resid * and/or scsi_out()->resid this information will be left in * req->resid_len and req->next_rq->resid_len. The upper-layer driver * can decide what to do with this information. */ static void scsi_end_bidi_request(struct scsi_cmnd *cmd) { struct request *req = cmd->request; req->resid_len = scsi_out(cmd)->resid; req->next_rq->resid_len = scsi_in(cmd)->resid; /* The req and req->next_rq have not been completed */ BUG_ON(blk_end_bidi_request(req, 0, blk_rq_bytes(req), blk_rq_bytes(req->next_rq))); scsi_release_buffers(cmd); /* * This will goose the queue request function at the end, so we don't * need to worry about launching another command. */ scsi_next_command(cmd); } /* * Function: scsi_io_completion() * Loading Loading @@ -772,12 +745,22 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) if (!sense_deferred) error = -EIO; } req->resid_len = scsi_get_resid(cmd); if (scsi_bidi_cmnd(cmd)) { /* will also release_buffers */ scsi_end_bidi_request(cmd); /* * Bidi commands Must be complete as a whole, * both sides at once. */ req->next_rq->resid_len = scsi_in(cmd)->resid; blk_end_request_all(req, 0); scsi_release_buffers(cmd); scsi_next_command(cmd); return; } req->resid_len = scsi_get_resid(cmd); } BUG_ON(blk_bidi_rq(req)); /* bidi not support for !blk_pc_request yet */ Loading