Module Name:    src
Committed By:   christos
Date:           Sat Jun 27 17:29:19 UTC 2020

Modified Files:
        src/sys/fs/adosfs: advnops.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/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/sysvbfs: sysvbfs_vnops.c
        src/sys/fs/tmpfs: tmpfs_vnops.c
        src/sys/fs/udf: udf_vnops.c
        src/sys/fs/v7fs: v7fs_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

Log Message:
Introduce genfs_pathconf() and use it for the default case in all filesystems.


To generate a diff of this commit:
cvs rdiff -u -r1.54 -r1.55 src/sys/fs/adosfs/advnops.c
cvs rdiff -u -r1.57 -r1.58 src/sys/fs/cd9660/cd9660_vnops.c
cvs rdiff -u -r1.40 -r1.41 src/sys/fs/efs/efs_vnops.c
cvs rdiff -u -r1.46 -r1.47 src/sys/fs/filecorefs/filecore_vnops.c
cvs rdiff -u -r1.103 -r1.104 src/sys/fs/msdosfs/msdosfs_vnops.c
cvs rdiff -u -r1.41 -r1.42 src/sys/fs/nilfs/nilfs_vnops.c
cvs rdiff -u -r1.64 -r1.65 src/sys/fs/ntfs/ntfs_vnops.c
cvs rdiff -u -r1.59 -r1.60 src/sys/fs/ptyfs/ptyfs_vnops.c
cvs rdiff -u -r1.66 -r1.67 src/sys/fs/sysvbfs/sysvbfs_vnops.c
cvs rdiff -u -r1.142 -r1.143 src/sys/fs/tmpfs/tmpfs_vnops.c
cvs rdiff -u -r1.113 -r1.114 src/sys/fs/udf/udf_vnops.c
cvs rdiff -u -r1.30 -r1.31 src/sys/fs/v7fs/v7fs_vnops.c
cvs rdiff -u -r1.133 -r1.134 src/sys/miscfs/fdesc/fdesc_vnops.c
cvs rdiff -u -r1.80 -r1.81 src/sys/miscfs/fifofs/fifo_vnops.c
cvs rdiff -u -r1.34 -r1.35 src/sys/miscfs/genfs/genfs.h
cvs rdiff -u -r1.207 -r1.208 src/sys/miscfs/genfs/genfs_vnops.c
cvs rdiff -u -r1.165 -r1.166 src/sys/miscfs/kernfs/kernfs_vnops.c
cvs rdiff -u -r1.214 -r1.215 src/sys/miscfs/procfs/procfs_vnops.c
cvs rdiff -u -r1.179 -r1.180 src/sys/miscfs/specfs/spec_vnops.c
cvs rdiff -u -r1.315 -r1.316 src/sys/nfs/nfs_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/fs/adosfs/advnops.c
diff -u src/sys/fs/adosfs/advnops.c:1.54 src/sys/fs/adosfs/advnops.c:1.55
--- src/sys/fs/adosfs/advnops.c:1.54	Sat May 16 14:31:48 2020
+++ src/sys/fs/adosfs/advnops.c	Sat Jun 27 13:29:17 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: advnops.c,v 1.54 2020/05/16 18:31:48 christos Exp $	*/
+/*	$NetBSD: advnops.c,v 1.55 2020/06/27 17:29:17 christos Exp $	*/
 
 /*
  * Copyright (c) 1994 Christian E. Hopps
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: advnops.c,v 1.54 2020/05/16 18:31:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: advnops.c,v 1.55 2020/06/27 17:29:17 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -931,7 +931,7 @@ adosfs_pathconf(void *v)
 		*ap->a_retval = 32;
 		return (0);
 	default:
-		return (EINVAL);
+		return genfs_pathconf(ap);
 	}
 	/* NOTREACHED */
 }

