The branch main has been updated by mjg:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=331a7601c9c21c1e55c57c5338e7affced9c7b7c

commit 331a7601c9c21c1e55c57c5338e7affced9c7b7c
Author:     Mateusz Guzik <[email protected]>
AuthorDate: 2021-05-29 01:36:50 +0000
Commit:     Mateusz Guzik <[email protected]>
CommitDate: 2021-05-29 22:04:10 +0000

    tmpfs: save on common case relocking in tmpfs_reclaim
---
 sys/fs/tmpfs/tmpfs_vnops.c | 19 ++++---------------
 1 file changed, 4 insertions(+), 15 deletions(-)

diff --git a/sys/fs/tmpfs/tmpfs_vnops.c b/sys/fs/tmpfs/tmpfs_vnops.c
index 43a2aa77dbbb..5d0d80639046 100644
--- a/sys/fs/tmpfs/tmpfs_vnops.c
+++ b/sys/fs/tmpfs/tmpfs_vnops.c
@@ -1525,26 +1525,18 @@ tmpfs_reclaim(struct vop_reclaim_args *v)
        struct vnode *vp;
        struct tmpfs_mount *tmp;
        struct tmpfs_node *node;
-       bool unlock, tm_locked;
+       bool unlock;
 
        vp = v->a_vp;
        node = VP_TO_TMPFS_NODE(vp);
        tmp = VFS_TO_TMPFS(vp->v_mount);
-       tm_locked = false;
 
        if (vp->v_type == VREG)
                tmpfs_destroy_vobject(vp, node->tn_reg.tn_aobj);
        vp->v_object = NULL;
 
-relock:
+       TMPFS_LOCK(tmp);
        TMPFS_NODE_LOCK(node);
-       if (!tm_locked && node->tn_links == 0 &&
-           (node->tn_vpstate & TMPFS_VNODE_ALLOCATING) == 0) {
-               TMPFS_NODE_UNLOCK(node);
-               TMPFS_LOCK(tmp);
-               tm_locked = true;
-               goto relock;
-       }
        tmpfs_free_vp(vp);
 
        /*
@@ -1552,19 +1544,16 @@ relock:
         * we must free its associated data structures (now that the vnode
         * is being reclaimed).
         */
+       unlock = true;
        if (node->tn_links == 0 &&
            (node->tn_vpstate & TMPFS_VNODE_ALLOCATING) == 0) {
-               MPASS(tm_locked);
                node->tn_vpstate = TMPFS_VNODE_DOOMED;
                unlock = !tmpfs_free_node_locked(tmp, node, true);
-       } else {
-               unlock = true;
        }
 
        if (unlock) {
                TMPFS_NODE_UNLOCK(node);
-               if (tm_locked)
-                       TMPFS_UNLOCK(tmp);
+               TMPFS_UNLOCK(tmp);
        }
 
        MPASS(vp->v_data == NULL);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "[email protected]"

Reply via email to