On 21/12/2023 06:50, Christoph Hellwig wrote:
On Tue, Dec 19, 2023 at 04:53:27PM +0000, John Garry wrote:
On 19/12/2023 15:17, Christoph Hellwig wrote:
On Tue, Dec 19, 2023 at 12:41:37PM +0000, John Garry wrote:
How about something based on fcntl, like below? We will prob also require
some per-FS flag for enabling atomic writes without HW support. That flag
might be also useful for XFS for differentiating forcealign for atomic
writes with just forcealign.
I would have just exposed it through a user visible flag instead of
adding yet another ioctl/fcntl opcode and yet another method.
Any specific type of flag?
I would suggest a file attribute which we can set via chattr, but that is
still using an ioctl and would require a new inode flag; but at least there
is standard userspace support.
I'd be fine with that, but we're kinda running out of flag there.
Yeah, in looking at e2fsprogs they are all used.
That's why I suggested the FS_XFLAG_ instead, which basically works
the same.
ok, fine, we can try that out.
On another topic, maybe you can advise..
I noticed the NVMe patch to stop always setting virt boundary (thanks),
but I am struggling for the wording for iovecs rules. I'd like to reuse
iov_iter_is_aligned() to enforce any such rule.
I am thinking:
- ubuf / iovecs need to be PAGE-aligned
- each iovec needs to be length of multiple of PAGE_SIZE
But that does not work for total length < PAGE_SIZE.
So then we could have:
- ubuf / iovecs need to be PAGE-aligned
- each iovec needs to be length of multiple of atomic_write_unit_min. If
total length > PAGE_SIZE, each iovec also needs to be a multiple of
PAGE_SIZE.
I'd rather something simpler. Maybe it's ok.
Thanks,
John