Hello, This patch series is based on the upstream discussion with Jan & Joseph @ [1]. It is based on top of Matthew's v3 ext4 iomap patch series [2] Patch-1: Adds the ext4_ilock/unlock APIs and also replaces all inode_lock/unlock instances from fs/ext4/* For now I already accounted for trylock/lock issue symantics (which was discussed here [3]) in the same patch, since the this whole patch was around inode_lock/unlock API, so I thought it will be best to address that issue in the same patch. However, kindly let me know if otherwise. Patch-2: Commit msg of this patch describes in detail about what it is doing. In brief - we try to first take the shared lock (instead of exclusive lock), unless it is a unaligned_io or extend_io. Then in ext4_dio_write_checks(), if we start with shared lock, we see if we can really continue with shared lock or not. If not, then we release the shared lock then acquire exclusive lock and restart ext4_dio_write_checks(). Tested against few xfstests (with dioread_nolock mount option), those ran fine (ext4 & generic). I tried testing performance numbers on my VM (since I could not get hold of any real h/w based test device). I could test the fact that earlier we were trying to do downgrade_write() lock, but with this patch, that path is now avoided for fio test case (as reported by Joseph in [4]). But for the actual results, I am not sure if VM machine testing could really give the reliable perf numbers which we want to take a look at. Though I do observe some form of perf improvements, but I could not get any reliable numbers (not even with the same list of with/without patches with which Joseph posted his numbers [1]). @Joseph, Would it be possible for you to give your test case a run with this patches? That will be really helpful. Branch for this is hosted at below tree. https://github.com/riteshharjani/linux/tree/ext4-ilock-RFC [1]: https://lore.kernel.org/linux-ext4/20190910215720.GA7561@xxxxxxxxxxxxxx/ [2]: https://lwn.net/Articles/799184/ [3]: https://lore.kernel.org/linux-fsdevel/20190911103117.E32C34C044@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ [4]: https://lore.kernel.org/linux-ext4/1566871552-60946-4-git-send-email-joseph.qi@xxxxxxxxxxxxxxxxx/ Ritesh Harjani (2): ext4: Add ext4_ilock & ext4_iunlock API ext4: Improve DIO writes locking sequence fs/ext4/ext4.h | 33 ++++++ fs/ext4/extents.c | 16 +-- fs/ext4/file.c | 253 ++++++++++++++++++++++++++++++++-------------- fs/ext4/inode.c | 4 +- fs/ext4/ioctl.c | 16 +-- fs/ext4/super.c | 12 +-- fs/ext4/xattr.c | 16 +-- 7 files changed, 244 insertions(+), 106 deletions(-) -- 2.21.0