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.