Re: [RFC PATCH v5 3/4] nvme: add simple copy support
From: Matthew Wilcox <willy@infradead.org>
Date: 2021-02-20 03:39:25
Also in:
dm-devel, linux-fsdevel, linux-nvme, lkml
From: Matthew Wilcox <willy@infradead.org>
Date: 2021-02-20 03:39:25
Also in:
dm-devel, linux-fsdevel, linux-nvme, lkml
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?