From ddb4e08c76afcae5e40e0bcb418683dfb2a22aa8 Mon Sep 17 00:00:00 2001 From: Minep Date: Mon, 3 Oct 2022 22:11:00 +0100 Subject: [PATCH 1/1] fix: remove unnecessary backtracing in mnt_mkbusy/chillax fix: no need to do subtree reposition after symlink is resolved (for now). --- lunaix-os/kernel/fs/mount.c | 20 ++++++-------------- lunaix-os/kernel/fs/path_walk.c | 2 +- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/lunaix-os/kernel/fs/mount.c b/lunaix-os/kernel/fs/mount.c index ff8d46b..c1e9784 100644 --- a/lunaix-os/kernel/fs/mount.c +++ b/lunaix-os/kernel/fs/mount.c @@ -68,25 +68,17 @@ __vfs_do_unmount(struct v_mount* mnt) void mnt_mkbusy(struct v_mount* mnt) { - while (mnt) { - mutex_lock(&mnt->lock); - mnt->busy_counter++; - mutex_unlock(&mnt->lock); - - mnt = mnt->parent; - } + mutex_lock(&mnt->lock); + mnt->busy_counter++; + mutex_unlock(&mnt->lock); } void mnt_chillax(struct v_mount* mnt) { - while (mnt) { - mutex_lock(&mnt->lock); - mnt->busy_counter--; - mutex_unlock(&mnt->lock); - - mnt = mnt->parent; - } + mutex_lock(&mnt->lock); + mnt->busy_counter--; + mutex_unlock(&mnt->lock); } int diff --git a/lunaix-os/kernel/fs/path_walk.c b/lunaix-os/kernel/fs/path_walk.c index c80d713..a0331e7 100644 --- a/lunaix-os/kernel/fs/path_walk.c +++ b/lunaix-os/kernel/fs/path_walk.c @@ -106,7 +106,7 @@ __vfs_walk(struct v_dnode* start, } // reposition the resolved subtree pointed by symlink - vfs_dcache_rehash(current_level->parent, dnode); + // vfs_dcache_rehash(current_level->parent, dnode); current_level = dnode; current_inode = dnode->inode; } -- 2.27.0