Index: src/sys/fs/cd9660/cd9660_vnops.c
diff -u src/sys/fs/cd9660/cd9660_vnops.c:1.57 src/sys/fs/cd9660/cd9660_vnops.c:1.58
--- src/sys/fs/cd9660/cd9660_vnops.c:1.57	Sat May 16 14:31:48 2020
+++ src/sys/fs/cd9660/cd9660_vnops.c	Sat Jun 27 13:29:17 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: cd9660_vnops.c,v 1.57 2020/05/16 18:31:48 christos Exp $	*/
+/*	$NetBSD: cd9660_vnops.c,v 1.58 2020/06/27 17:29:17 christos Exp $	*/
 
 /*-
  * Copyright (c) 1994
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cd9660_vnops.c,v 1.57 2020/05/16 18:31:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cd9660_vnops.c,v 1.58 2020/06/27 17:29:17 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -779,7 +779,7 @@ cd9660_pathconf(void *v)
 		*ap->a_retval = 32;
 		return (0);
 	default:
-		return (EINVAL);
+		return genfs_pathconf(ap);
 	}
 	/* NOTREACHED */
 }

Index: src/sys/fs/efs/efs_vnops.c
diff -u src/sys/fs/efs/efs_vnops.c:1.40 src/sys/fs/efs/efs_vnops.c:1.41
--- src/sys/fs/efs/efs_vnops.c:1.40	Sat May 16 14:31:48 2020
+++ src/sys/fs/efs/efs_vnops.c	Sat Jun 27 13:29:17 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: efs_vnops.c,v 1.40 2020/05/16 18:31:48 christos Exp $	*/
+/*	$NetBSD: efs_vnops.c,v 1.41 2020/06/27 17:29:17 christos 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.40 2020/05/16 18:31:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.41 2020/06/27 17:29:17 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -757,7 +757,7 @@ efs_pathconf(void *v)
 		*ap->a_retval = 32;
 		break;
 	default:
-		return (EINVAL);
+		return genfs_pathconf(ap);
 	}
 
 	return (0);

Index: src/sys/fs/filecorefs/filecore_vnops.c
diff -u src/sys/fs/filecorefs/filecore_vnops.c:1.46 src/sys/fs/filecorefs/filecore_vnops.c:1.47
--- src/sys/fs/filecorefs/filecore_vnops.c:1.46	Sat May 16 14:31:49 2020
+++ src/sys/fs/filecorefs/filecore_vnops.c	Sat Jun 27 13:29:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: filecore_vnops.c,v 1.46 2020/05/16 18:31:49 christos Exp $	*/
+/*	$NetBSD: filecore_vnops.c,v 1.47 2020/06/27 17:29:18 christos 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.46 2020/05/16 18:31:49 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: filecore_vnops.c,v 1.47 2020/06/27 17:29:18 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -525,7 +525,7 @@ filecore_pathconf(void *v)
 		*ap->a_retval = 32;
 		return (0);
 	default:
-		return (EINVAL);
+		return genfs_pathconf(ap);
 	}
 	/* NOTREACHED */
 }

Index: src/sys/fs/msdosfs/msdosfs_vnops.c
diff -u src/sys/fs/msdosfs/msdosfs_vnops.c:1.103 src/sys/fs/msdosfs/msdosfs_vnops.c:1.104
--- src/sys/fs/msdosfs/msdosfs_vnops.c:1.103	Sat May 16 14:31:49 2020
+++ src/sys/fs/msdosfs/msdosfs_vnops.c	Sat Jun 27 13:29:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: msdosfs_vnops.c,v 1.103 2020/05/16 18:31:49 christos Exp $	*/
+/*	$NetBSD: msdosfs_vnops.c,v 1.104 2020/06/27 17:29:18 christos 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.103 2020/05/16 18:31:49 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.104 2020/06/27 17:29:18 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1765,7 +1765,7 @@ msdosfs_pathconf(void *v)
 		*ap->a_retval = 32;
 		return (0);
 	default:
-		return (EINVAL);
+		return genfs_pathconf(ap);
 	}
 	/* NOTREACHED */
 }

