Module Name: src Committed By: dholland Date: Tue Jun 29 22:34:10 UTC 2021
Modified Files: src/sys/coda: coda_vnops.c src/sys/fs/adosfs: advnops.c src/sys/fs/autofs: autofs_vnops.c src/sys/fs/cd9660: cd9660_vnops.c src/sys/fs/efs: efs_vnops.c src/sys/fs/filecorefs: filecore_vnops.c src/sys/fs/hfs: hfs_vnops.c src/sys/fs/msdosfs: msdosfs_vnops.c src/sys/fs/nilfs: nilfs_vnops.c src/sys/fs/ntfs: ntfs_vnops.c src/sys/fs/ptyfs: ptyfs_vnops.c src/sys/fs/puffs: puffs_vnops.c src/sys/fs/sysvbfs: sysvbfs.c src/sys/fs/tmpfs: tmpfs_fifoops.c tmpfs_specops.c tmpfs_vnops.c src/sys/fs/udf: udf_vnops.c src/sys/fs/union: union_vnops.c src/sys/fs/unionfs: unionfs_vnops.c src/sys/fs/v7fs: v7fs_extern.c src/sys/kern: vfs_lookup.c vnode_if.src src/sys/miscfs/deadfs: dead_vnops.c src/sys/miscfs/fdesc: fdesc_vnops.c src/sys/miscfs/fifofs: fifo_vnops.c src/sys/miscfs/genfs: genfs.h genfs_vnops.c src/sys/miscfs/kernfs: kernfs_vnops.c src/sys/miscfs/procfs: procfs_vnops.c src/sys/miscfs/specfs: spec_vnops.c src/sys/nfs: nfs_vnops.c src/sys/rump/librump/rumpvfs: rumpfs.c src/sys/ufs/chfs: chfs_vnops.c src/sys/ufs/ext2fs: ext2fs_vnops.c src/sys/ufs/ffs: ffs_vnops.c src/sys/ufs/lfs: lfs_vnops.c src/sys/ufs/mfs: mfs_vnops.c Log Message: - Add a new vnode op: VOP_PARSEPATH. - Move namei_getcomponent to genfs_vnops.c and call it genfs_parsepath. - Add a parsepath entry to every vnode ops table. VOP_PARSEPATH takes a directory vnode to be searched and a complete following path and chooses how much of that path to consume. To begin with, all parsepath calls are genfs_parsepath, which locates the first '/' as always. Note that the call doesn't take the whole struct componentname, only the string. The other bits of struct componentname should not be needed and there's no reason to cause potential complications by exposing them. To generate a diff of this commit: cvs rdiff -u -r1.114 -r1.115 src/sys/coda/coda_vnops.c cvs rdiff -u -r1.55 -r1.56 src/sys/fs/adosfs/advnops.c cvs rdiff -u -r1.6 -r1.7 src/sys/fs/autofs/autofs_vnops.c cvs rdiff -u -r1.58 -r1.59 src/sys/fs/cd9660/cd9660_vnops.c cvs rdiff -u -r1.41 -r1.42 src/sys/fs/efs/efs_vnops.c cvs rdiff -u -r1.47 -r1.48 src/sys/fs/filecorefs/filecore_vnops.c cvs rdiff -u -r1.36 -r1.37 src/sys/fs/hfs/hfs_vnops.c cvs rdiff -u -r1.104 -r1.105 src/sys/fs/msdosfs/msdosfs_vnops.c cvs rdiff -u -r1.42 -r1.43 src/sys/fs/nilfs/nilfs_vnops.c cvs rdiff -u -r1.65 -r1.66 src/sys/fs/ntfs/ntfs_vnops.c cvs rdiff -u -r1.63 -r1.64 src/sys/fs/ptyfs/ptyfs_vnops.c cvs rdiff -u -r1.217 -r1.218 src/sys/fs/puffs/puffs_vnops.c cvs rdiff -u -r1.18 -r1.19 src/sys/fs/sysvbfs/sysvbfs.c cvs rdiff -u -r1.12 -r1.13 src/sys/fs/tmpfs/tmpfs_fifoops.c cvs rdiff -u -r1.13 -r1.14 src/sys/fs/tmpfs/tmpfs_specops.c cvs rdiff -u -r1.145 -r1.146 src/sys/fs/tmpfs/tmpfs_vnops.c cvs rdiff -u -r1.114 -r1.115 src/sys/fs/udf/udf_vnops.c cvs rdiff -u -r1.74 -r1.75 src/sys/fs/union/union_vnops.c cvs rdiff -u -r1.14 -r1.15 src/sys/fs/unionfs/unionfs_vnops.c cvs rdiff -u -r1.7 -r1.8 src/sys/fs/v7fs/v7fs_extern.c cvs rdiff -u -r1.227 -r1.228 src/sys/kern/vfs_lookup.c cvs rdiff -u -r1.80 -r1.81 src/sys/kern/vnode_if.src cvs rdiff -u -r1.63 -r1.64 src/sys/miscfs/deadfs/dead_vnops.c cvs rdiff -u -r1.136 -r1.137 src/sys/miscfs/fdesc/fdesc_vnops.c cvs rdiff -u -r1.82 -r1.83 src/sys/miscfs/fifofs/fifo_vnops.c cvs rdiff -u -r1.36 -r1.37 src/sys/miscfs/genfs/genfs.h cvs rdiff -u -r1.210 -r1.211 src/sys/miscfs/genfs/genfs_vnops.c cvs rdiff -u -r1.167 -r1.168 src/sys/miscfs/kernfs/kernfs_vnops.c cvs rdiff -u -r1.216 -r1.217 src/sys/miscfs/procfs/procfs_vnops.c cvs rdiff -u -r1.181 -r1.182 src/sys/miscfs/specfs/spec_vnops.c cvs rdiff -u -r1.317 -r1.318 src/sys/nfs/nfs_vnops.c cvs rdiff -u -r1.162 -r1.163 src/sys/rump/librump/rumpvfs/rumpfs.c cvs rdiff -u -r1.42 -r1.43 src/sys/ufs/chfs/chfs_vnops.c cvs rdiff -u -r1.132 -r1.133 src/sys/ufs/ext2fs/ext2fs_vnops.c cvs rdiff -u -r1.133 -r1.134 src/sys/ufs/ffs/ffs_vnops.c cvs rdiff -u -r1.336 -r1.337 src/sys/ufs/lfs/lfs_vnops.c cvs rdiff -u -r1.61 -r1.62 src/sys/ufs/mfs/mfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/coda/coda_vnops.c diff -u src/sys/coda/coda_vnops.c:1.114 src/sys/coda/coda_vnops.c:1.115 --- src/sys/coda/coda_vnops.c:1.114 Sat Nov 14 11:42:56 2020 +++ src/sys/coda/coda_vnops.c Tue Jun 29 22:34:05 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: coda_vnops.c,v 1.114 2020/11/14 11:42:56 hannken Exp $ */ +/* $NetBSD: coda_vnops.c,v 1.115 2021/06/29 22:34:05 dholland Exp $ */ /* * @@ -46,7 +46,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: coda_vnops.c,v 1.114 2020/11/14 11:42:56 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: coda_vnops.c,v 1.115 2021/06/29 22:34:05 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -101,6 +101,7 @@ static int coda_lockdebug = 0; const struct vnodeopv_entry_desc coda_vnodeop_entries[] = { { &vop_default_desc, coda_vop_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, coda_lookup }, /* lookup */ { &vop_create_desc, coda_create }, /* create */ { &vop_mknod_desc, coda_vop_error }, /* mknod */ Index: src/sys/fs/adosfs/advnops.c diff -u src/sys/fs/adosfs/advnops.c:1.55 src/sys/fs/adosfs/advnops.c:1.56 --- src/sys/fs/adosfs/advnops.c:1.55 Sat Jun 27 17:29:17 2020 +++ src/sys/fs/adosfs/advnops.c Tue Jun 29 22:34:05 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: advnops.c,v 1.55 2020/06/27 17:29:17 christos Exp $ */ +/* $NetBSD: advnops.c,v 1.56 2021/06/29 22:34:05 dholland Exp $ */ /* * Copyright (c) 1994 Christian E. Hopps @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: advnops.c,v 1.55 2020/06/27 17:29:17 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: advnops.c,v 1.56 2021/06/29 22:34:05 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -95,6 +95,7 @@ int adosfs_pathconf(void *); const struct vnodeopv_entry_desc adosfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, adosfs_lookup }, /* lookup */ { &vop_create_desc, adosfs_create }, /* create */ { &vop_mknod_desc, adosfs_mknod }, /* mknod */ Index: src/sys/fs/autofs/autofs_vnops.c diff -u src/sys/fs/autofs/autofs_vnops.c:1.6 src/sys/fs/autofs/autofs_vnops.c:1.7 --- src/sys/fs/autofs/autofs_vnops.c:1.6 Sat May 16 18:31:48 2020 +++ src/sys/fs/autofs/autofs_vnops.c Tue Jun 29 22:34:06 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: autofs_vnops.c,v 1.6 2020/05/16 18:31:48 christos Exp $ */ +/* $NetBSD: autofs_vnops.c,v 1.7 2021/06/29 22:34:06 dholland Exp $ */ /*- * Copyright (c) 2017 The NetBSD Foundation, Inc. * Copyright (c) 2016 The DragonFly Project @@ -34,7 +34,7 @@ * */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: autofs_vnops.c,v 1.6 2020/05/16 18:31:48 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: autofs_vnops.c,v 1.7 2021/06/29 22:34:06 dholland Exp $"); #include "autofs.h" @@ -587,6 +587,7 @@ autofs_reclaim(void *v) int (**autofs_vnodeop_p)(void *); static const struct vnodeopv_entry_desc autofs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, { &vop_lookup_desc, autofs_lookup }, { &vop_open_desc, autofs_open }, { &vop_close_desc, autofs_close }, Index: src/sys/fs/cd9660/cd9660_vnops.c diff -u src/sys/fs/cd9660/cd9660_vnops.c:1.58 src/sys/fs/cd9660/cd9660_vnops.c:1.59 --- src/sys/fs/cd9660/cd9660_vnops.c:1.58 Sat Jun 27 17:29:17 2020 +++ src/sys/fs/cd9660/cd9660_vnops.c Tue Jun 29 22:34:06 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: cd9660_vnops.c,v 1.58 2020/06/27 17:29:17 christos Exp $ */ +/* $NetBSD: cd9660_vnops.c,v 1.59 2021/06/29 22:34:06 dholland Exp $ */ /*- * Copyright (c) 1994 @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cd9660_vnops.c,v 1.58 2020/06/27 17:29:17 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cd9660_vnops.c,v 1.59 2021/06/29 22:34:06 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -849,6 +849,7 @@ cd9660_setattr(void *v) int (**cd9660_vnodeop_p)(void *); const struct vnodeopv_entry_desc cd9660_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, cd9660_lookup }, /* lookup */ { &vop_create_desc, cd9660_create }, /* create */ { &vop_mknod_desc, cd9660_mknod }, /* mknod */ @@ -902,6 +903,7 @@ const struct vnodeopv_desc cd9660_vnodeo int (**cd9660_specop_p)(void *); const struct vnodeopv_entry_desc cd9660_specop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, spec_lookup }, /* lookup */ { &vop_create_desc, spec_create }, /* create */ { &vop_mknod_desc, spec_mknod }, /* mknod */ @@ -953,6 +955,7 @@ const struct vnodeopv_desc cd9660_specop int (**cd9660_fifoop_p)(void *); const struct vnodeopv_entry_desc cd9660_fifoop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, vn_fifo_bypass }, /* lookup */ { &vop_create_desc, vn_fifo_bypass }, /* create */ { &vop_mknod_desc, vn_fifo_bypass }, /* mknod */ Index: src/sys/fs/efs/efs_vnops.c diff -u src/sys/fs/efs/efs_vnops.c:1.41 src/sys/fs/efs/efs_vnops.c:1.42 --- src/sys/fs/efs/efs_vnops.c:1.41 Sat Jun 27 17:29:17 2020 +++ src/sys/fs/efs/efs_vnops.c Tue Jun 29 22:34:06 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: efs_vnops.c,v 1.41 2020/06/27 17:29:17 christos Exp $ */ +/* $NetBSD: efs_vnops.c,v 1.42 2021/06/29 22:34:06 dholland Exp $ */ /* * Copyright (c) 2006 Stephen M. Rumble <rum...@ephemeral.org> @@ -17,7 +17,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.41 2020/06/27 17:29:17 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.42 2021/06/29 22:34:06 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -783,6 +783,7 @@ efs_advlock(void *v) int (**efs_vnodeop_p)(void *); const struct vnodeopv_entry_desc efs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error}, /* error handler */ + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, efs_lookup }, /* lookup */ { &vop_create_desc, genfs_eopnotsupp}, /* create */ { &vop_mknod_desc, genfs_eopnotsupp}, /* mknod */ @@ -842,6 +843,7 @@ const struct vnodeopv_desc efs_vnodeop_o int (**efs_specop_p)(void *); const struct vnodeopv_entry_desc efs_specop_entries[] = { { &vop_default_desc, vn_default_error}, /* error handler */ + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, spec_lookup }, /* lookup */ { &vop_create_desc, spec_create }, /* create */ { &vop_mknod_desc, spec_mknod }, /* mknod */ @@ -901,6 +903,7 @@ const struct vnodeopv_desc efs_specop_op int (**efs_fifoop_p)(void *); const struct vnodeopv_entry_desc efs_fifoop_entries[] = { { &vop_default_desc, vn_default_error}, /* error handler */ + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, vn_fifo_bypass }, /* lookup */ { &vop_create_desc, vn_fifo_bypass }, /* create */ { &vop_mknod_desc, vn_fifo_bypass }, /* mknod */ Index: src/sys/fs/filecorefs/filecore_vnops.c diff -u src/sys/fs/filecorefs/filecore_vnops.c:1.47 src/sys/fs/filecorefs/filecore_vnops.c:1.48 --- src/sys/fs/filecorefs/filecore_vnops.c:1.47 Sat Jun 27 17:29:18 2020 +++ src/sys/fs/filecorefs/filecore_vnops.c Tue Jun 29 22:34:06 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: filecore_vnops.c,v 1.47 2020/06/27 17:29:18 christos Exp $ */ +/* $NetBSD: filecore_vnops.c,v 1.48 2021/06/29 22:34:06 dholland Exp $ */ /*- * Copyright (c) 1994 The Regents of the University of California. @@ -66,7 +66,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: filecore_vnops.c,v 1.47 2020/06/27 17:29:18 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: filecore_vnops.c,v 1.48 2021/06/29 22:34:06 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -554,6 +554,7 @@ filecore_pathconf(void *v) int (**filecore_vnodeop_p)(void *); const struct vnodeopv_entry_desc filecore_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, filecore_lookup }, /* lookup */ { &vop_create_desc, filecore_create }, /* create */ { &vop_mknod_desc, filecore_mknod }, /* mknod */ Index: src/sys/fs/hfs/hfs_vnops.c diff -u src/sys/fs/hfs/hfs_vnops.c:1.36 src/sys/fs/hfs/hfs_vnops.c:1.37 --- src/sys/fs/hfs/hfs_vnops.c:1.36 Sat May 16 18:31:49 2020 +++ src/sys/fs/hfs/hfs_vnops.c Tue Jun 29 22:34:06 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: hfs_vnops.c,v 1.36 2020/05/16 18:31:49 christos Exp $ */ +/* $NetBSD: hfs_vnops.c,v 1.37 2021/06/29 22:34:06 dholland Exp $ */ /*- * Copyright (c) 2005, 2007 The NetBSD Foundation, Inc. @@ -101,7 +101,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: hfs_vnops.c,v 1.36 2020/05/16 18:31:49 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hfs_vnops.c,v 1.37 2021/06/29 22:34:06 dholland Exp $"); #ifdef _KERNEL_OPT #include "opt_ipsec.h" @@ -155,6 +155,7 @@ int hfs_vop_print(void *); int (**hfs_vnodeop_p) (void *); const struct vnodeopv_entry_desc hfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, hfs_vop_lookup }, /* lookup */ { &vop_create_desc, genfs_eopnotsupp }, /* create */ { &vop_whiteout_desc, genfs_eopnotsupp }, /* whiteout */ @@ -213,6 +214,7 @@ const struct vnodeopv_desc hfs_vnodeop_o int (**hfs_specop_p) (void *); const struct vnodeopv_entry_desc hfs_specop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, spec_lookup }, /* lookup */ { &vop_create_desc, spec_create }, /* create */ { &vop_mknod_desc, spec_mknod }, /* mknod */ @@ -272,6 +274,7 @@ const struct vnodeopv_desc hfs_specop_op int (**hfs_fifoop_p) (void *); const struct vnodeopv_entry_desc hfs_fifoop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, vn_fifo_bypass }, /* lookup */ { &vop_create_desc, vn_fifo_bypass }, /* create */ { &vop_mknod_desc, vn_fifo_bypass }, /* mknod */ Index: src/sys/fs/msdosfs/msdosfs_vnops.c diff -u src/sys/fs/msdosfs/msdosfs_vnops.c:1.104 src/sys/fs/msdosfs/msdosfs_vnops.c:1.105 --- src/sys/fs/msdosfs/msdosfs_vnops.c:1.104 Sat Jun 27 17:29:18 2020 +++ src/sys/fs/msdosfs/msdosfs_vnops.c Tue Jun 29 22:34:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: msdosfs_vnops.c,v 1.104 2020/06/27 17:29:18 christos Exp $ */ +/* $NetBSD: msdosfs_vnops.c,v 1.105 2021/06/29 22:34:07 dholland Exp $ */ /*- * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank. @@ -48,7 +48,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.104 2020/06/27 17:29:18 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.105 2021/06/29 22:34:07 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1841,6 +1841,7 @@ msdosfs_detimes(struct denode *dep, cons int (**msdosfs_vnodeop_p)(void *); const struct vnodeopv_entry_desc msdosfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, msdosfs_lookup }, /* lookup */ { &vop_create_desc, msdosfs_create }, /* create */ { &vop_mknod_desc, genfs_eopnotsupp }, /* mknod */ Index: src/sys/fs/nilfs/nilfs_vnops.c diff -u src/sys/fs/nilfs/nilfs_vnops.c:1.42 src/sys/fs/nilfs/nilfs_vnops.c:1.43 --- src/sys/fs/nilfs/nilfs_vnops.c:1.42 Sat Jun 27 17:29:18 2020 +++ src/sys/fs/nilfs/nilfs_vnops.c Tue Jun 29 22:34:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: nilfs_vnops.c,v 1.42 2020/06/27 17:29:18 christos Exp $ */ +/* $NetBSD: nilfs_vnops.c,v 1.43 2021/06/29 22:34:07 dholland Exp $ */ /* * Copyright (c) 2008, 2009 Reinoud Zandijk @@ -28,7 +28,7 @@ #include <sys/cdefs.h> #ifndef lint -__KERNEL_RCSID(0, "$NetBSD: nilfs_vnops.c,v 1.42 2020/06/27 17:29:18 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nilfs_vnops.c,v 1.43 2021/06/29 22:34:07 dholland Exp $"); #endif /* not lint */ @@ -1543,6 +1543,7 @@ int (**nilfs_vnodeop_p) __P((void *)); const struct vnodeopv_entry_desc nilfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, nilfs_lookup }, /* lookup */ { &vop_create_desc, nilfs_create }, /* create */ { &vop_mknod_desc, nilfs_mknod }, /* mknod */ /* TODO */ Index: src/sys/fs/ntfs/ntfs_vnops.c diff -u src/sys/fs/ntfs/ntfs_vnops.c:1.65 src/sys/fs/ntfs/ntfs_vnops.c:1.66 --- src/sys/fs/ntfs/ntfs_vnops.c:1.65 Sat Jun 27 17:29:18 2020 +++ src/sys/fs/ntfs/ntfs_vnops.c Tue Jun 29 22:34:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ntfs_vnops.c,v 1.65 2020/06/27 17:29:18 christos Exp $ */ +/* $NetBSD: ntfs_vnops.c,v 1.66 2021/06/29 22:34:07 dholland Exp $ */ /* * Copyright (c) 1992, 1993 @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ntfs_vnops.c,v 1.65 2020/06/27 17:29:18 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ntfs_vnops.c,v 1.66 2021/06/29 22:34:07 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -808,6 +808,7 @@ vop_t **ntfs_vnodeop_p; const struct vnodeopv_entry_desc ntfs_vnodeop_entries[] = { { &vop_default_desc, (vop_t *) ntfs_bypass }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, (vop_t *) ntfs_lookup }, /* lookup */ { &vop_create_desc, genfs_eopnotsupp }, /* create */ { &vop_mknod_desc, genfs_eopnotsupp }, /* mknod */ Index: src/sys/fs/ptyfs/ptyfs_vnops.c diff -u src/sys/fs/ptyfs/ptyfs_vnops.c:1.63 src/sys/fs/ptyfs/ptyfs_vnops.c:1.64 --- src/sys/fs/ptyfs/ptyfs_vnops.c:1.63 Mon Jun 28 17:52:12 2021 +++ src/sys/fs/ptyfs/ptyfs_vnops.c Tue Jun 29 22:34:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ptyfs_vnops.c,v 1.63 2021/06/28 17:52:12 chs Exp $ */ +/* $NetBSD: ptyfs_vnops.c,v 1.64 2021/06/29 22:34:07 dholland Exp $ */ /* * Copyright (c) 1993, 1995 @@ -76,7 +76,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ptyfs_vnops.c,v 1.63 2021/06/28 17:52:12 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ptyfs_vnops.c,v 1.64 2021/06/29 22:34:07 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -166,6 +166,7 @@ static int atoi(const char *, size_t); int (**ptyfs_vnodeop_p)(void *); const struct vnodeopv_entry_desc ptyfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, ptyfs_lookup }, /* lookup */ { &vop_create_desc, ptyfs_create }, /* create */ { &vop_mknod_desc, ptyfs_mknod }, /* mknod */ Index: src/sys/fs/puffs/puffs_vnops.c diff -u src/sys/fs/puffs/puffs_vnops.c:1.217 src/sys/fs/puffs/puffs_vnops.c:1.218 --- src/sys/fs/puffs/puffs_vnops.c:1.217 Sat May 16 18:31:49 2020 +++ src/sys/fs/puffs/puffs_vnops.c Tue Jun 29 22:34:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: puffs_vnops.c,v 1.217 2020/05/16 18:31:49 christos Exp $ */ +/* $NetBSD: puffs_vnops.c,v 1.218 2021/06/29 22:34:07 dholland Exp $ */ /* * Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.217 2020/05/16 18:31:49 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.218 2021/06/29 22:34:07 dholland Exp $"); #include <sys/param.h> #include <sys/buf.h> @@ -105,6 +105,7 @@ int puffs_vnop_checkop(void *); int (**puffs_vnodeop_p)(void *); const struct vnodeopv_entry_desc puffs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, puffs_vnop_lookup }, /* REAL lookup */ { &vop_create_desc, puffs_vnop_checkop }, /* create */ { &vop_mknod_desc, puffs_vnop_checkop }, /* mknod */ @@ -163,6 +164,7 @@ const struct vnodeopv_desc puffs_vnodeop int (**puffs_specop_p)(void *); const struct vnodeopv_entry_desc puffs_specop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, spec_lookup }, /* lookup, ENOTDIR */ { &vop_create_desc, spec_create }, /* genfs_badop */ { &vop_mknod_desc, spec_mknod }, /* genfs_badop */ @@ -223,6 +225,7 @@ const struct vnodeopv_desc puffs_specop_ int (**puffs_fifoop_p)(void *); const struct vnodeopv_entry_desc puffs_fifoop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, vn_fifo_bypass }, /* lookup, ENOTDIR */ { &vop_create_desc, vn_fifo_bypass }, /* genfs_badop */ { &vop_mknod_desc, vn_fifo_bypass }, /* genfs_badop */ @@ -283,6 +286,7 @@ const struct vnodeopv_desc puffs_fifoop_ int (**puffs_msgop_p)(void *); const struct vnodeopv_entry_desc puffs_msgop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, { &vop_create_desc, puffs_vnop_create }, /* create */ { &vop_mknod_desc, puffs_vnop_mknod }, /* mknod */ { &vop_open_desc, puffs_vnop_open }, /* open */ Index: src/sys/fs/sysvbfs/sysvbfs.c diff -u src/sys/fs/sysvbfs/sysvbfs.c:1.18 src/sys/fs/sysvbfs/sysvbfs.c:1.19 --- src/sys/fs/sysvbfs/sysvbfs.c:1.18 Sat May 16 18:31:49 2020 +++ src/sys/fs/sysvbfs/sysvbfs.c Tue Jun 29 22:34:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: sysvbfs.c,v 1.18 2020/05/16 18:31:49 christos Exp $ */ +/* $NetBSD: sysvbfs.c,v 1.19 2021/06/29 22:34:07 dholland Exp $ */ /*- * Copyright (c) 2004 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sysvbfs.c,v 1.18 2020/05/16 18:31:49 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sysvbfs.c,v 1.19 2021/06/29 22:34:07 dholland Exp $"); #include <sys/resource.h> #include <sys/param.h> @@ -49,6 +49,7 @@ int (**sysvbfs_vnodeop_p)(void *); /* fi const struct vnodeopv_entry_desc sysvbfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, sysvbfs_lookup }, /* lookup */ { &vop_create_desc, sysvbfs_create }, /* create */ { &vop_mknod_desc, genfs_eopnotsupp }, /* mknod */ Index: src/sys/fs/tmpfs/tmpfs_fifoops.c diff -u src/sys/fs/tmpfs/tmpfs_fifoops.c:1.12 src/sys/fs/tmpfs/tmpfs_fifoops.c:1.13 --- src/sys/fs/tmpfs/tmpfs_fifoops.c:1.12 Sat May 16 18:31:49 2020 +++ src/sys/fs/tmpfs/tmpfs_fifoops.c Tue Jun 29 22:34:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: tmpfs_fifoops.c,v 1.12 2020/05/16 18:31:49 christos Exp $ */ +/* $NetBSD: tmpfs_fifoops.c,v 1.13 2021/06/29 22:34:07 dholland Exp $ */ /* * Copyright (c) 2005 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tmpfs_fifoops.c,v 1.12 2020/05/16 18:31:49 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tmpfs_fifoops.c,v 1.13 2021/06/29 22:34:07 dholland Exp $"); #include <sys/param.h> #include <sys/vnode.h> @@ -49,6 +49,7 @@ __KERNEL_RCSID(0, "$NetBSD: tmpfs_fifoop int (**tmpfs_fifoop_p)(void *); const struct vnodeopv_entry_desc tmpfs_fifoop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, { &vop_lookup_desc, tmpfs_fifo_lookup }, { &vop_create_desc, tmpfs_fifo_create }, { &vop_mknod_desc, tmpfs_fifo_mknod }, Index: src/sys/fs/tmpfs/tmpfs_specops.c diff -u src/sys/fs/tmpfs/tmpfs_specops.c:1.13 src/sys/fs/tmpfs/tmpfs_specops.c:1.14 --- src/sys/fs/tmpfs/tmpfs_specops.c:1.13 Sat May 16 18:31:49 2020 +++ src/sys/fs/tmpfs/tmpfs_specops.c Tue Jun 29 22:34:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: tmpfs_specops.c,v 1.13 2020/05/16 18:31:49 christos Exp $ */ +/* $NetBSD: tmpfs_specops.c,v 1.14 2021/06/29 22:34:07 dholland Exp $ */ /* * Copyright (c) 2005 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tmpfs_specops.c,v 1.13 2020/05/16 18:31:49 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tmpfs_specops.c,v 1.14 2021/06/29 22:34:07 dholland Exp $"); #include <sys/param.h> #include <sys/vnode.h> @@ -52,6 +52,7 @@ int (**tmpfs_specop_p)(void *); const struct vnodeopv_entry_desc tmpfs_specop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, { &vop_lookup_desc, tmpfs_spec_lookup }, { &vop_create_desc, tmpfs_spec_create }, { &vop_mknod_desc, tmpfs_spec_mknod }, Index: src/sys/fs/tmpfs/tmpfs_vnops.c diff -u src/sys/fs/tmpfs/tmpfs_vnops.c:1.145 src/sys/fs/tmpfs/tmpfs_vnops.c:1.146 --- src/sys/fs/tmpfs/tmpfs_vnops.c:1.145 Sun Dec 13 19:22:02 2020 +++ src/sys/fs/tmpfs/tmpfs_vnops.c Tue Jun 29 22:34:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: tmpfs_vnops.c,v 1.145 2020/12/13 19:22:02 chs Exp $ */ +/* $NetBSD: tmpfs_vnops.c,v 1.146 2021/06/29 22:34:07 dholland Exp $ */ /* * Copyright (c) 2005, 2006, 2007, 2020 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.145 2020/12/13 19:22:02 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.146 2021/06/29 22:34:07 dholland Exp $"); #include <sys/param.h> #include <sys/dirent.h> @@ -64,6 +64,7 @@ __KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops. int (**tmpfs_vnodeop_p)(void *); const struct vnodeopv_entry_desc tmpfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, { &vop_lookup_desc, tmpfs_lookup }, { &vop_create_desc, tmpfs_create }, { &vop_mknod_desc, tmpfs_mknod }, Index: src/sys/fs/udf/udf_vnops.c diff -u src/sys/fs/udf/udf_vnops.c:1.114 src/sys/fs/udf/udf_vnops.c:1.115 --- src/sys/fs/udf/udf_vnops.c:1.114 Sat Jun 27 17:29:18 2020 +++ src/sys/fs/udf/udf_vnops.c Tue Jun 29 22:34:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: udf_vnops.c,v 1.114 2020/06/27 17:29:18 christos Exp $ */ +/* $NetBSD: udf_vnops.c,v 1.115 2021/06/29 22:34:07 dholland Exp $ */ /* * Copyright (c) 2006, 2008 Reinoud Zandijk @@ -32,7 +32,7 @@ #include <sys/cdefs.h> #ifndef lint -__KERNEL_RCSID(0, "$NetBSD: udf_vnops.c,v 1.114 2020/06/27 17:29:18 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: udf_vnops.c,v 1.115 2021/06/29 22:34:07 dholland Exp $"); #endif /* not lint */ @@ -2173,6 +2173,7 @@ int (**udf_vnodeop_p)(void *); const struct vnodeopv_entry_desc udf_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, udf_lookup }, /* lookup */ { &vop_create_desc, udf_create }, /* create */ { &vop_mknod_desc, udf_mknod }, /* mknod */ /* TODO */ Index: src/sys/fs/union/union_vnops.c diff -u src/sys/fs/union/union_vnops.c:1.74 src/sys/fs/union/union_vnops.c:1.75 --- src/sys/fs/union/union_vnops.c:1.74 Tue Aug 18 09:44:07 2020 +++ src/sys/fs/union/union_vnops.c Tue Jun 29 22:34:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: union_vnops.c,v 1.74 2020/08/18 09:44:07 hannken Exp $ */ +/* $NetBSD: union_vnops.c,v 1.75 2021/06/29 22:34:07 dholland Exp $ */ /* * Copyright (c) 1992, 1993, 1994, 1995 @@ -72,7 +72,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: union_vnops.c,v 1.74 2020/08/18 09:44:07 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: union_vnops.c,v 1.75 2021/06/29 22:34:07 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -144,6 +144,7 @@ static int union_lookup1(struct vnode *, int (**union_vnodeop_p)(void *); const struct vnodeopv_entry_desc union_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, union_lookup }, /* lookup */ { &vop_create_desc, union_create }, /* create */ { &vop_whiteout_desc, union_whiteout }, /* whiteout */ Index: src/sys/fs/unionfs/unionfs_vnops.c diff -u src/sys/fs/unionfs/unionfs_vnops.c:1.14 src/sys/fs/unionfs/unionfs_vnops.c:1.15 --- src/sys/fs/unionfs/unionfs_vnops.c:1.14 Sat May 16 18:31:50 2020 +++ src/sys/fs/unionfs/unionfs_vnops.c Tue Jun 29 22:34:08 2021 @@ -1814,6 +1814,7 @@ unionfs_revoke(void *v) int (**unionfs_vnodeop_p)(void *); const struct vnodeopv_entry_desc unionfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, unionfs_lookup }, /* lookup */ { &vop_create_desc, unionfs_create }, /* create */ { &vop_whiteout_desc, unionfs_whiteout }, /* whiteout */ Index: src/sys/fs/v7fs/v7fs_extern.c diff -u src/sys/fs/v7fs/v7fs_extern.c:1.7 src/sys/fs/v7fs/v7fs_extern.c:1.8 --- src/sys/fs/v7fs/v7fs_extern.c:1.7 Sat May 16 18:31:50 2020 +++ src/sys/fs/v7fs/v7fs_extern.c Tue Jun 29 22:34:08 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: v7fs_extern.c,v 1.7 2020/05/16 18:31:50 christos Exp $ */ +/* $NetBSD: v7fs_extern.c,v 1.8 2021/06/29 22:34:08 dholland Exp $ */ /*- * Copyright (c) 2004, 2011 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: v7fs_extern.c,v 1.7 2020/05/16 18:31:50 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: v7fs_extern.c,v 1.8 2021/06/29 22:34:08 dholland Exp $"); #if defined _KERNEL_OPT #include "opt_v7fs.h" @@ -55,6 +55,7 @@ int (**v7fs_vnodeop_p)(void *); /* fille const struct vnodeopv_entry_desc v7fs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, v7fs_lookup }, /* lookup */ { &vop_create_desc, v7fs_create }, /* create */ { &vop_mknod_desc, v7fs_mknod }, /* mknod */ @@ -105,6 +106,7 @@ const struct vnodeopv_entry_desc v7fs_vn int (**v7fs_specop_p)(void *); const struct vnodeopv_entry_desc v7fs_specop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, spec_lookup }, /* lookup */ { &vop_create_desc, spec_create }, /* create xxx*/ { &vop_mknod_desc, spec_mknod }, /* mknod xxx*/ @@ -154,6 +156,7 @@ const struct vnodeopv_entry_desc v7fs_sp int (**v7fs_fifoop_p)(void *); const struct vnodeopv_entry_desc v7fs_fifoop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, vn_fifo_bypass }, /* lookup */ { &vop_create_desc, vn_fifo_bypass }, /* create */ { &vop_mknod_desc, vn_fifo_bypass }, /* mknod */ Index: src/sys/kern/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.227 src/sys/kern/vfs_lookup.c:1.228 --- src/sys/kern/vfs_lookup.c:1.227 Tue Jun 29 22:29:59 2021 +++ src/sys/kern/vfs_lookup.c Tue Jun 29 22:34:08 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.227 2021/06/29 22:29:59 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.228 2021/06/29 22:34:08 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vfs_lookup.c,v 1.227 2021/06/29 22:29:59 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vfs_lookup.c,v 1.228 2021/06/29 22:34:08 dholland Exp $"); #ifdef _KERNEL_OPT #include "opt_magiclinks.h" @@ -225,25 +225,6 @@ namei_hash(const char *name, const char return (hash + (hash >> 5)); } -/* - * Find the end of the first path component in NAME and return its - * length. - */ -static int -namei_getcomponent(struct vnode *dvp, const char *name, size_t *ret) -{ - size_t pos; - - (void)dvp; - - pos = 0; - while (name[pos] != '\0' && name[pos] != '/') { - pos++; - } - *ret = pos; - return 0; -} - //////////////////////////////////////////////////////////// /* @@ -865,8 +846,7 @@ lookup_parsepath(struct namei_state *sta * is held. */ cnp->cn_consume = 0; - error = namei_getcomponent(searchdir, cnp->cn_nameptr, - &cnp->cn_namelen); + error = VOP_PARSEPATH(searchdir, cnp->cn_nameptr, &cnp->cn_namelen); if (error) { return error; } @@ -2080,8 +2060,7 @@ do_lookup_for_nfsd_index(struct namei_st ndp->ni_dvp = NULL; cnp->cn_consume = 0; - error = namei_getcomponent(startdir, cnp->cn_nameptr, - &cnp->cn_namelen); + error = VOP_PARSEPATH(startdir, cnp->cn_nameptr, &cnp->cn_namelen); if (error) { return error; } @@ -2216,7 +2195,7 @@ relookup(struct vnode *dvp, struct vnode if ((uint32_t)newhash != (uint32_t)cnp->cn_hash) panic("relookup: bad hash"); #endif - error = namei_getcomponent(dvp, cnp->cn_nameptr, &newlen); + error = VOP_PARSEPATH(dvp, cnp->cn_nameptr, &newlen); if (error) { panic("relookup: parsepath failed with error %d", error); } Index: src/sys/kern/vnode_if.src diff -u src/sys/kern/vnode_if.src:1.80 src/sys/kern/vnode_if.src:1.81 --- src/sys/kern/vnode_if.src:1.80 Mon May 18 08:29:34 2020 +++ src/sys/kern/vnode_if.src Tue Jun 29 22:34:08 2021 @@ -1,4 +1,4 @@ -# $NetBSD: vnode_if.src,v 1.80 2020/05/18 08:29:34 hannken Exp $ +# $NetBSD: vnode_if.src,v 1.81 2021/06/29 22:34:08 dholland Exp $ # # Copyright (c) 1992, 1993 # The Regents of the University of California. All rights reserved. @@ -58,6 +58,15 @@ vop_bwrite { IN struct vnode *vp; IN struct buf *bp; }; + +# +#% parsepath dvp L L L +# +vop_parsepath { + IN struct vnode *dvp; + IN const char *name; + OUT size_t *retval; +}; # #% lookup dvp L L L Index: src/sys/miscfs/deadfs/dead_vnops.c diff -u src/sys/miscfs/deadfs/dead_vnops.c:1.63 src/sys/miscfs/deadfs/dead_vnops.c:1.64 --- src/sys/miscfs/deadfs/dead_vnops.c:1.63 Sun Feb 23 15:46:41 2020 +++ src/sys/miscfs/deadfs/dead_vnops.c Tue Jun 29 22:34:08 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dead_vnops.c,v 1.63 2020/02/23 15:46:41 ad Exp $ */ +/* $NetBSD: dead_vnops.c,v 1.64 2021/06/29 22:34:08 dholland Exp $ */ /* * Copyright (c) 1989, 1993 @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dead_vnops.c,v 1.63 2020/02/23 15:46:41 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dead_vnops.c,v 1.64 2021/06/29 22:34:08 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -82,6 +82,7 @@ int (**dead_vnodeop_p)(void *); const struct vnodeopv_entry_desc dead_vnodeop_entries[] = { { &vop_default_desc, dead_default_error }, { &vop_bwrite_desc, dead_bwrite }, /* bwrite */ + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, dead_lookup }, /* lookup */ { &vop_open_desc, dead_open }, /* open */ { &vop_close_desc, dead_close }, /* close */ Index: src/sys/miscfs/fdesc/fdesc_vnops.c diff -u src/sys/miscfs/fdesc/fdesc_vnops.c:1.136 src/sys/miscfs/fdesc/fdesc_vnops.c:1.137 --- src/sys/miscfs/fdesc/fdesc_vnops.c:1.136 Mon Jun 28 17:52:13 2021 +++ src/sys/miscfs/fdesc/fdesc_vnops.c Tue Jun 29 22:34:08 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: fdesc_vnops.c,v 1.136 2021/06/28 17:52:13 chs Exp $ */ +/* $NetBSD: fdesc_vnops.c,v 1.137 2021/06/29 22:34:08 dholland Exp $ */ /* * Copyright (c) 1992, 1993 @@ -41,7 +41,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: fdesc_vnops.c,v 1.136 2021/06/28 17:52:13 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fdesc_vnops.c,v 1.137 2021/06/29 22:34:08 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -119,6 +119,7 @@ static int fdesc_attr(int, struct vattr int (**fdesc_vnodeop_p)(void *); const struct vnodeopv_entry_desc fdesc_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, fdesc_lookup }, /* lookup */ { &vop_create_desc, fdesc_create }, /* create */ { &vop_mknod_desc, fdesc_mknod }, /* mknod */ Index: src/sys/miscfs/fifofs/fifo_vnops.c diff -u src/sys/miscfs/fifofs/fifo_vnops.c:1.82 src/sys/miscfs/fifofs/fifo_vnops.c:1.83 --- src/sys/miscfs/fifofs/fifo_vnops.c:1.82 Sat Dec 19 22:09:15 2020 +++ src/sys/miscfs/fifofs/fifo_vnops.c Tue Jun 29 22:34:08 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: fifo_vnops.c,v 1.82 2020/12/19 22:09:15 thorpej Exp $ */ +/* $NetBSD: fifo_vnops.c,v 1.83 2021/06/29 22:34:08 dholland Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -58,7 +58,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: fifo_vnops.c,v 1.82 2020/12/19 22:09:15 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fifo_vnops.c,v 1.83 2021/06/29 22:34:08 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -631,6 +631,7 @@ fifo_kqfilter(void *v) int (**fifo_vnodeop_p)(void *); const struct vnodeopv_entry_desc fifo_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, fifo_lookup }, /* lookup */ { &vop_create_desc, genfs_badop }, /* create */ { &vop_mknod_desc, genfs_badop }, /* mknod */ Index: src/sys/miscfs/genfs/genfs.h diff -u src/sys/miscfs/genfs/genfs.h:1.36 src/sys/miscfs/genfs/genfs.h:1.37 --- src/sys/miscfs/genfs/genfs.h:1.36 Fri Aug 7 18:14:21 2020 +++ src/sys/miscfs/genfs/genfs.h Tue Jun 29 22:34:08 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: genfs.h,v 1.36 2020/08/07 18:14:21 christos Exp $ */ +/* $NetBSD: genfs.h,v 1.37 2021/06/29 22:34:08 dholland Exp $ */ #ifndef _MISCFS_GENFS_GENFS_H_ #define _MISCFS_GENFS_GENFS_H_ @@ -27,6 +27,7 @@ int genfs_deadlock(void *); #define genfs_deadislocked genfs_islocked int genfs_deadunlock(void *); +int genfs_parsepath(void *); int genfs_poll(void *); int genfs_kqfilter(void *); int genfs_fcntl(void *); Index: src/sys/miscfs/genfs/genfs_vnops.c diff -u src/sys/miscfs/genfs/genfs_vnops.c:1.210 src/sys/miscfs/genfs/genfs_vnops.c:1.211 --- src/sys/miscfs/genfs/genfs_vnops.c:1.210 Sat Sep 5 16:30:12 2020 +++ src/sys/miscfs/genfs/genfs_vnops.c Tue Jun 29 22:34:08 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: genfs_vnops.c,v 1.210 2020/09/05 16:30:12 riastradh Exp $ */ +/* $NetBSD: genfs_vnops.c,v 1.211 2021/06/29 22:34:08 dholland Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -57,7 +57,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: genfs_vnops.c,v 1.210 2020/09/05 16:30:12 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: genfs_vnops.c,v 1.211 2021/06/29 22:34:08 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -84,6 +84,31 @@ static void filt_genfsdetach(struct knot static int filt_genfsread(struct knote *, long); static int filt_genfsvnode(struct knote *, long); +/* + * Find the end of the first path component in NAME and return its + * length. + */ +int +genfs_parsepath(void *v) +{ + struct vop_parsepath_args /* { + struct vnode *a_dvp; + const char *a_name; + size_t *a_ret; + } */ *ap = v; + const char *name = ap->a_name; + size_t pos; + + (void)ap->a_dvp; + + pos = 0; + while (name[pos] != '\0' && name[pos] != '/') { + pos++; + } + *ap->a_retval = pos; + return 0; +} + int genfs_poll(void *v) { Index: src/sys/miscfs/kernfs/kernfs_vnops.c diff -u src/sys/miscfs/kernfs/kernfs_vnops.c:1.167 src/sys/miscfs/kernfs/kernfs_vnops.c:1.168 --- src/sys/miscfs/kernfs/kernfs_vnops.c:1.167 Mon Jun 28 17:52:13 2021 +++ src/sys/miscfs/kernfs/kernfs_vnops.c Tue Jun 29 22:34:08 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: kernfs_vnops.c,v 1.167 2021/06/28 17:52:13 chs Exp $ */ +/* $NetBSD: kernfs_vnops.c,v 1.168 2021/06/29 22:34:08 dholland Exp $ */ /* * Copyright (c) 1992, 1993 @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kernfs_vnops.c,v 1.167 2021/06/28 17:52:13 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kernfs_vnops.c,v 1.168 2021/06/29 22:34:08 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -182,6 +182,7 @@ static int kernfs_xwrite(const struct ke int (**kernfs_vnodeop_p)(void *); const struct vnodeopv_entry_desc kernfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, kernfs_lookup }, /* lookup */ { &vop_create_desc, kernfs_create }, /* create */ { &vop_mknod_desc, kernfs_mknod }, /* mknod */ @@ -231,6 +232,7 @@ const struct vnodeopv_desc kernfs_vnodeo int (**kernfs_specop_p)(void *); const struct vnodeopv_entry_desc kernfs_specop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, spec_lookup }, /* lookup */ { &vop_create_desc, spec_create }, /* create */ { &vop_mknod_desc, spec_mknod }, /* mknod */ Index: src/sys/miscfs/procfs/procfs_vnops.c diff -u src/sys/miscfs/procfs/procfs_vnops.c:1.216 src/sys/miscfs/procfs/procfs_vnops.c:1.217 --- src/sys/miscfs/procfs/procfs_vnops.c:1.216 Mon Jun 28 17:52:13 2021 +++ src/sys/miscfs/procfs/procfs_vnops.c Tue Jun 29 22:34:09 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: procfs_vnops.c,v 1.216 2021/06/28 17:52:13 chs Exp $ */ +/* $NetBSD: procfs_vnops.c,v 1.217 2021/06/29 22:34:09 dholland Exp $ */ /*- * Copyright (c) 2006, 2007, 2008, 2020 The NetBSD Foundation, Inc. @@ -105,7 +105,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: procfs_vnops.c,v 1.216 2021/06/28 17:52:13 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: procfs_vnops.c,v 1.217 2021/06/29 22:34:09 dholland Exp $"); #include <sys/param.h> #include <sys/atomic.h> @@ -255,6 +255,7 @@ static int atoi(const char *, size_t); int (**procfs_vnodeop_p)(void *); const struct vnodeopv_entry_desc procfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, procfs_lookup }, /* lookup */ { &vop_create_desc, procfs_create }, /* create */ { &vop_mknod_desc, procfs_mknod }, /* mknod */ Index: src/sys/miscfs/specfs/spec_vnops.c diff -u src/sys/miscfs/specfs/spec_vnops.c:1.181 src/sys/miscfs/specfs/spec_vnops.c:1.182 --- src/sys/miscfs/specfs/spec_vnops.c:1.181 Fri Dec 25 09:28:56 2020 +++ src/sys/miscfs/specfs/spec_vnops.c Tue Jun 29 22:34:09 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: spec_vnops.c,v 1.181 2020/12/25 09:28:56 mlelstv Exp $ */ +/* $NetBSD: spec_vnops.c,v 1.182 2021/06/29 22:34:09 dholland Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -58,7 +58,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: spec_vnops.c,v 1.181 2020/12/25 09:28:56 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: spec_vnops.c,v 1.182 2021/06/29 22:34:09 dholland Exp $"); #include <sys/param.h> #include <sys/proc.h> @@ -115,6 +115,7 @@ extern struct mount *dead_rootmount; int (**spec_vnodeop_p)(void *); const struct vnodeopv_entry_desc spec_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, spec_lookup }, /* lookup */ { &vop_create_desc, spec_create }, /* create */ { &vop_mknod_desc, spec_mknod }, /* mknod */ Index: src/sys/nfs/nfs_vnops.c diff -u src/sys/nfs/nfs_vnops.c:1.317 src/sys/nfs/nfs_vnops.c:1.318 --- src/sys/nfs/nfs_vnops.c:1.317 Sat Sep 5 16:30:12 2020 +++ src/sys/nfs/nfs_vnops.c Tue Jun 29 22:34:09 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: nfs_vnops.c,v 1.317 2020/09/05 16:30:12 riastradh Exp $ */ +/* $NetBSD: nfs_vnops.c,v 1.318 2021/06/29 22:34:09 dholland Exp $ */ /* * Copyright (c) 1989, 1993 @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.317 2020/09/05 16:30:12 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.318 2021/06/29 22:34:09 dholland Exp $"); #ifdef _KERNEL_OPT #include "opt_nfs.h" @@ -100,6 +100,7 @@ __KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c, int (**nfsv2_vnodeop_p)(void *); const struct vnodeopv_entry_desc nfsv2_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, nfs_lookup }, /* lookup */ { &vop_create_desc, nfs_create }, /* create */ { &vop_mknod_desc, nfs_mknod }, /* mknod */ @@ -154,6 +155,7 @@ const struct vnodeopv_desc nfsv2_vnodeop int (**spec_nfsv2nodeop_p)(void *); const struct vnodeopv_entry_desc spec_nfsv2nodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, spec_lookup }, /* lookup */ { &vop_create_desc, spec_create }, /* create */ { &vop_mknod_desc, spec_mknod }, /* mknod */ @@ -205,6 +207,7 @@ const struct vnodeopv_desc spec_nfsv2nod int (**fifo_nfsv2nodeop_p)(void *); const struct vnodeopv_entry_desc fifo_nfsv2nodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, vn_fifo_bypass }, /* lookup */ { &vop_create_desc, vn_fifo_bypass }, /* create */ { &vop_mknod_desc, vn_fifo_bypass }, /* mknod */ Index: src/sys/rump/librump/rumpvfs/rumpfs.c diff -u src/sys/rump/librump/rumpvfs/rumpfs.c:1.162 src/sys/rump/librump/rumpvfs/rumpfs.c:1.163 --- src/sys/rump/librump/rumpvfs/rumpfs.c:1.162 Sat May 16 18:31:52 2020 +++ src/sys/rump/librump/rumpvfs/rumpfs.c Tue Jun 29 22:34:09 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpfs.c,v 1.162 2020/05/16 18:31:52 christos Exp $ */ +/* $NetBSD: rumpfs.c,v 1.163 2021/06/29 22:34:09 dholland Exp $ */ /* * Copyright (c) 2009, 2010, 2011 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rumpfs.c,v 1.162 2020/05/16 18:31:52 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rumpfs.c,v 1.163 2021/06/29 22:34:09 dholland Exp $"); #include <sys/param.h> #include <sys/atomic.h> @@ -90,6 +90,7 @@ static int rump_vop_fcntl(void *); int (**rump_vnodeop_p)(void *); const struct vnodeopv_entry_desc rump_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, { &vop_lookup_desc, rump_vop_lookup }, { &vop_getattr_desc, rump_vop_getattr }, { &vop_setattr_desc, rump_vop_setattr }, Index: src/sys/ufs/chfs/chfs_vnops.c diff -u src/sys/ufs/chfs/chfs_vnops.c:1.42 src/sys/ufs/chfs/chfs_vnops.c:1.43 --- src/sys/ufs/chfs/chfs_vnops.c:1.42 Sat Sep 5 16:30:12 2020 +++ src/sys/ufs/chfs/chfs_vnops.c Tue Jun 29 22:34:09 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: chfs_vnops.c,v 1.42 2020/09/05 16:30:12 riastradh Exp $ */ +/* $NetBSD: chfs_vnops.c,v 1.43 2021/06/29 22:34:09 dholland Exp $ */ /*- * Copyright (c) 2010 Department of Software Engineering, @@ -1598,6 +1598,7 @@ int const struct vnodeopv_entry_desc chfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, chfs_lookup }, { &vop_create_desc, chfs_create }, { &vop_mknod_desc, chfs_mknod }, @@ -1657,6 +1658,7 @@ int const struct vnodeopv_entry_desc chfs_specop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, { &vop_lookup_desc, spec_lookup }, { &vop_create_desc, spec_create }, { &vop_mknod_desc, spec_mknod }, @@ -1714,6 +1716,7 @@ int const struct vnodeopv_entry_desc chfs_fifoop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, { &vop_lookup_desc, vn_fifo_bypass }, { &vop_create_desc, vn_fifo_bypass }, { &vop_mknod_desc, vn_fifo_bypass }, Index: src/sys/ufs/ext2fs/ext2fs_vnops.c diff -u src/sys/ufs/ext2fs/ext2fs_vnops.c:1.132 src/sys/ufs/ext2fs/ext2fs_vnops.c:1.133 --- src/sys/ufs/ext2fs/ext2fs_vnops.c:1.132 Sat May 16 18:31:53 2020 +++ src/sys/ufs/ext2fs/ext2fs_vnops.c Tue Jun 29 22:34:09 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ext2fs_vnops.c,v 1.132 2020/05/16 18:31:53 christos Exp $ */ +/* $NetBSD: ext2fs_vnops.c,v 1.133 2021/06/29 22:34:09 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -65,7 +65,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ext2fs_vnops.c,v 1.132 2020/05/16 18:31:53 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ext2fs_vnops.c,v 1.133 2021/06/29 22:34:09 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1094,6 +1094,7 @@ ext2fs_reclaim(void *v) int (**ext2fs_vnodeop_p)(void *); const struct vnodeopv_entry_desc ext2fs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, ext2fs_lookup }, /* lookup */ { &vop_create_desc, ext2fs_create }, /* create */ { &vop_mknod_desc, ext2fs_mknod }, /* mknod */ @@ -1149,6 +1150,7 @@ const struct vnodeopv_desc ext2fs_vnodeo int (**ext2fs_specop_p)(void *); const struct vnodeopv_entry_desc ext2fs_specop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, spec_lookup }, /* lookup */ { &vop_create_desc, spec_create }, /* create */ { &vop_mknod_desc, spec_mknod }, /* mknod */ @@ -1204,6 +1206,7 @@ const struct vnodeopv_desc ext2fs_specop int (**ext2fs_fifoop_p)(void *); const struct vnodeopv_entry_desc ext2fs_fifoop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, vn_fifo_bypass }, /* lookup */ { &vop_create_desc, vn_fifo_bypass }, /* create */ { &vop_mknod_desc, vn_fifo_bypass }, /* mknod */ Index: src/sys/ufs/ffs/ffs_vnops.c diff -u src/sys/ufs/ffs/ffs_vnops.c:1.133 src/sys/ufs/ffs/ffs_vnops.c:1.134 --- src/sys/ufs/ffs/ffs_vnops.c:1.133 Sat Sep 5 16:30:13 2020 +++ src/sys/ufs/ffs/ffs_vnops.c Tue Jun 29 22:34:09 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ffs_vnops.c,v 1.133 2020/09/05 16:30:13 riastradh Exp $ */ +/* $NetBSD: ffs_vnops.c,v 1.134 2021/06/29 22:34:09 dholland Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ffs_vnops.c,v 1.133 2020/09/05 16:30:13 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ffs_vnops.c,v 1.134 2021/06/29 22:34:09 dholland Exp $"); #if defined(_KERNEL_OPT) #include "opt_ffs.h" @@ -102,6 +102,7 @@ __KERNEL_RCSID(0, "$NetBSD: ffs_vnops.c, int (**ffs_vnodeop_p)(void *); const struct vnodeopv_entry_desc ffs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, ufs_lookup }, /* lookup */ { &vop_create_desc, ufs_create }, /* create */ { &vop_whiteout_desc, ufs_whiteout }, /* whiteout */ @@ -163,6 +164,7 @@ const struct vnodeopv_desc ffs_vnodeop_o int (**ffs_specop_p)(void *); const struct vnodeopv_entry_desc ffs_specop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, spec_lookup }, /* lookup */ { &vop_create_desc, spec_create }, /* create */ { &vop_mknod_desc, spec_mknod }, /* mknod */ @@ -223,6 +225,7 @@ const struct vnodeopv_desc ffs_specop_op int (**ffs_fifoop_p)(void *); const struct vnodeopv_entry_desc ffs_fifoop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, vn_fifo_bypass }, /* lookup */ { &vop_create_desc, vn_fifo_bypass }, /* create */ { &vop_mknod_desc, vn_fifo_bypass }, /* mknod */ Index: src/sys/ufs/lfs/lfs_vnops.c diff -u src/sys/ufs/lfs/lfs_vnops.c:1.336 src/sys/ufs/lfs/lfs_vnops.c:1.337 --- src/sys/ufs/lfs/lfs_vnops.c:1.336 Sat Sep 5 16:30:13 2020 +++ src/sys/ufs/lfs/lfs_vnops.c Tue Jun 29 22:34:09 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: lfs_vnops.c,v 1.336 2020/09/05 16:30:13 riastradh Exp $ */ +/* $NetBSD: lfs_vnops.c,v 1.337 2021/06/29 22:34:09 dholland Exp $ */ /*- * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc. @@ -125,7 +125,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.336 2020/09/05 16:30:13 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.337 2021/06/29 22:34:09 dholland Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -182,6 +182,7 @@ static int lfs_makeinode(struct vattr *v int (**lfs_vnodeop_p)(void *); const struct vnodeopv_entry_desc lfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, ulfs_lookup }, /* lookup */ { &vop_create_desc, lfs_create }, /* create */ { &vop_whiteout_desc, ulfs_whiteout }, /* whiteout */ @@ -240,6 +241,7 @@ const struct vnodeopv_desc lfs_vnodeop_o int (**lfs_specop_p)(void *); const struct vnodeopv_entry_desc lfs_specop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, spec_lookup }, /* lookup */ { &vop_create_desc, spec_create }, /* create */ { &vop_mknod_desc, spec_mknod }, /* mknod */ @@ -297,6 +299,7 @@ const struct vnodeopv_desc lfs_specop_op int (**lfs_fifoop_p)(void *); const struct vnodeopv_entry_desc lfs_fifoop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, vn_fifo_bypass }, /* lookup */ { &vop_create_desc, vn_fifo_bypass }, /* create */ { &vop_mknod_desc, vn_fifo_bypass }, /* mknod */ Index: src/sys/ufs/mfs/mfs_vnops.c diff -u src/sys/ufs/mfs/mfs_vnops.c:1.61 src/sys/ufs/mfs/mfs_vnops.c:1.62 --- src/sys/ufs/mfs/mfs_vnops.c:1.61 Sat May 16 18:31:54 2020 +++ src/sys/ufs/mfs/mfs_vnops.c Tue Jun 29 22:34:10 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: mfs_vnops.c,v 1.61 2020/05/16 18:31:54 christos Exp $ */ +/* $NetBSD: mfs_vnops.c,v 1.62 2021/06/29 22:34:10 dholland Exp $ */ /* * Copyright (c) 1989, 1993 @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: mfs_vnops.c,v 1.61 2020/05/16 18:31:54 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mfs_vnops.c,v 1.62 2021/06/29 22:34:10 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -58,6 +58,7 @@ __KERNEL_RCSID(0, "$NetBSD: mfs_vnops.c, int (**mfs_vnodeop_p)(void *); const struct vnodeopv_entry_desc mfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, + { &vop_parsepath_desc, genfs_parsepath }, /* parsepath */ { &vop_lookup_desc, mfs_lookup }, /* lookup */ { &vop_create_desc, mfs_create }, /* create */ { &vop_mknod_desc, mfs_mknod }, /* mknod */