From 3db7fd0d229c6c4039fd2bc106b317705c4360b0 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Mon, 22 Jul 2024 14:49:54 -0400 Subject: [PATCH] dont lock inode in mkwrite, try adjust extent_sem in get_block **WIP** This basically undoes part of e972c85, adjusts the locking requirement in scoutfs_get_block to just grab the extent and not lock the whole inode. Signed-off-by: Auke Kok --- kmod/src/data.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/kmod/src/data.c b/kmod/src/data.c index 08e5fc09..1e4aa2a4 100644 --- a/kmod/src/data.c +++ b/kmod/src/data.c @@ -558,7 +558,7 @@ static int scoutfs_get_block(struct inode *inode, sector_t iblock, u64 offset; int ret; - WARN_ON_ONCE(create && !inode_is_locked(inode)); + WARN_ON_ONCE(create && !rwsem_is_locked(&si->extent_sem)); /* make sure caller holds a cluster lock */ lock = scoutfs_per_task_get(&si->pt_data_lock); @@ -1915,7 +1915,6 @@ static int scoutfs_data_page_mkwrite(struct vm_area_struct *vma, int err; sb_start_pagefault(sb); - inode_lock(inode); down_write(&si->extent_sem); retry: @@ -2008,7 +2007,6 @@ static int scoutfs_data_page_mkwrite(struct vm_area_struct *vma, scoutfs_per_task_del(&si->pt_data_lock, &pt_ent); scoutfs_unlock(sb, lock, SCOUTFS_LOCK_WRITE); up_write(&si->extent_sem); - inode_unlock(inode); if (scoutfs_data_wait_found(&dw)) { ret = scoutfs_data_wait(inode, &dw); if (ret == 0)