Dedup vnode type information. Fuse stores the vnode type in two places:
authornatano <natano@openbsd.org>
Fri, 12 Aug 2016 20:18:44 +0000 (20:18 +0000)
committernatano <natano@openbsd.org>
Fri, 12 Aug 2016 20:18:44 +0000 (20:18 +0000)
vtype in struct fusefs_node and v_type in struct vnode. Given the fact,
that fusefs_node structs are never allocated without an associated vnode
and those two fields are always in sync, one of those locations is
superfluous.

While there remove the unused nlookup field.

ok mpi

sys/miscfs/fuse/fuse_lookup.c
sys/miscfs/fuse/fuse_vfsops.c
sys/miscfs/fuse/fuse_vnops.c
sys/miscfs/fuse/fusefs_node.h

index e9bf8bf..aa33ce5 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: fuse_lookup.c,v 1.11 2016/03/19 12:04:15 natano Exp $ */
+/* $OpenBSD: fuse_lookup.c,v 1.12 2016/08/12 20:18:44 natano Exp $ */
 /*
  * Copyright (c) 2012-2013 Sylvestre Gallon <ccna.syl@gmail.com>
  *
@@ -147,7 +147,6 @@ fusefs_lookup(void *v)
                        goto out;
 
                tdp->v_type = IFTOVT(fbuf->fb_vattr.va_mode);
-               VTOI(tdp)->vtype = tdp->v_type;
                *vpp = tdp;
                cnp->cn_flags |= SAVENAME;
 
@@ -183,10 +182,8 @@ fusefs_lookup(void *v)
        } else {
                error = VFS_VGET(fmp->mp, nid, &tdp);
 
-               if (!error) {
+               if (!error)
                        tdp->v_type = IFTOVT(fbuf->fb_vattr.va_mode);
-                       VTOI(tdp)->vtype = tdp->v_type;
-               }
 
                update_vattr(fmp->mp, &fbuf->fb_vattr);
 
index 60073bb..c98ec6c 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: fuse_vfsops.c,v 1.23 2016/06/19 11:54:33 natano Exp $ */
+/* $OpenBSD: fuse_vfsops.c,v 1.24 2016/08/12 20:18:44 natano Exp $ */
 /*
  * Copyright (c) 2012-2013 Sylvestre Gallon <ccna.syl@gmail.com>
  *
@@ -170,15 +170,12 @@ int
 fusefs_root(struct mount *mp, struct vnode **vpp)
 {
        struct vnode *nvp;
-       struct fusefs_node *ip;
        int error;
 
        if ((error = VFS_VGET(mp, (ino_t)FUSE_ROOTINO, &nvp)) != 0)
                return (error);
 
-       ip = VTOI(nvp);
        nvp->v_type = VDIR;
-       ip->vtype = VDIR;
 
        *vpp = nvp;
        return (0);
index 904081d..39d8e08 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: fuse_vnops.c,v 1.28 2016/06/19 11:54:33 natano Exp $ */
+/* $OpenBSD: fuse_vnops.c,v 1.29 2016/08/12 20:18:44 natano Exp $ */
 /*
  * Copyright (c) 2012-2013 Sylvestre Gallon <ccna.syl@gmail.com>
  *
@@ -235,7 +235,7 @@ fusefs_open(void *v)
                return (ENXIO);
 
        isdir = 0;
-       if (ip->vtype == VDIR)
+       if (ap->a_vp->v_type == VDIR)
                isdir = 1;
        else {
                if ((ap->a_mode & FREAD) && (ap->a_mode & FWRITE)) {
@@ -274,7 +274,7 @@ fusefs_close(void *v)
        if (!fmp->sess_init)
                return (0);
 
-       if (ip->vtype == VDIR) {
+       if (ap->a_vp->v_type == VDIR) {
                isdir = 1;
 
                if (ip->fufh[fufh_type].fh_type != FUFH_INVALID)
@@ -665,7 +665,6 @@ fusefs_symlink(void *v)
        }
 
        tdp->v_type = VLNK;
-       VTOI(tdp)->vtype = tdp->v_type;
        VTOI(tdp)->parent = dp->ufs_ino.i_number;
        VN_KNOTE(ap->a_dvp, NOTE_WRITE);
 
@@ -762,7 +761,7 @@ fusefs_inactive(void *v)
                fufh = &(ip->fufh[type]);
                if (fufh->fh_type != FUFH_INVALID)
                        fusefs_file_close(fmp, ip, fufh->fh_type, type,
-                           (ip->vtype == VDIR), ap->a_p);
+                           (vp->v_type == VDIR), ap->a_p);
        }
 
        error = VOP_GETATTR(vp, &vattr, cred, p);
@@ -835,7 +834,7 @@ fusefs_reclaim(void *v)
                if (fufh->fh_type != FUFH_INVALID) {
                        printf("fusefs: vnode being reclaimed is valid\n");
                        fusefs_file_close(fmp, ip, fufh->fh_type, type,
-                           (ip->vtype == VDIR), ap->a_p);
+                           (vp->v_type == VDIR), ap->a_p);
                }
        }
        /*
@@ -932,8 +931,6 @@ fusefs_create(void *v)
        }
 
        tdp->v_type = IFTOVT(fbuf->fb_io_mode);
-       VTOI(tdp)->vtype = tdp->v_type;
-
        if (dvp != NULL && dvp->v_type == VDIR)
                VTOI(tdp)->parent = ip->ufs_ino.i_number;
 
@@ -998,8 +995,6 @@ fusefs_mknod(void *v)
        }
 
        tdp->v_type = IFTOVT(fbuf->fb_io_mode);
-       VTOI(tdp)->vtype = tdp->v_type;
-
        if (dvp != NULL && dvp->v_type == VDIR)
                VTOI(tdp)->parent = ip->ufs_ino.i_number;
 
@@ -1211,7 +1206,7 @@ abortit:
         * "ls" or "pwd" with the "." directory entry missing, and "cd .."
         * doesn't work if the ".." entry is missing.
         */
-       if (ip->vtype == VDIR) {
+       if (fvp->v_type == VDIR) {
                /*
                 * Avoid ".", "..", and aliases of "." for obvious reasons.
                 */
@@ -1325,8 +1320,6 @@ fusefs_mkdir(void *v)
        }
 
        tdp->v_type = IFTOVT(fbuf->fb_io_mode);
-       VTOI(tdp)->vtype = tdp->v_type;
-
        if (dvp != NULL && dvp->v_type == VDIR)
                VTOI(tdp)->parent = ip->ufs_ino.i_number;
 
index d3c146d..da66248 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: fusefs_node.h,v 1.2 2014/02/01 09:30:38 syl Exp $ */
+/* $OpenBSD: fusefs_node.h,v 1.3 2016/08/12 20:18:44 natano Exp $ */
 /*
  * Copyright (c) 2012-2013 Sylvestre Gallon <ccna.syl@gmail.com>
  *
@@ -46,8 +46,6 @@ struct fusefs_node {
 
        /** meta **/
        off_t             filesize;
-       uint64_t          nlookup;
-       enum vtype        vtype;
 };
 
 #ifdef ITOV