All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Disseldorp <ddiss@suse.de>
To: Douglas Gilbert <dgilbert@interlog.com>
Cc: linux-scsi@vger.kernel.org, linux-block@vger.kernel.org,
	target-devel@vger.kernel.org, linux-rdma@vger.kernel.org,
	linux-kernel@vger.kernel.org, martin.petersen@oracle.com,
	jejb@linux.vnet.ibm.com, bostroesser@gmail.com,
	bvanassche@acm.org, jgg@ziepe.ca
Subject: Re: [PATCH v6 3/4] scatterlist: add sgl_compare_sgl() function
Date: Tue, 19 Jan 2021 00:27:41 +0100	[thread overview]
Message-ID: <20210119002741.4dbc290e@suse.de> (raw)
In-Reply-To: <20210118163006.61659-4-dgilbert@interlog.com>

On Mon, 18 Jan 2021 11:30:05 -0500, Douglas Gilbert wrote:

> After enabling copies between scatter gather lists (sgl_s), another
> storage related operation is to compare two sgl_s. This new function
> is modelled on NVMe's Compare command and the SCSI VERIFY(BYTCHK=1)
> command. Like memcmp() this function returns false on the first
> miscompare and stops comparing.
> 
> A helper function called sgl_compare_sgl_idx() is added. It takes an
> additional parameter (miscompare_idx) which is a pointer. If that
> pointer is non-NULL and a miscompare is detected (i.e. the function
> returns false) then the byte index of the first miscompare is written
> to *miscomapre_idx. Knowing the location of the first miscompare is
> needed to implement the SCSI COMPARE AND WRITE command properly.
> 
> Reviewed-by: Bodo Stroesser <bostroesser@gmail.com>
> Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
> ---
>  include/linux/scatterlist.h |   8 +++
>  lib/scatterlist.c           | 109 ++++++++++++++++++++++++++++++++++++
>  2 files changed, 117 insertions(+)
> 
> diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h
> index 3f836a3246aa..71be65f9ebb5 100644
> --- a/include/linux/scatterlist.h
> +++ b/include/linux/scatterlist.h
> @@ -325,6 +325,14 @@ size_t sgl_copy_sgl(struct scatterlist *d_sgl, unsigned int d_nents, off_t d_ski
>  		    struct scatterlist *s_sgl, unsigned int s_nents, off_t s_skip,
>  		    size_t n_bytes);
>  
> +bool sgl_compare_sgl(struct scatterlist *x_sgl, unsigned int x_nents, off_t x_skip,
> +		     struct scatterlist *y_sgl, unsigned int y_nents, off_t y_skip,
> +		     size_t n_bytes);
> +
> +bool sgl_compare_sgl_idx(struct scatterlist *x_sgl, unsigned int x_nents, off_t x_skip,
> +			 struct scatterlist *y_sgl, unsigned int y_nents, off_t y_skip,
> +			 size_t n_bytes, size_t *miscompare_idx);


This patch looks good and works fine as a replacement for
compare_and_write_do_cmp(). One minor suggestion would be to name it
sgl_equal() or similar, to perhaps better reflect the bool return and
avoid memcmp() confusion. Either way:
Reviewed-by: David Disseldorp <ddiss@suse.de>

Cheers, David

  reply	other threads:[~2021-01-18 23:28 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-18 16:30 [PATCH v6 0/4] scatterlist: add new capabilities Douglas Gilbert
2021-01-18 16:30 ` [PATCH v6 1/4] sgl_alloc_order: remove 4 GiB limit, sgl_free() warning Douglas Gilbert
2021-01-18 18:28   ` Jason Gunthorpe
2021-01-18 20:08     ` Douglas Gilbert
2021-01-18 20:24       ` Jason Gunthorpe
2021-01-18 21:22         ` Bodo Stroesser
2021-01-18 23:48           ` Jason Gunthorpe
2021-01-19  1:27             ` Douglas Gilbert
2021-01-19 12:59               ` Jason Gunthorpe
2021-01-19 17:24             ` Bodo Stroesser
2021-01-19 18:03               ` Jason Gunthorpe
2021-01-19 18:08                 ` Bodo Stroesser
2021-01-19 18:17                   ` Jason Gunthorpe
2021-01-19 18:39                     ` Bodo Stroesser
2021-01-18 20:46       ` Bodo Stroesser
2021-01-18 16:30 ` [PATCH v6 2/4] scatterlist: add sgl_copy_sgl() function Douglas Gilbert
2021-01-18 16:30 ` [PATCH v6 3/4] scatterlist: add sgl_compare_sgl() function Douglas Gilbert
2021-01-18 23:27   ` David Disseldorp [this message]
2021-01-19  1:04     ` Douglas Gilbert
2021-01-19 11:50       ` David Disseldorp
2021-01-18 16:30 ` [PATCH v6 4/4] scatterlist: add sgl_memset() Douglas Gilbert

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=20210119002741.4dbc290e@suse.de \
    --to=ddiss@suse.de \
    --cc=bostroesser@gmail.com \
    --cc=bvanassche@acm.org \
    --cc=dgilbert@interlog.com \
    --cc=jejb@linux.vnet.ibm.com \
    --cc=jgg@ziepe.ca \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=target-devel@vger.kernel.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.