On Fri, Mar 5, 2021 at 8:11 AM Keith Busch <kbusch@xxxxxxxxxx> wrote: > > On Thu, Mar 04, 2021 at 04:31:11PM +0530, Kanchan Joshi wrote: > > On Thu, Mar 4, 2021 at 3:14 AM Chaitanya Kulkarni > > <Chaitanya.Kulkarni@xxxxxxx> wrote: > > > > > > On 3/2/21 23:22, Kanchan Joshi wrote: > > > > + if (!ioucmd) > > > > + cptr = &c; > > > > + else { > > > > + /*for async - allocate cmd dynamically */ > > > > + cptr = kmalloc(sizeof(struct nvme_command), GFP_KERNEL); > > > > + if (!cptr) > > > > + return -ENOMEM; > > > > + } > > > > + > > > > + memset(cptr, 0, sizeof(c)); > > > Why not kzalloc and remove memset() ? > > > > Yes sure. Ideally I want to get rid of the allocation cost. Perhaps > > employing kmem_cache/mempool can help. Do you think there is a better > > way? > > I'll need to think on this to consider if the memory cost is worth it > (8b to 64b), but you could replace nvme_request's 'struct nvme_command' > pointer with the struct itself and not have to allocate anything per IO. > An added bonus is that sync and async handling become more the same. Indeed, thanks for this. I will fold that change as a prep in the next version.