Re: [PATCH 1/3] nvme: do not check for ns on rw path

From: Christoph Hellwig
Date: Fri Nov 03 2017 - 08:53:46 EST


> - if (ns && ns->ms &&
> + if (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;

blk_rq_is_passthrough also can't be true here.

How about:

if (ns->ms && !blk_integrity_rq(req) &&
(!ns->pi_type || ns->ms != sizeof(struct t10_pi_tuple)))
return BLK_STS_NOTSUPP;

Although I have to admit I don't really understand what this check
is even trying to do. It basically checks for a namespace that has
a format with metadata that is not T10 protection information and
then rejects all I/O to it. Why are we even creating a block device
node for such a thing?