On Wed, 14 Sep 2022 10:29:53 -0600 Logan Gunthorpe <logang@xxxxxxxxxxxx> wrote: > On 2022-09-14 06:01, Mariusz Tkaczyk wrote: > >>>> As I understand it the offset and size will give the bounds of the > >>>> data region on the disk. Do you not think it works for zoned raid0? > >>> > >>> mdadm operates on 512B, so using 4K data regions could be destructive. > >>> Also left shift causes that size value is increasing. We can't clear more > >>> that user requested. We need to use 512b sectors as mdadm does. > >> > >> I don't really follow this. > > > > I understand that you want left shit is used to round size to data region > > and I assumed that data_region is 4K and that is probably wrong. > > You are right I has no sense, my apologizes. > > > > Let's imagine that our size is for example, 2687 sectors. Left shit will > > cause that we will get 2751488 and that will be passed as a size to > > function. Similar for data_offset. That is much more than we want to clear. > > Do I miss something? I guess that ioctl operates on sectors too but please > > correct me if that is wrong. > > The BLKDISCARD ioctl assumes bytes for the range, not sectors. Though it > does have to be sector aligned. > > dv->data_offset is then in sectors, so we shift by 9. > > s->size is in KB, so we shift by 10. > Got it! I will be thankful if you can create #defines for that. For Example: KIB_TO_BYTES(s->size) SEC_TO_BYTES(dv->offset) We could reuse them later in other places. Thanks, Mariusz