Re: [PATCH RESEND x3 v9 1/9] iov_iter: add copy_struct_from_iter()
From: Matthew Wilcox <willy@infradead.org>
Date: 2021-06-24 02:01:10
Also in:
linux-btrfs, linux-fsdevel
From: Matthew Wilcox <willy@infradead.org>
Date: 2021-06-24 02:01:10
Also in:
linux-btrfs, linux-fsdevel
On Wed, Jun 23, 2021 at 02:58:32PM -0700, Omar Sandoval wrote:
But what you described would look more like:
// Needs to be large enough for maximum returned header + data.
char buffer[...];
struct iovec iov[] = {
{ buffer, sizeof(buffer) },
};
preadv2(fd, iov, 2, -1, RWF_ENCODED);
// We should probably align the buffer.
struct encoded_iov *encoded_iov = (void *)buffer;
char *data = buffer + encoded_iov->size;
That's a little uglier, but it should work, and allows for arbitrary
extensions. So, among these three alternatives (fixed size structure
with reserved space, variable size structure like above, or ioctl),
which would you prefer?Does that work for O_DIRECT and the required 512-byte alignment?