Index: src/sys/fs/nilfs/nilfs_vnops.c
diff -u src/sys/fs/nilfs/nilfs_vnops.c:1.41 src/sys/fs/nilfs/nilfs_vnops.c:1.42
--- src/sys/fs/nilfs/nilfs_vnops.c:1.41	Sat May 16 14:31:49 2020
+++ src/sys/fs/nilfs/nilfs_vnops.c	Sat Jun 27 13:29:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: nilfs_vnops.c,v 1.41 2020/05/16 18:31:49 christos Exp $	*/
+/*	$NetBSD: nilfs_vnops.c,v 1.42 2020/06/27 17:29:18 christos 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.41 2020/05/16 18:31:49 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nilfs_vnops.c,v 1.42 2020/06/27 17:29:18 christos Exp $");
 #endif /* not lint */
 
 
@@ -926,9 +926,9 @@ nilfs_pathconf(void *v)
 #endif
 		*ap->a_retval = bits;
 		return 0;
+	default:
+		return genfs_pathconf(ap);
 	}
-
-	return EINVAL;
 }
 
 

Index: src/sys/fs/ntfs/ntfs_vnops.c
diff -u src/sys/fs/ntfs/ntfs_vnops.c:1.64 src/sys/fs/ntfs/ntfs_vnops.c:1.65
--- src/sys/fs/ntfs/ntfs_vnops.c:1.64	Sat May 16 14:31:49 2020
+++ src/sys/fs/ntfs/ntfs_vnops.c	Sat Jun 27 13:29:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ntfs_vnops.c,v 1.64 2020/05/16 18:31:49 christos Exp $	*/
+/*	$NetBSD: ntfs_vnops.c,v 1.65 2020/06/27 17:29:18 christos Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ntfs_vnops.c,v 1.64 2020/05/16 18:31:49 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ntfs_vnops.c,v 1.65 2020/06/27 17:29:18 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -796,7 +796,7 @@ ntfs_pathconf(void *v)
 		*ap->a_retval = 64;
 		return (0);
 	default:
-		return (EINVAL);
+		return genfs_pathconf(ap);
 	}
 	/* NOTREACHED */
 }

Index: src/sys/fs/ptyfs/ptyfs_vnops.c
diff -u src/sys/fs/ptyfs/ptyfs_vnops.c:1.59 src/sys/fs/ptyfs/ptyfs_vnops.c:1.60
--- src/sys/fs/ptyfs/ptyfs_vnops.c:1.59	Sat May 16 14:31:49 2020
+++ src/sys/fs/ptyfs/ptyfs_vnops.c	Sat Jun 27 13:29:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ptyfs_vnops.c,v 1.59 2020/05/16 18:31:49 christos Exp $	*/
+/*	$NetBSD: ptyfs_vnops.c,v 1.60 2020/06/27 17:29:18 christos Exp $	*/
 
 /*
  * Copyright (c) 1993, 1995
@@ -76,7 +76,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ptyfs_vnops.c,v 1.59 2020/05/16 18:31:49 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ptyfs_vnops.c,v 1.60 2020/06/27 17:29:18 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -282,7 +282,7 @@ ptyfs_pathconf(void *v)
 		*ap->a_retval = 1;
 		return 0;
 	default:
-		return EINVAL;
+		return genfs_pathconf(ap);
 	}
 }
 

Index: src/sys/fs/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.66 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.67
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.66	Sat May 16 14:31:49 2020
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Sat Jun 27 13:29:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.66 2020/05/16 18:31:49 christos Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.67 2020/06/27 17:29:18 christos Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sysvbfs_vnops.c,v 1.66 2020/05/16 18:31:49 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysvbfs_vnops.c,v 1.67 2020/06/27 17:29:18 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -828,38 +828,34 @@ sysvbfs_pathconf(void *v)
 		int a_name;
 		register_t *a_retval;
 	} */ *ap = v;
