All of lore.kernel.org
 help / color / mirror / Atom feed
From: "K. Y. Srinivasan" <kys@microsoft.com>
To: gregkh@suse.de, linux-kernel@vger.kernel.org,
	devel@linuxdriverproject.org, virtualization@lists.osdl.org
Cc: Haiyang Zhang <haiyangz@microsoft.com>,
	Abhishek Kane <v-abkane@microsoft.com>
Subject: [PATCH 22/22] Staging: hv: Get rid of synch primitive in struct blkvsc_request
Date: Tue,  5 Apr 2011 07:05:06 -0700	[thread overview]
Message-ID: <1302012306-21277-22-git-send-email-kys@microsoft.com> (raw)
In-Reply-To: <1302012306-21277-1-git-send-email-kys@microsoft.com>

Get rid of synch primitive in struct blkvsc_request and instead use the
synch primitive already embedded in the struct hv_storvsc_request structure.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Abhishek Kane <v-abkane@microsoft.com>
Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
---
 drivers/staging/hv/blkvsc_drv.c |   52 +++++++++++---------------------------
 1 files changed, 15 insertions(+), 37 deletions(-)

diff --git a/drivers/staging/hv/blkvsc_drv.c b/drivers/staging/hv/blkvsc_drv.c
index 86e0506..9af5347 100644
--- a/drivers/staging/hv/blkvsc_drv.c
+++ b/drivers/staging/hv/blkvsc_drv.c
@@ -72,9 +72,6 @@ struct blkvsc_request {
 	/* The group this request is part of. Maybe null */
 	struct blkvsc_request_group *group;
 
-	wait_queue_head_t wevent;
-	int cond;
-
 	int write;
 	sector_t sector_start;
 	unsigned long sector_count;
@@ -515,7 +512,7 @@ static int blkvsc_do_flush(struct block_device_context *blkdev)
 		return -ENOMEM;
 
 	memset(blkvsc_req, 0, sizeof(struct blkvsc_request));
-	init_waitqueue_head(&blkvsc_req->wevent);
+	init_completion(&blkvsc_req->request.wait_event);
 	blkvsc_req->dev = blkdev;
 	blkvsc_req->req = NULL;
 	blkvsc_req->write = 0;
@@ -527,14 +524,9 @@ static int blkvsc_do_flush(struct block_device_context *blkdev)
 	blkvsc_req->cmnd[0] = SYNCHRONIZE_CACHE;
 	blkvsc_req->cmd_len = 10;
 
-	/*
-	 * Set this here since the completion routine may be invoked and
-	 * completed before we return
-	 */
-	blkvsc_req->cond = 0;
 	blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
 
-	wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
+	wait_for_completion_interruptible(&blkvsc_req->request.wait_event);
 
 	kmem_cache_free(blkvsc_req->dev->request_pool, blkvsc_req);
 
@@ -562,7 +554,7 @@ static int blkvsc_do_inquiry(struct block_device_context *blkdev)
 		return -ENOMEM;
 	}
 
-	init_waitqueue_head(&blkvsc_req->wevent);
+	init_completion(&blkvsc_req->request.wait_event);
 	blkvsc_req->dev = blkdev;
 	blkvsc_req->req = NULL;
 	blkvsc_req->write = 0;
@@ -578,18 +570,12 @@ static int blkvsc_do_inquiry(struct block_device_context *blkdev)
 	blkvsc_req->cmnd[4] = 64;
 	blkvsc_req->cmd_len = 6;
 
-	/*
-	 * Set this here since the completion routine may be invoked and
-	 * completed before we return
-	 */
-	blkvsc_req->cond = 0;
-
 	blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
 
-	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete - cond %d\n",
-		   blkvsc_req, blkvsc_req->cond);
+	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete\n",
+		   blkvsc_req);
 
-	wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
+	wait_for_completion_interruptible(&blkvsc_req->request.wait_event);
 
 	buf = kmap(page_buf);
 
@@ -652,7 +638,7 @@ static int blkvsc_do_read_capacity(struct block_device_context *blkdev)
 	}
 
 	vm_srb = &blkvsc_req->request.vstor_packet.vm_srb;
