From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S939902AbXGSRgS (ORCPT ); Thu, 19 Jul 2007 13:36:18 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1757624AbXGSRf5 (ORCPT ); Thu, 19 Jul 2007 13:35:57 -0400 Received: from hancock.steeleye.com ([71.30.118.248]:60523 "EHLO hancock.sc.steeleye.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754667AbXGSRfz (ORCPT ); Thu, 19 Jul 2007 13:35:55 -0400 Message-ID: <469FA0F9.9090001@steeleye.com> Date: Thu, 19 Jul 2007 13:35:53 -0400 From: Paul Clements User-Agent: Thunderbird 1.5.0.10 (X11/20070306) MIME-Version: 1.0 To: Denis Cheng CC: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Pavel Machek , Steven Whitehouse , Andrew Morton Subject: Re: [PATCH 2/2] nbd: change a parameter's type to remove a memcpy call References: <11848376711601-git-send-email-crquan@gmail.com> <11848377013773-git-send-email-crquan@gmail.com> In-Reply-To: <11848377013773-git-send-email-crquan@gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Denis Cheng wrote: > this memcpy looks so strange, in fact it's merely a pointer dereference, > so I change the parameter's type to refer it more directly, > this could make the memcpy not needed anymore. > > in the function nbd_read_stat where nbd_find_request is only once called, > the parameter served should be transformed accordingly. This is really a matter of preference. The generated code ends up being about the same, I think, while your patch makes the call to nbd_find_request kind of obtuse. Also, the memcpy's are balanced between send_req and find_request, so you can quickly see how the data is being transferred (from req into handle, and then back again). Your patch makes this less clear, at least to me. -- Paul > Signed-off-by: Denis Cheng > --- > drivers/block/nbd.c | 7 ++----- > 1 files changed, 2 insertions(+), 5 deletions(-) > > diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c > index 86639c0..a4d8508 100644 > --- a/drivers/block/nbd.c > +++ b/drivers/block/nbd.c > @@ -235,14 +235,11 @@ error_out: > return 1; > } > > -static struct request *nbd_find_request(struct nbd_device *lo, char *handle) > +static struct request *nbd_find_request(struct nbd_device *lo, struct request *xreq) > { > struct request *req, *n; > - struct request *xreq; > int err; > > - memcpy(&xreq, handle, sizeof(xreq)); > - > err = wait_event_interruptible(lo->active_wq, lo->active_req != xreq); > if (unlikely(err)) > goto out; > @@ -297,7 +294,7 @@ static struct request *nbd_read_stat(struct nbd_device *lo) > goto harderror; > } > > - req = nbd_find_request(lo, reply.handle); > + req = nbd_find_request(lo, *(struct request **)reply.handle); > if (unlikely(IS_ERR(req))) { > result = PTR_ERR(req); > if (result != -ENOENT)