> «Внимание! Данное письмо от внешнего адресата!» > > On Fri, Sep 09, 2022 at 03:20:38PM +0300, Alexander V. Buev wrote: > > Added functions to attach user PI iovec pages to bio and release this > > pages via bio_integrity_free. > > Before I get into nitpicking on the nitty gritty details: > > what is the reason for pinning down the memory for the iovecs here? > Other interfaces like the nvme passthrough code simply copy from > user assuming that the amount of metadata passed will usually be > rather small, and thus faster doing a copy. In short, for the universality of the solution. >From my point of view we have a data & metadata (PI) and process data & PI with the same method. We also worked with large IO and PI can be greater than PAGE_SIZE. I think that allocating & copying of data with PAGE_SIZE bytes of length (an in the feature more) per one IO is not good idea. Also any block driver can register it's own integrity profile with tuple_size more than 8 or 16 bytes. May be I am wrong but in the feature we can register some amount buffers and pin them once at start. This is very same idea as "SELECT BUFFERS" technics but for vector operations and with PI support. For now we want to be able make IO with PI to block device with minimal restriction in interface. But I think you are right - on small IO it's may be faster to allocate & copy instead of pin pages. May be this is point for feature optimization? -- Alexander Buev