-	int err = 0;
 
 	DPRINTF("%s:\n", __func__);
 
 	switch (ap->a_name) {
 	case _PC_LINK_MAX:
 		*ap->a_retval = 1;
-		break;
+		return 0;
 	case _PC_NAME_MAX:
 		*ap->a_retval = BFS_FILENAME_MAXLEN;
-		break;
+		return 0;
 	case _PC_PATH_MAX:
 		*ap->a_retval = BFS_FILENAME_MAXLEN;
-		break;
+		return 0;
 	case _PC_CHOWN_RESTRICTED:
 		*ap->a_retval = 1;
-		break;
+		return 0;
 	case _PC_NO_TRUNC:
 		*ap->a_retval = 0;
-		break;
+		return 0;
 	case _PC_SYNC_IO:
 		*ap->a_retval = 1;
-		break;
+		return 0;
 	case _PC_FILESIZEBITS:
 		*ap->a_retval = 32;
-		break;
+		return 0;
 	default:
-		err = EINVAL;
-		break;
+		return genfs_pathconf(ap);
 	}
-
-	return err;
 }
 
 int

Index: src/sys/fs/tmpfs/tmpfs_vnops.c
diff -u src/sys/fs/tmpfs/tmpfs_vnops.c:1.142 src/sys/fs/tmpfs/tmpfs_vnops.c:1.143
--- src/sys/fs/tmpfs/tmpfs_vnops.c:1.142	Sun May 24 16:08:26 2020
+++ src/sys/fs/tmpfs/tmpfs_vnops.c	Sat Jun 27 13:29:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: tmpfs_vnops.c,v 1.142 2020/05/24 20:08:26 ad Exp $	*/
+/*	$NetBSD: tmpfs_vnops.c,v 1.143 2020/06/27 17:29:18 christos 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.142 2020/05/24 20:08:26 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.143 2020/06/27 17:29:18 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/dirent.h>
@@ -1125,39 +1125,36 @@ tmpfs_pathconf(void *v)
 		int		a_name;
 		register_t	*a_retval;
 	} */ *ap = v;
-	const int name = ap->a_name;
 	register_t *retval = ap->a_retval;
-	int error = 0;
 
-	switch (name) {
+	switch (ap->a_name) {
 	case _PC_LINK_MAX:
 		*retval = LINK_MAX;
-		break;
+		return 0;
 	case _PC_NAME_MAX:
 		*retval = TMPFS_MAXNAMLEN;
-		break;
+		return 0;
 	case _PC_PATH_MAX:
 		*retval = PATH_MAX;
-		break;
+		return 0;
 	case _PC_PIPE_BUF:
 		*retval = PIPE_BUF;
-		break;
+		return 0;
 	case _PC_CHOWN_RESTRICTED:
 		*retval = 1;
-		break;
+		return 0;
 	case _PC_NO_TRUNC:
 		*retval = 1;
-		break;
+		return 0;
 	case _PC_SYNC_IO:
 		*retval = 1;
-		break;
+		return 0;
 	case _PC_FILESIZEBITS:
 		*retval = sizeof(off_t) * CHAR_BIT;
-		break;
+		return 0;
 	default:
-		error = EINVAL;
+		return genfs_pathconf(ap);
 	}
-	return error;
 }
 
 int

Index: src/sys/fs/udf/udf_vnops.c
diff -u src/sys/fs/udf/udf_vnops.c:1.113 src/sys/fs/udf/udf_vnops.c:1.114
--- src/sys/fs/udf/udf_vnops.c:1.113	Sat May 16 14:31:50 2020
+++ src/sys/fs/udf/udf_vnops.c	Sat Jun 27 13:29:18 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: udf_vnops.c,v 1.113 2020/05/16 18:31:50 christos Exp $ */
+/* $NetBSD: udf_vnops.c,v 1.114 2020/06/27 17:29:18 christos 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.113 2020/05/16 18:31:50 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udf_vnops.c,v 1.114 2020/06/27 17:29:18 christos Exp $");
 #endif /* not lint */
 
 
@@ -1326,9 +1326,9 @@ udf_pathconf(void *v)
 #endif
 		*ap->a_retval = bits;
 		return 0;
+	default:
+		return genfs_pathconf(ap);
 	}
-
-	return EINVAL;
 }
 
 