-	init_waitqueue_head(&blkvsc_req->wevent);
+	init_completion(&blkvsc_req->request.wait_event);
 	blkvsc_req->dev = blkdev;
 	blkvsc_req->req = NULL;
 	blkvsc_req->write = 0;
@@ -665,18 +651,12 @@ static int blkvsc_do_read_capacity(struct block_device_context *blkdev)
 	blkvsc_req->cmnd[0] = READ_CAPACITY;
 	blkvsc_req->cmd_len = 16;
 
-	/*
-	 * Set this here since the completion routine may be invoked
-	 * and completed before we return
-	 */
-	blkvsc_req->cond = 0;
-
 	blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
 
-	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete - cond %d\n",
-		   blkvsc_req, blkvsc_req->cond);
+	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete\n",
+		   blkvsc_req);
 
-	wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
+	wait_for_completion_interruptible(&blkvsc_req->request.wait_event);
 
 	/* check error */
 	if (vm_srb->scsi_status) {
@@ -732,7 +712,7 @@ static int blkvsc_do_read_capacity16(struct block_device_context *blkdev)
 		return -ENOMEM;
 	}
 
-	init_waitqueue_head(&blkvsc_req->wevent);
+	init_completion(&blkvsc_req->request.wait_event);
 	blkvsc_req->dev = blkdev;
 	blkvsc_req->req = NULL;
 	blkvsc_req->write = 0;
@@ -749,14 +729,13 @@ static int blkvsc_do_read_capacity16(struct block_device_context *blkdev)
 	 * Set this here since the completion routine may be invoked
 	 * and completed before we return
 	 */
-	blkvsc_req->cond = 0;
 
 	blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
 
-	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete - cond %d\n",
-		   blkvsc_req, blkvsc_req->cond);
+	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete\n",
+		   blkvsc_req);
 
-	wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
+	wait_for_completion_interruptible(&blkvsc_req->request.wait_event);
 
 	/* check error */
 	if (vm_srb->scsi_status) {
@@ -1161,8 +1140,7 @@ static void blkvsc_cmd_completion(struct hv_storvsc_request *request)
 					 SCSI_SENSE_BUFFERSIZE, &sense_hdr))
 			scsi_print_sense_hdr("blkvsc", &sense_hdr);
 
-	blkvsc_req->cond = 1;
-	wake_up_interruptible(&blkvsc_req->wevent);
+	complete(&blkvsc_req->request.wait_event);
 }
 
 static void blkvsc_request_completion(struct hv_storvsc_request *request)
-- 
1.7.4.1

WARNING: multiple messages have this Message-ID (diff)
From: "K. Y. Srinivasan" <kys@microsoft.com>
To: gregkh@suse.de, linux-kernel@vger.kernel.org,
	devel@linuxdriverproject.org, virtualization@lists.osdl.org
Cc: "K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Abhishek Kane <v-abkane@microsoft.com>,
	Hank Janssen <hjanssen@microsoft.com>
Subject: [PATCH 22/22] Staging: hv: Get rid of synch primitive in struct blkvsc_request
Date: Tue,  5 Apr 2011 07:05:06 -0700	[thread overview]
Message-ID: <1302012306-21277-22-git-send-email-kys@microsoft.com> (raw)
In-Reply-To: <1302012306-21277-1-git-send-email-kys@microsoft.com>

Get rid of synch primitive in struct blkvsc_request and instead use the
synch primitive already embedded in the struct hv_storvsc_request structure.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Abhishek Kane <v-abkane@microsoft.com>
Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
---
 drivers/staging/hv/blkvsc_drv.c |   52 +++++++++++---------------------------
 1 files changed, 15 insertions(+), 37 deletions(-)

