[PATCH] nvme: improve check for attached metadata buffers

Keith Busch keith.busch at intel.com
Mon Nov 6 11:55:53 PST 2017


On Mon, Nov 06, 2017 at 08:01:52PM +0100, Christoph Hellwig wrote:
> @@ -476,14 +476,11 @@ static inline blk_status_t nvme_setup_rw(struct nvme_ns *ns,
>  	u32 dsmgmt = 0;
>  
>  	/*
> -	 * If formated with metadata, require the block layer provide a buffer
> -	 * unless this namespace is formated such that the metadata can be
> -	 * stripped/generated by the controller with PRACT=1.
> +	 * The block layer should always provide a metadata buffer if the
> +	 * namespace is formatted with metadata.
>  	 */
> -	if (ns && ns->ms &&
> -	    (!ns->pi_type || ns->ms != sizeof(struct t10_pi_tuple)) &&
> -	    !blk_integrity_rq(req) && !blk_rq_is_passthrough(req))
> -		return BLK_STS_NOTSUPP;
> +	if (WARN_ON_ONCE(ns->ms && !blk_integrity_rq(req)))
> +		return BLK_STS_IOERR;

Sorry for missing this case earlier: this will break namespace usage
when CONFIG_BLK_DEV_INTEGRITY is not set, and the format allows PRACT=1
to strip/generate.



More information about the Linux-nvme mailing list