Index: src/sys/fs/v7fs/v7fs_vnops.c
diff -u src/sys/fs/v7fs/v7fs_vnops.c:1.30 src/sys/fs/v7fs/v7fs_vnops.c:1.31
--- src/sys/fs/v7fs/v7fs_vnops.c:1.30	Sat May 16 14:31:50 2020
+++ src/sys/fs/v7fs/v7fs_vnops.c	Sat Jun 27 13:29:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: v7fs_vnops.c,v 1.30 2020/05/16 18:31:50 christos Exp $	*/
+/*	$NetBSD: v7fs_vnops.c,v 1.31 2020/06/27 17:29:18 christos Exp $	*/
 
 /*-
  * Copyright (c) 2004, 2011 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: v7fs_vnops.c,v 1.30 2020/05/16 18:31:50 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: v7fs_vnops.c,v 1.31 2020/06/27 17:29:18 christos Exp $");
 #if defined _KERNEL_OPT
 #include "opt_v7fs.h"
 #endif
@@ -1172,48 +1172,43 @@ int
 v7fs_pathconf(void *v)
 {
 	struct vop_pathconf_args /* {
-				    struct vnode *a_vp;
-				    int a_name;
-				    register_t *a_retval;
-				    } */ *a = v;
-	int err = 0;
-
-	DPRINTF("%p\n", a->a_vp);
+		struct vnode *a_vp;
+		int a_name;
+		register_t *a_retval;
+	} */ *ap = v;
+	DPRINTF("%p\n", ap->a_vp);
 
-	switch (a->a_name) {
+	switch (ap->a_name) {
 	case _PC_LINK_MAX:
-		*a->a_retval = V7FS_LINK_MAX;
-		break;
+		*ap->a_retval = V7FS_LINK_MAX;
+		return 0;
 	case _PC_NAME_MAX:
-		*a->a_retval = V7FS_NAME_MAX;
-		break;
+		*ap->a_retval = V7FS_NAME_MAX;
+		return 0;
 	case _PC_PATH_MAX:
-		*a->a_retval = V7FS_PATH_MAX;
-		break;
+		*ap->a_retval = V7FS_PATH_MAX;
+		return 0;
 	case _PC_CHOWN_RESTRICTED:
-		*a->a_retval = 1;
-		break;
+		*ap->a_retval = 1;
+		return 0;
 	case _PC_NO_TRUNC:
-		*a->a_retval = 0;
-		break;
+		*ap->a_retval = 0;
+		return 0;
 	case _PC_SYNC_IO:
-		*a->a_retval = 1;
-		break;
+		*ap->a_retval = 1;
+		return 0;
 	case _PC_FILESIZEBITS:
-		*a->a_retval = 30; /* ~1G */
-		break;
+		*ap->a_retval = 30; /* ~1G */
+		return 0;
 	case _PC_SYMLINK_MAX:
-		*a->a_retval = V7FSBSD_MAXSYMLINKLEN;
-		break;
+		*ap->a_retval = V7FSBSD_MAXSYMLINKLEN;
+		return 0;
 	case _PC_2_SYMLINKS:
-		*a->a_retval = 1;
-		break;
+		*ap->a_retval = 1;
+		return 0;
 	default:
-		err = EINVAL;
-		break;
+		return genfs_pathconf(ap);
 	}
-
-	return err;
 }
 
 int

Index: src/sys/miscfs/fdesc/fdesc_vnops.c
diff -u src/sys/miscfs/fdesc/fdesc_vnops.c:1.133 src/sys/miscfs/fdesc/fdesc_vnops.c:1.134
--- src/sys/miscfs/fdesc/fdesc_vnops.c:1.133	Sat May 16 14:31:50 2020
+++ src/sys/miscfs/fdesc/fdesc_vnops.c	Sat Jun 27 13:29:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: fdesc_vnops.c,v 1.133 2020/05/16 18:31:50 christos Exp $	*/
+/*	$NetBSD: fdesc_vnops.c,v 1.134 2020/06/27 17:29:19 christos Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fdesc_vnops.c,v 1.133 2020/05/16 18:31:50 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fdesc_vnops.c,v 1.134 2020/06/27 17:29:19 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -905,7 +905,7 @@ fdesc_pathconf(void *v)
 		*ap->a_retval = 1;
 		return (0);
 	default:
-		return (EINVAL);
+		return genfs_pathconf(ap);
 	}
 	/* NOTREACHED */
 }

