On Fri, Feb 19, 2021 at 06:15:16PM +0530, SelvaKumar S wrote:
> +     struct nvme_copy_range *range = NULL;
[...]
> +     range = kmalloc_array(nr_range, sizeof(*range),
> +                     GFP_ATOMIC | __GFP_NOWARN);
[...]
> +     req->special_vec.bv_page = virt_to_page(range);
> +     req->special_vec.bv_offset = offset_in_page(range);
> +     req->special_vec.bv_len = sizeof(*range) * nr_range;
[...]
> +struct nvme_copy_range {
> +     __le64                  rsvd0;
> +     __le64                  slba;
> +     __le16                  nlb;
> +     __le16                  rsvd18;
> +     __le32                  rsvd20;
> +     __le32                  eilbrt;
> +     __le16                  elbat;
> +     __le16                  elbatm;
> +};

so ... at 32 bytes, you can get 128 per 4kB page.  What happens if you
try to send down a command that attempts to copy 129 ranges?

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel

Reply via email to