Hello, I've been trying to get a basic understanding of the FIO code base in hopes of trying to implement some changes to make FIO more useful on ZBC and FLEX drives. To this end, I decided to try and implement an argument --set_capacity that lets you manually specify the capacity of a drive. I thought I had succeeded by editing the bdev_size function to look for my option and return the value specified by the option. However, although this result gets around the "you need to specify valid offset" errors, I am now getting apparently IO engine related errors. The IO engines I'm most interested in are psync, sync, and libaio. It is not clear to me how to resolve these errors or even what their root cause is. These errors occur while trying to write to an offset that I have verified I can write to using a write16 command sent through sg_raw. Interestingly, no errors seem to occur when I try a read workload, but no IO occurs, either. I've pasted what seems to be the relevant output below for the three IO engines, and if you have any insight as to what might be going wrong I would appreciate it immensely. libaio: io 21839 drop page cache /dev/sdc io 21839 fill: io_u 0x7f5d94003940: off=0x63500000000,len=0x1000,ddir=1,file=/dev/sdc io 21839 prep: io_u 0x7f5d94003940: off=0x63500000000,len=0x1000,ddir=1,file=/dev/sdc io 21839 prep: io_u 0x7f5d94003940: ret=0 io 21839 queue: io_u 0x7f5d94003940: off=0x63500000000,len=0x1000,ddir=1,file=/dev/sdc io 21839 calling ->commit(), depth 1 io 21839 io_u_queued_complete: min=1 io 21839 getevents: 1 io 21839 complete: io_u 0x7f5d94003940: off=0x63500000000,len=0x1000,ddir=1,file=/dev/sdc io 21839 io_u_queued_complete: min=0 io 21839 getevents: 0 fio: pid=21839, err=28/file:io_u.c:1860, func=io_u error, error=No space left on device io 21839 close ioengine libaio io 21839 free ioengine libaio psync: io 21952 drop page cache /dev/sdc io 21952 fill: io_u 0x7f2310003940: off=0x63500000000,len=0x1000,ddir=1,file=/dev/sdc io 21952 prep: io_u 0x7f2310003940: off=0x63500000000,len=0x1000,ddir=1,file=/dev/sdc io 21952 queue: io_u 0x7f2310003940: off=0x63500000000,len=0x1000,ddir=1,file=/dev/sdc io 21952 io_u_queued_complete: min=0 io 21952 getevents: 0 fio: pid=21952, err=28/file:io_u.c:1860, func=io_u error, error=No space left on device io 21952 close ioengine psync io 21952 free ioengine psync sync: io 22009 drop page cache /dev/sdc io 22009 fill: io_u 0x7f79d0003940: off=0x63500000000,len=0x1000,ddir=1,file=/dev/sdc io 22009 prep: io_u 0x7f79d0003940: off=0x63500000000,len=0x1000,ddir=1,file=/dev/sdc io 22009 prep: io_u 0x7f79d0003940: ret=1 io 22009 get_io_u failed io 22009 io_u_queued_complete: min=0 io 22009 getevents: 0 fio: pid=22009, err=22/file:engines/sync.c:84, func=lseek, error=Invalid argument io 22009 close ioengine sync io 22009 free ioengine sync Thank you, Phillip Chen -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html