Index: src/sys/miscfs/fifofs/fifo_vnops.c
diff -u src/sys/miscfs/fifofs/fifo_vnops.c:1.80 src/sys/miscfs/fifofs/fifo_vnops.c:1.81
--- src/sys/miscfs/fifofs/fifo_vnops.c:1.80	Sat May 16 14:31:51 2020
+++ src/sys/miscfs/fifofs/fifo_vnops.c	Sat Jun 27 13:29:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: fifo_vnops.c,v 1.80 2020/05/16 18:31:51 christos Exp $	*/
+/*	$NetBSD: fifo_vnops.c,v 1.81 2020/06/27 17:29:19 christos 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.80 2020/05/16 18:31:51 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fifo_vnops.c,v 1.81 2020/06/27 17:29:19 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -504,7 +504,7 @@ fifo_pathconf(void *v)
 		*ap->a_retval = 1;
 		return (0);
 	default:
-		return (EINVAL);
+		return genfs_pathconf(ap);
 	}
 	/* NOTREACHED */
 }

Index: src/sys/miscfs/genfs/genfs.h
diff -u src/sys/miscfs/genfs/genfs.h:1.34 src/sys/miscfs/genfs/genfs.h:1.35
--- src/sys/miscfs/genfs/genfs.h:1.34	Sat May 16 14:31:51 2020
+++ src/sys/miscfs/genfs/genfs.h	Sat Jun 27 13:29:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: genfs.h,v 1.34 2020/05/16 18:31:51 christos Exp $	*/
+/*	$NetBSD: genfs.h,v 1.35 2020/06/27 17:29:19 christos Exp $	*/
 
 #ifndef	_MISCFS_GENFS_GENFS_H_
 #define	_MISCFS_GENFS_GENFS_H_
@@ -41,6 +41,7 @@ int	genfs_getpages(void *);
 int	genfs_putpages(void *);
 int	genfs_null_putpages(void *);
 int	genfs_compat_getpages(void *);
+int	genfs_pathconf(void *v);
 
 int	genfs_do_putpages(struct vnode *, off_t, off_t, int, struct vm_page **);
 

Index: src/sys/miscfs/genfs/genfs_vnops.c
diff -u src/sys/miscfs/genfs/genfs_vnops.c:1.207 src/sys/miscfs/genfs/genfs_vnops.c:1.208
--- src/sys/miscfs/genfs/genfs_vnops.c:1.207	Wed May 20 13:06:15 2020
+++ src/sys/miscfs/genfs/genfs_vnops.c	Sat Jun 27 13:29:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: genfs_vnops.c,v 1.207 2020/05/20 17:06:15 christos Exp $	*/
+/*	$NetBSD: genfs_vnops.c,v 1.208 2020/06/27 17:29:19 christos 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.207 2020/05/20 17:06:15 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: genfs_vnops.c,v 1.208 2020/06/27 17:29:19 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1443,3 +1443,29 @@ genfs_accessx(void *v)
 
 	return VOP_ACCESS(ap->a_vp, accmode, ap->a_cred);
 }
+
+/*
+ * genfs_pathconf:
+ *
+ * Standard implementation of POSIX pathconf, to get information about limits
+ * for a filesystem.
+ * Override per filesystem for the case where the filesystem has smaller
+ * limits.
+ */
+int
+genfs_pathconf(void *v)
+{
+	struct vop_pathconf_args *ap = v;
+
+	switch (ap->a_name) {
+	case _PC_PATH_MAX:
+		*ap->a_retval = PATH_MAX;
+		return 0;
+	case _PC_ACL_EXTENDED:
+	case _PC_ACL_NFS4:
+		*ap->a_retval = 0;
+		return 0;
+	default:
+		return EINVAL;
+	}
+}

