All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sagi Grimberg <sagig@dev.mellanox.co.il>
To: "Martin K. Petersen" <martin.petersen@oracle.com>,
	axboe@fb.com, nab@daterainc.com, linux-scsi@vger.kernel.org
Subject: Re: [PATCH 09/14] block: Relocate integrity flags
Date: Thu, 03 Jul 2014 13:03:15 +0300	[thread overview]
Message-ID: <53B52A63.9090603@dev.mellanox.co.il> (raw)
In-Reply-To: <1401334128-15499-10-git-send-email-martin.petersen@oracle.com>

On 5/29/2014 6:28 AM, Martin K. Petersen wrote:
> Move flags affecting the integrity code out of the bio bi_flags and into
> the block integrity payload.
>
> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
> ---
>   block/bio-integrity.c     |  4 ++--
>   drivers/scsi/sd_dif.c     |  4 ++--
>   include/linux/bio.h       | 27 ++++++++++++++++++++++++++-
>   include/linux/blk_types.h |  6 ++----
>   4 files changed, 32 insertions(+), 9 deletions(-)
>
> diff --git a/block/bio-integrity.c b/block/bio-integrity.c
> index c91181e3d18d..877bce028766 100644
> --- a/block/bio-integrity.c
> +++ b/block/bio-integrity.c
> @@ -98,7 +98,7 @@ void bio_integrity_free(struct bio *bio)
>   	struct bio_integrity_payload *bip = bio_integrity(bio);
>   	struct bio_set *bs = bio->bi_pool;
>   
> -	if (bip->bip_owns_buf)
> +	if (bip_get_flag(bip, BIP_BLOCK_INTEGRITY))
>   		kfree(page_address(bip->bip_vec->bv_page) +
>   		      bip->bip_vec->bv_offset);
>   
> @@ -299,7 +299,7 @@ int bio_integrity_prep(struct bio *bio)
>   		return -EIO;
>   	}
>   
> -	bip->bip_owns_buf = 1;
> +	bip_set_flag(bip, BIP_BLOCK_INTEGRITY);
>   	bip->bip_iter.bi_size = len;
>   	bip_set_seed(bip, bio->bi_iter.bi_sector);
>   
> diff --git a/drivers/scsi/sd_dif.c b/drivers/scsi/sd_dif.c
> index 1d401f864fbe..95d5cb806f58 100644
> --- a/drivers/scsi/sd_dif.c
> +++ b/drivers/scsi/sd_dif.c
> @@ -326,7 +326,7 @@ void sd_dif_prepare(struct request *rq, sector_t hw_sector,
>   		unsigned int j;
>   
>   		/* Already remapped? */
> -		if (bio_flagged(bio, BIO_MAPPED_INTEGRITY))
> +		if (bip_get_flag(bip, BIP_MAPPED_INTEGRITY))
>   			break;
>   
>   		virt = bip_get_seed(bip) & 0xffffffff;
> @@ -347,7 +347,7 @@ void sd_dif_prepare(struct request *rq, sector_t hw_sector,
>   			kunmap_atomic(sdt);
>   		}
>   
> -		bio->bi_flags |= (1 << BIO_MAPPED_INTEGRITY);
> +		bip_set_flag(bip, BIP_MAPPED_INTEGRITY);
>   	}
>   }
>   
> diff --git a/include/linux/bio.h b/include/linux/bio.h
> index 295545de8790..adc806325c36 100644
> --- a/include/linux/bio.h
> +++ b/include/linux/bio.h
> @@ -296,7 +296,7 @@ struct bio_integrity_payload {
>   
>   	unsigned short		bip_slab;	/* slab the bip came from */
>   	unsigned short		bip_vcnt;	/* # of integrity bio_vecs */
> -	unsigned		bip_owns_buf:1;	/* should free bip_buf */
> +	unsigned short		bip_flags;	/* control flags */
>   
>   	struct work_struct	bip_work;	/* I/O completion */
>   
> @@ -304,6 +304,31 @@ struct bio_integrity_payload {
>   	struct bio_vec		bip_inline_vecs[0];/* embedded bvec array */
>   };
>   
> +enum bip_flags {
> +	BIP_BLOCK_INTEGRITY = 0,/* block layer owns integrity data, not fs */
> +	BIP_MAPPED_INTEGRITY,	/* integrity metadata has been remapped */
> +	BIP_CTRL_NOCHECK,	/* disable controller integrity checking */
> +	BIP_DISK_NOCHECK,	/* disable disk integrity checking */
> +};
> +
> +static inline bool bip_get_flag(struct bio_integrity_payload *bip,
> +	enum bip_flags flag)
> +{
> +	if (bip && bip->bip_flags & (1 << flag))
> +		return true;
> +
> +	return false;
> +}
> +
> +static inline void bip_set_flag(struct bio_integrity_payload *bip,
> +	enum bip_flags flag)
> +{
> +	if (!bip)
> +		return;
> +
> +	bip->bip_flags |= (1 << flag);
> +}
> +
>   static inline sector_t bip_get_seed(struct bio_integrity_payload *bip)
>   {
>   	return bip->bip_iter.bi_sector;
> diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
> index 9cce1fcd6793..b2e389a16534 100644
> --- a/include/linux/blk_types.h
> +++ b/include/linux/blk_types.h
> @@ -120,10 +120,8 @@ struct bio {
>   #define BIO_USER_MAPPED 6	/* contains user pages */
>   #define BIO_EOPNOTSUPP	7	/* not supported */
>   #define BIO_NULL_MAPPED 8	/* contains invalid user pages */
> -#define BIO_FS_INTEGRITY 9	/* fs owns integrity data, not block layer */
> -#define BIO_QUIET	10	/* Make BIO Quiet */
> -#define BIO_MAPPED_INTEGRITY 11/* integrity metadata has been remapped */
> -#define BIO_SNAP_STABLE	12	/* bio data must be snapshotted during write */
> +#define BIO_QUIET	9	/* Make BIO Quiet */
> +#define BIO_SNAP_STABLE	10	/* bio data must be snapshotted during write */
>   
>   /*
>    * Flags starting here get preserved by bio_reset() - this includes

Christoph had comments on this, but I'm fine with this either way.

Other than that:

Reviewed-by: Sagi Grimberg<sagig@mellanox.com>



  parent reply	other threads:[~2014-07-03 10:03 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-29  3:28 Data integrity update Martin K. Petersen
2014-05-29  3:28 ` [PATCH 01/14] block: Get rid of bdev_integrity_enabled() Martin K. Petersen
2014-06-11 16:31   ` Christoph Hellwig
2014-07-03  9:18     ` Sagi Grimberg
2014-05-29  3:28 ` [PATCH 02/14] block: Replace bi_integrity with bi_special Martin K. Petersen
2014-06-11 16:32   ` Christoph Hellwig
2014-06-12  0:18     ` Martin K. Petersen
2014-07-03  9:19       ` Sagi Grimberg
2014-05-29  3:28 ` [PATCH 03/14] block: Deprecate integrity tagging functions Martin K. Petersen
2014-06-11 16:33   ` Christoph Hellwig
2014-06-12  0:18     ` Martin K. Petersen
2014-05-29  3:28 ` [PATCH 04/14] block: Remove bip_buf Martin K. Petersen
2014-06-11 16:35   ` Christoph Hellwig
2014-07-03  9:21     ` Sagi Grimberg
2014-05-29  3:28 ` [PATCH 05/14] block: Deprecate the use of the term sector in the context of block integrity Martin K. Petersen
2014-06-11 16:45   ` Christoph Hellwig
2014-06-12  0:26     ` Martin K. Petersen
2014-07-03  9:35   ` Sagi Grimberg
2014-07-03 10:19     ` Sagi Grimberg
2014-05-29  3:28 ` [PATCH 06/14] block: Clean up the code used to generate and verify integrity metadata Martin K. Petersen
2014-07-03  9:40   ` Sagi Grimberg
2014-05-29  3:28 ` [PATCH 07/14] block: Add prefix to block integrity profile flags Martin K. Petersen
2014-06-11 16:46   ` Christoph Hellwig
2014-07-03  9:42   ` Sagi Grimberg
2014-05-29  3:28 ` [PATCH 08/14] block: Add a disk flag to block integrity profile Martin K. Petersen
2014-06-11 16:48   ` Christoph Hellwig
2014-06-12  1:30     ` Martin K. Petersen
2014-06-25 10:24       ` Christoph Hellwig
2014-06-25 11:49         ` Martin K. Petersen
2014-07-03  9:58           ` Sagi Grimberg
2014-05-29  3:28 ` [PATCH 09/14] block: Relocate integrity flags Martin K. Petersen
2014-06-11 16:51   ` Christoph Hellwig
2014-06-12  1:51     ` Martin K. Petersen
2014-07-03 10:03   ` Sagi Grimberg [this message]
2014-05-29  3:28 ` [PATCH 10/14] block: Integrity checksum flag Martin K. Petersen
2014-06-11 16:52   ` Christoph Hellwig
2014-06-12  2:03     ` Martin K. Petersen
2014-05-29  3:28 ` [PATCH 11/14] block: Don't merge requests if integrity flags differ Martin K. Petersen
2014-06-11 16:53   ` Christoph Hellwig
2014-07-03 10:06   ` Sagi Grimberg
2014-05-29  3:28 ` [PATCH 12/14] block: Add specific data integrity errors Martin K. Petersen
2014-06-11 16:54   ` Christoph Hellwig
     [not found]     ` <20140611165455.GG9511-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2014-06-12  2:16       ` Martin K. Petersen
2014-06-12  2:16         ` Martin K. Petersen
2014-05-29  3:28 ` [PATCH 13/14] lib: Add T10 Protection Information functions Martin K. Petersen
2014-06-11 16:56   ` Christoph Hellwig
2014-06-12  2:23     ` Martin K. Petersen
2014-05-29  3:28 ` [PATCH 14/14] sd: Honor block layer integrity handling flags Martin K. Petersen

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=53B52A63.9090603@dev.mellanox.co.il \
    --to=sagig@dev.mellanox.co.il \
    --cc=axboe@fb.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=nab@daterainc.com \
    /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.