>>> + blk_queue_atomic_write_max_bytes(disk->queue, atomic_bs); >>> + blk_queue_atomic_write_unit_min_sectors(disk->queue, 1); >>> + blk_queue_atomic_write_unit_max_sectors(disk->queue, >>> + atomic_bs / bs); >> blk_queue_atomic_write_unit_[min| max]_sectors expects sectors (512 bytes unit) >> as input but no conversion is done here from device logical block size >> to SECTORs. > > Yeah, you are right. I think that we can just use: > > blk_queue_atomic_write_unit_max_sectors(disk->queue, > atomic_bs >> SECTOR_SHIFT); > Makes sense. I still don't grok the difference between max_bytes and unit_max_sectors here. (Maybe NVMe spec does not differentiate it?) I assume min_sectors should be as follows instead of setting it to 1 (512 bytes)? blk_queue_atomic_write_unit_min_sectors(disk->queue, bs >> SECTORS_SHIFT); > Thanks, > John > >>> + blk_queue_atomic_write_boundary_bytes(disk->queue, boundary); >>> + } else { >>> + dev_err(ns->ctrl->device, "Unsupported atomic boundary=0x%x\n", >>> + boundary); >>> + } >>> >