Messages in this thread | | | From | Mateusz Guzik <> | Date | Sun, 8 Oct 2023 23:21:34 +0200 | Subject | Re: [PATCH v2 5/5] fs: Add inode_assert_locked() and inode_assert_locked_excl() |
| |
On 10/8/23, Matthew Wilcox <willy@infradead.org> wrote: > On Sun, Oct 08, 2023 at 10:26:40PM +0200, Mateusz Guzik wrote: >> On 10/7/23, Matthew Wilcox (Oracle) <willy@infradead.org> wrote: >> > +static inline void inode_assert_locked_excl(const struct inode *inode) >> > +{ >> > + rwsem_assert_held_write(&inode->i_rwsem); >> > +} >> > + >> > static inline void inode_lock_nested(struct inode *inode, unsigned >> > subclass) >> > { >> > down_write_nested(&inode->i_rwsem, subclass); >> >> Why "excl" instead of "write"? Apart from looking weird, it is >> inconsistent with "prior art" in the file: i_mmap_assert_write_locked. > > Yes, but that pairs with i_mmap_lock_write() / i_mmap_lock_read(). > > The problem is that we have inode_lock() / inode_lock_shared() > inode_assert_locked_read/write doesn't make sense with them. But > inode_assert_locked() doesn't make sense as the assertion for > inode_lock() because you'd expect it to assert whether the inode lock > is held at all. So I went with inode_assert_locked_excl(). > > I wouldn't mind if we converted all the inode_lock()/shared to > inode_lock_read() / inode_lock_write(), and then added > inode_assert_read_locked() / inode_assert_write_locked(). That's > a bit of a bigger job than I want to take on today. >
I agree it is rather messy and I'm not going to spend time arguing as it is not my call anyway.
Speaking of that, I just noticed the vfs folk are not CC'ed, which I'm rectifying with this e-mail.
-- Mateusz Guzik <mjguzik gmail.com>
| |