On 19-07-11 10:53:24, Chaitanya Kulkarni wrote: > This patch adds support for memory backed REQ_OP_WRITE_ZEROES > operations for the null_blk request mode. We introduce two new > functions where we zeroout the sector(s) using memset which are part > of the payloadless write-zeroes request. > > Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@xxxxxxx> > --- > drivers/block/null_blk_main.c | 45 ++++++++++++++++++++++++++++++++++- > 1 file changed, 44 insertions(+), 1 deletion(-) > > diff --git a/drivers/block/null_blk_main.c b/drivers/block/null_blk_main.c > index 65da7c2d93b9..fca011a05277 100644 > --- a/drivers/block/null_blk_main.c > +++ b/drivers/block/null_blk_main.c > @@ -725,6 +725,24 @@ static void null_free_sector(struct nullb *nullb, sector_t sector, > } > } > > +static void null_zero_sector(struct nullb_device *d, sector_t sect, > + sector_t nr_sects, bool cache) > +{ > + struct radix_tree_root *root = cache ? &d->cache : &d->data; > + struct nullb_page *t_page; > + unsigned int offset; > + void *dest; > + > + t_page = radix_tree_lookup(root, sect >> PAGE_SECTORS_SHIFT); > + if (!t_page) > + return; > + > + offset = (sect & SECTOR_MASK) << SECTOR_SHIFT; > + dest = kmap_atomic(t_page->page); > + memset(dest + offset, 0, SECTOR_SIZE * nr_sects); > + kunmap_atomic(dest); > +} > + > static struct nullb_page *null_radix_tree_insert(struct nullb *nullb, u64 idx, > struct nullb_page *t_page, bool is_cache) > { > @@ -1026,6 +1044,25 @@ static void null_handle_discard(struct nullb *nullb, sector_t sector, size_t n) > spin_unlock_irq(&nullb->lock); > } > > +static void null_handle_write_zeroes(struct nullb *nullb, sector_t sector, > + unsigned int bytes_left) > +{ > + sector_t nr_sectors; > + size_t curr_bytes; > + > + spin_lock_irq(&nullb->lock); > + while (bytes_left > 0) { Hi Chaitanya, Thanks for your support for this! I have a simple query here. Is there any recommended rule about using the function argument to be changed inside of that function like _bytes_left_? I'm not against it, but I'd like to know if it's okay to decrement inside of this function in code-style point-of-view. Thanks!