On 2022/9/1 11:12, Ming Lei wrote: > On Thu, Sep 01, 2022 at 11:04:24AM +0800, Ziyang Zhang wrote: >> On 2022/9/1 10:30, Ming Lei wrote: >>> + >>> +- ``UBLK_IO_NEED_GET_DATA`` >>> + >>> + ublk server pre-allocates IO buffer for each IO by default. Any new projects >>> + should use this buffer to communicate with ublk driver. However, existing >>> + projects may break or not able to consume the new buffer interface; that's >>> + why this command is added for backwards compatibility so that existing >>> + projects can still consume existing buffers. >> >> Hi, Ming. >> >> Could you please add more information on UBLK_IO_NEED_GET_DATA. stefanha >> found it hard to understand. >> >> Myabe we should write like this: >> >> With UBLK_F_NEED_GET_DATA enabled, the WRITE request will be firstly issued to >> ublksrv without data copy. Then, IO backend receives the request and it can allocate >> data buffer and embed its addr inside a new ioucmd. After the kernel driver gets the >> ioucmd, the data copy happens(from biovecs to backend's buffer). Finally, >> the backend receives the request again with data to be written and it can truly >> handle the request. >> >> UBLK_IO_NEED_GET_DATA add one additional round-trip in ublk_drv and one >> io_uring_enter() syscall. Any user thinks that it may lower performance >> should not enable UBLK_F_NEED_GET_DATA. ublk server pre-allocates IO buffer >> for each IO by default. Any new projects should use this buffer to communicate >> with ublk driver. However, existing projects may break or not able to consume >> the new buffer interface; that's why this command is added for backwards >> compatibility so that existing projects can still consume existing buffers. > > I am fine to add it if V3 is needed. If not, please send a new patch. > > BTW, I guess Jens may consider it for v6.0. Please add it to V3, Ming. Thanks, Zhang