Index: src/sys/miscfs/kernfs/kernfs_vnops.c
diff -u src/sys/miscfs/kernfs/kernfs_vnops.c:1.165 src/sys/miscfs/kernfs/kernfs_vnops.c:1.166
--- src/sys/miscfs/kernfs/kernfs_vnops.c:1.165	Sat May 16 14:31:51 2020
+++ src/sys/miscfs/kernfs/kernfs_vnops.c	Sat Jun 27 13:29:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kernfs_vnops.c,v 1.165 2020/05/16 18:31:51 christos Exp $	*/
+/*	$NetBSD: kernfs_vnops.c,v 1.166 2020/06/27 17:29:19 christos Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kernfs_vnops.c,v 1.165 2020/05/16 18:31:51 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kernfs_vnops.c,v 1.166 2020/06/27 17:29:19 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1171,7 +1171,7 @@ kernfs_pathconf(void *v)
 		*ap->a_retval = 1;
 		return (0);
 	default:
-		return (EINVAL);
+		return genfs_pathconf(ap);
 	}
 	/* NOTREACHED */
 }

Index: src/sys/miscfs/procfs/procfs_vnops.c
diff -u src/sys/miscfs/procfs/procfs_vnops.c:1.214 src/sys/miscfs/procfs/procfs_vnops.c:1.215
--- src/sys/miscfs/procfs/procfs_vnops.c:1.214	Sat May 23 19:42:43 2020
+++ src/sys/miscfs/procfs/procfs_vnops.c	Sat Jun 27 13:29:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: procfs_vnops.c,v 1.214 2020/05/23 23:42:43 ad Exp $	*/
+/*	$NetBSD: procfs_vnops.c,v 1.215 2020/06/27 17:29:19 christos 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.214 2020/05/23 23:42:43 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: procfs_vnops.c,v 1.215 2020/06/27 17:29:19 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -500,7 +500,7 @@ procfs_pathconf(void *v)
 		*ap->a_retval = 1;
 		return (0);
 	default:
-		return (EINVAL);
+		return genfs_pathconf(ap);
 	}
 	/* NOTREACHED */
 }

Index: src/sys/miscfs/specfs/spec_vnops.c
diff -u src/sys/miscfs/specfs/spec_vnops.c:1.179 src/sys/miscfs/specfs/spec_vnops.c:1.180
--- src/sys/miscfs/specfs/spec_vnops.c:1.179	Sat May 23 19:42:43 2020
+++ src/sys/miscfs/specfs/spec_vnops.c	Sat Jun 27 13:29:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: spec_vnops.c,v 1.179 2020/05/23 23:42:43 ad Exp $	*/
+/*	$NetBSD: spec_vnops.c,v 1.180 2020/06/27 17:29:19 christos 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.179 2020/05/23 23:42:43 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: spec_vnops.c,v 1.180 2020/06/27 17:29:19 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/proc.h>
@@ -1316,7 +1316,7 @@ spec_pathconf(void *v)
 		*ap->a_retval = 1;
 		return (0);
 	default:
-		return (EINVAL);
+		return genfs_pathconf(ap);
 	}
 	/* NOTREACHED */
 }

Index: src/sys/nfs/nfs_vnops.c
diff -u src/sys/nfs/nfs_vnops.c:1.315 src/sys/nfs/nfs_vnops.c:1.316
--- src/sys/nfs/nfs_vnops.c:1.315	Sat May 16 14:31:52 2020
+++ src/sys/nfs/nfs_vnops.c	Sat Jun 27 13:29:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: nfs_vnops.c,v 1.315 2020/05/16 18:31:52 christos Exp $	*/
+/*	$NetBSD: nfs_vnops.c,v 1.316 2020/06/27 17:29:19 christos Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.315 2020/05/16 18:31:52 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.316 2020/06/27 17:29:19 christos Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_nfs.h"
@@ -3270,7 +3270,7 @@ nfs_pathconf(void *v)
 		}
 		break;
 	default:
-		error = EINVAL;
+		error = genfs_pathconf(ap);
 		break;
 	}
 

Reply via email to