Hi Christoph, there's an assertion that the inode rwsem is taken in iomap_dio_rw which currently triggers on gfs2 via gfs2_file_read_iter -> gfs2_file_direct_read -> iomap_dio_rw in fs/gfs2/file.c.
We're not using inode_[un]lock_shared on that code path because gfs2 uses its own cluster-wide locking already. Is there a reason why the inode needs to be locked locally anyway? If not, I'd like to avoid adding unnecessary lock taking in gfs2_file_direct_read just to silence iomap_dio_rw. Thanks, Andreas