diff --git a/drivers/staging/hv/blkvsc_drv.c b/drivers/staging/hv/blkvsc_drv.c
index 86e0506..9af5347 100644
--- a/drivers/staging/hv/blkvsc_drv.c
+++ b/drivers/staging/hv/blkvsc_drv.c
@@ -72,9 +72,6 @@ struct blkvsc_request {
 	/* The group this request is part of. Maybe null */
 	struct blkvsc_request_group *group;
 
-	wait_queue_head_t wevent;
-	int cond;
-
 	int write;
 	sector_t sector_start;
 	unsigned long sector_count;
@@ -515,7 +512,7 @@ static int blkvsc_do_flush(struct block_device_context *blkdev)
 		return -ENOMEM;
 
 	memset(blkvsc_req, 0, sizeof(struct blkvsc_request));
-	init_waitqueue_head(&blkvsc_req->wevent);
+	init_completion(&blkvsc_req->request.wait_event);
 	blkvsc_req->dev = blkdev;
 	blkvsc_req->req = NULL;
 	blkvsc_req->write = 0;
@@ -527,14 +524,9 @@ static int blkvsc_do_flush(struct block_device_context *blkdev)
 	blkvsc_req->cmnd[0] = SYNCHRONIZE_CACHE;
 	blkvsc_req->cmd_len = 10;
 
-	/*
-	 * Set this here since the completion routine may be invoked and
-	 * completed before we return
-	 */
-	blkvsc_req->cond = 0;
 	blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
 
-	wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
+	wait_for_completion_interruptible(&blkvsc_req->request.wait_event);
 
 	kmem_cache_free(blkvsc_req->dev->request_pool, blkvsc_req);
 
@@ -562,7 +554,7 @@ static int blkvsc_do_inquiry(struct block_device_context *blkdev)
 		return -ENOMEM;
 	}
 
-	init_waitqueue_head(&blkvsc_req->wevent);
+	init_completion(&blkvsc_req->request.wait_event);
 	blkvsc_req->dev = blkdev;
 	blkvsc_req->req = NULL;
 	blkvsc_req->write = 0;
@@ -578,18 +570,12 @@ static int blkvsc_do_inquiry(struct block_device_context *blkdev)
 	blkvsc_req->cmnd[4] = 64;
 	blkvsc_req->cmd_len = 6;
 
-	/*
-	 * Set this here since the completion routine may be invoked and
-	 * completed before we return
-	 */
-	blkvsc_req->cond = 0;
-
 	blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
 
-	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete - cond %d\n",
-		   blkvsc_req, blkvsc_req->cond);
+	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete\n",
+		   blkvsc_req);
 
-	wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
+	wait_for_completion_interruptible(&blkvsc_req->request.wait_event);
 
 	buf = kmap(page_buf);
 
@@ -652,7 +638,7 @@ static int blkvsc_do_read_capacity(struct block_device_context *blkdev)
 	}
 
 	vm_srb = &blkvsc_req->request.vstor_packet.vm_srb;
-	init_waitqueue_head(&blkvsc_req->wevent);
+	init_completion(&blkvsc_req->request.wait_event);
 	blkvsc_req->dev = blkdev;
 	blkvsc_req->req = NULL;
 	blkvsc_req->write = 0;
@@ -665,18 +651,12 @@ static int blkvsc_do_read_capacity(struct block_device_context *blkdev)
 	blkvsc_req->cmnd[0] = READ_CAPACITY;
 	blkvsc_req->cmd_len = 16;
 
-	/*
-	 * Set this here since the completion routine may be invoked
-	 * and completed before we return
-	 */
-	blkvsc_req->cond = 0;
-
 	blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
 
-	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete - cond %d\n",
-		   blkvsc_req, blkvsc_req->cond);
+	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete\n",
+		   blkvsc_req);
 
-	wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
+	wait_for_completion_interruptible(&blkvsc_req->request.wait_event);
 
 	/* check error */
 	if (vm_srb->scsi_status) {
@@ -732,7 +712,7 @@ static int blkvsc_do_read_capacity16(struct block_device_context *blkdev)
 		return -ENOMEM;
 	}
 
-	init_waitqueue_head(&blkvsc_req->wevent);
+	init_completion(&blkvsc_req->request.wait_event);
 	blkvsc_req->dev = blkdev;
 	blkvsc_req->req = NULL;
 	blkvsc_req->write = 0;
@@ -749,14 +729,13 @@ static int blkvsc_do_read_capacity16(struct block_device_context *blkdev)
 	 * Set this here since the completion routine may be invoked
 	 * and completed before we return
 	 */
-	blkvsc_req->cond = 0;
 
 	blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
 
-	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete - cond %d\n",
-		   blkvsc_req, blkvsc_req->cond);
+	DPRINT_DBG(BLKVSC_DRV, "waiting %p to complete\n",
+		   blkvsc_req);
 
