diff --git a/kmod/src/data.c b/kmod/src/data.c index e052044a..08e5fc09 100644 --- a/kmod/src/data.c +++ b/kmod/src/data.c @@ -1915,6 +1915,7 @@ 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: @@ -2007,6 +2008,7 @@ 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)