> -     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?

Reply via email to