Message ID | 1fbbd612-79bd-8a7b-8021-b8d46c3b8ac7@kernel.dk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [GIT,PULL] io_uring statx fix for 5.18-rc1 | expand |
On Fri, Mar 18, 2022 at 2:59 PM Jens Axboe <axboe@kernel.dk> wrote: > > On top of the main io_uring branch, this pull request is for ensuring > that the filename component of statx is stable after submit. That > requires a few VFS related changes. Ugh, I've pulled this, but I hate how it does that int getname_statx_lookup_flags(int); thing with 'int' for both the incoming and outgoing flags. And I don't say that just because the existing path lookup functions actually use 'unsigned int', and the code strives to do things like unsigned int lookup_flags = LOOKUP_FOLLOW | LOOKUP_DIRECTORY; So 'int' is ugly, but the _really_ ugly part is how we should have a separate type for the LOOKUP_xyz flags. That part isn't new to this change, but this change really highlights how lacking in type safety that thing is. The vfs code has a huge pile of different types of 'flags'. Half of them are various variations of mount flags, I feel, with the whole MS_xyz -> MNT_xyz thing going on. This is more of that horrid pattern. At least the mnt code tried to call the variables that keep MNT_xyz flags 'mnt_flags'. I'm not sure how consistent the code is about it, but there's _some_ attempt at it. I do wonder if we should at least try to have a special integer type for these things that could be checked with sparse (which nobody does) or at least used as documentation in the function prototypes to show "this returns a flag of type 'lookup_flag_t' rather than just 'unsigned int' (or worse yet, 'int'). Anyway, I've pulled it, I just wanted to make my reaction to it public in the hope that some bored vfs person goes "yeah, we should do that" and works on it. Linus
The pull request you sent on Fri, 18 Mar 2022 15:59:21 -0600:
> git://git.kernel.dk/linux-block.git tags/for-5.18/io_uring-statx-2022-03-18
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/b080cee72ef355669cbc52ff55dc513d37433600
Thank you!