K. Y. Srinivasan
2011-Apr-06 18:24 UTC
[PATCH 0/2] Staging: hv: Fixup Phase II storage driver cleanup
This fixes a couple of bugs that was introduced in the patch-set titled: Staging: hv: Cleanup storage drivers phase II. A corrected version of this patch-set was sent out earlier, however the earlier (buggy) version of this patch-set was already applied. This patch set fixes this problem.. Regards, K. Y
K. Y. Srinivasan
2011-Apr-06 18:25 UTC
[PATCH 1/2] Staging: hv: Properly capture the error state
Properly capture the error state after the completion of I/O. This fixes a bug that was introduced in the patch-set titled: Staging: hv: Cleanup-storage-drivers-phase-II. A corrected version of this patch-set was sent out earlier, however the earlier (buggy) version of this patch-set was already applied. This patch fixes the problem. Signed-off-by: K. Y. Srinivasan <kys at microsoft.com> Signed-off-by: Hank Janssen <hjanssen at microsoft.com> --- drivers/staging/hv/storvsc.c | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/staging/hv/storvsc.c b/drivers/staging/hv/storvsc.c index 55865fa..d7ce393 100644 --- a/drivers/staging/hv/storvsc.c +++ b/drivers/staging/hv/storvsc.c @@ -279,6 +279,7 @@ static void stor_vsc_on_io_completion(struct hv_device *device, struct hv_storvsc_request *request) { struct storvsc_device *stor_device; + struct vstor_packet *stor_pkt; stor_device = must_get_stor_device(device); if (!stor_device) { @@ -287,19 +288,24 @@ static void stor_vsc_on_io_completion(struct hv_device *device, return; } - DPRINT_DBG(STORVSC, "IO_COMPLETE_OPERATION - request %p " + DPRINT_DBG(STORVSC, "IO_COMPLETE_OPERATION - request %p " "completed bytes xfer %u", request, vstor_packet->vm_srb.data_transfer_length); + stor_pkt = &request->vstor_packet; /* Copy over the status...etc */ + stor_pkt->vm_srb.scsi_status = vstor_packet->vm_srb.scsi_status; + stor_pkt->vm_srb.srb_status = vstor_packet->vm_srb.srb_status; + stor_pkt->vm_srb.sense_info_length + vstor_packet->vm_srb.sense_info_length; if (vstor_packet->vm_srb.scsi_status != 0 || vstor_packet->vm_srb.srb_status != 1) { DPRINT_WARN(STORVSC, "cmd 0x%x scsi status 0x%x srb status 0x%x\n", - vstor_packet->vm_srb.cdb[0], + stor_pkt->vm_srb.cdb[0], vstor_packet->vm_srb.scsi_status, vstor_packet->vm_srb.srb_status); } @@ -319,6 +325,8 @@ static void stor_vsc_on_io_completion(struct hv_device *device, } } + stor_pkt->vm_srb.data_transfer_length + vstor_packet->vm_srb.data_transfer_length; request->on_io_completion(request); @@ -535,6 +543,7 @@ int stor_vsc_on_io_request(struct hv_device *device, request->device = device; + vstor_packet->flags |= REQUEST_COMPLETION_FLAG; vstor_packet->vm_srb.length = sizeof(struct vmscsi_request); -- 1.7.4.1
K. Y. Srinivasan
2011-Apr-06 18:25 UTC
[PATCH 2/2] Staging: hv: Zero out the request structure on allocation
As part of the cleanup of the I/O request structure, allocate them zeroed out. This fixes a bug that was introduced in the patch-set titled: Staging: hv: Cleanup-storage-drivers-phase-II. A corrected version of this patch-set was sent out earlier, however the earlier (buggy) version of this patch-set was already applied. This patch fixes the problem. Signed-off-by: K. Y. Srinivasan <kys at microsoft.com> Signed-off-by: Hank Janssen <hjanssen at microsoft.com> --- drivers/staging/hv/storvsc_drv.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/staging/hv/storvsc_drv.c b/drivers/staging/hv/storvsc_drv.c index 6128ffd..ae61735 100644 --- a/drivers/staging/hv/storvsc_drv.c +++ b/drivers/staging/hv/storvsc_drv.c @@ -738,7 +738,7 @@ static int storvsc_queuecommand_lck(struct scsi_cmnd *scmnd, request_size = sizeof(struct storvsc_cmd_request); - cmd_request = kmem_cache_alloc(host_device_ctx->request_pool, + cmd_request = kmem_cache_zalloc(host_device_ctx->request_pool, GFP_ATOMIC); if (!cmd_request) { DPRINT_ERR(STORVSC_DRV, "scmnd (%p) - unable to allocate " -- 1.7.4.1