-	wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
+	wait_for_completion_interruptible(&blkvsc_req->request.wait_event);
 
 	/* check error */
 	if (vm_srb->scsi_status) {
@@ -1161,8 +1140,7 @@ static void blkvsc_cmd_completion(struct hv_storvsc_request *request)
 					 SCSI_SENSE_BUFFERSIZE, &sense_hdr))
 			scsi_print_sense_hdr("blkvsc", &sense_hdr);
 
-	blkvsc_req->cond = 1;
-	wake_up_interruptible(&blkvsc_req->wevent);
+	complete(&blkvsc_req->request.wait_event);
 }
 
 static void blkvsc_request_completion(struct hv_storvsc_request *request)
-- 
1.7.4.1


  parent reply	other threads:[~2011-04-05 14:05 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-05 14:04 [RESEND PATCH 00/22] Staging: hv: Cleanup-storage-drivers-phase-II K. Y. Srinivasan
2011-04-05 14:04 ` [PATCH 01/22] Staging: hv: Move the definition of struct storvsc_request_extension K. Y. Srinivasan
2011-04-05 14:04   ` K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 02/22] Staging: hv: Embed struct storvsc_request_extension into hv_storvsc_request K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 03/22] Staging: hv: Get rid of request_ext_size from struct storvsc_driver_object K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 04/22] Staging: hv: Add a function to map a hv_driver pointer to storvsc driver K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 05/22] Staging: hv: Use struct completion in struct storvsc_request_extension K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 06/22] Staging: hv: Allocate request structures zeroed out K. Y. Srinivasan
2011-04-05 14:04     ` K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 07/22] Staging: hv: Get rid of the type field from struct hv_storvsc_request K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 08/22] Staging: hv: Get rid of the host " K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 09/22] Staging: hv: Get rid of the bus " K. Y. Srinivasan
2011-04-05 14:04     ` K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 10/22] Staging: hv: Get rid of the target_id " K. Y. Srinivasan
2011-04-05 14:04     ` K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 11/22] Staging: hv: Get rid of lun_id " K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 12/22] Staging: hv: Get rid of the cdb_len " K. Y. Srinivasan
2011-04-05 14:04     ` K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 13/22] Staging: hv: Get rid of cdb " K. Y. Srinivasan
2011-04-05 14:04     ` K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 14/22] Staging: hv: Get rid of sense_buffer_size " K. Y. Srinivasan
2011-04-05 14:04     ` K. Y. Srinivasan
2011-04-05 14:04   ` [PATCH 15/22] Staging: hv: Move sense_buffer field K. Y. Srinivasan
2011-04-05 14:04     ` K. Y. Srinivasan
2011-04-05 14:05   ` [PATCH 16/22] Staging: hv: Move the context field from struct hv_storvsc_request K. Y. Srinivasan
2011-04-05 14:05   ` [PATCH 17/22] Staging: hv: Move on_io_completion() " K. Y. Srinivasan
2011-04-05 14:05     ` K. Y. Srinivasan
2011-04-05 14:05   ` [PATCH 18/22] Staging: hv: Get rid of the status field " K. Y. Srinivasan
2011-04-05 14:05   ` [PATCH 19/22] Staging: hv: Get rid of the bytes_xfer " K. Y. Srinivasan
2011-04-05 14:05     ` K. Y. Srinivasan
2011-04-05 14:05   ` [PATCH 20/22] Staging: hv: Move the data_buffer " K. Y. Srinivasan
2011-04-05 14:05     ` K. Y. Srinivasan
2011-04-05 14:05   ` [PATCH 21/22] Staging: hv: Rename struct storvsc_request_extension K. Y. Srinivasan
2011-04-05 14:05     ` K. Y. Srinivasan
2011-04-05 14:05   ` K. Y. Srinivasan [this message]
2011-04-05 14:05     ` [PATCH 22/22] Staging: hv: Get rid of synch primitive in struct blkvsc_request K. Y. Srinivasan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1302012306-21277-22-git-send-email-kys@microsoft.com \
    --to=kys@microsoft.com \
    --cc=devel@linuxdriverproject.org \
    --cc=gregkh@suse.de \
    --cc=haiyangz@microsoft.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=v-abkane@microsoft.com \
    --cc=virtualization@lists.osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.