On 10/8/23, Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > On Sun, Oct 08, 2023 at 10:26:40PM +0200, Mateusz Guzik wrote: >> On 10/7/23, Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> 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>