Consistently use vop_stdpathconf() for default pathconf values.

Update filesystems not currently using vop_stdpathconf() in pathconf
VOPs to use vop_stdpathconf() for any configuration variables that do
not have filesystem-specific values.  vop_stdpathconf() is used for
variables that have system-wide settings as well as providing default
values for some values based on system limits.  Filesystems can still
explicitly override individual settings.

PR:		219851
Reported by:	cem
Reviewed by:	cem, kib, ngie
MFC after:	1 month
Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D11541
This commit is contained in:
John Baldwin 2017-07-11 21:55:20 +00:00
parent 4e287bd860
commit 15a88f8158
9 changed files with 9 additions and 133 deletions

View File

@ -792,20 +792,11 @@ cd9660_pathconf(ap)
else else
*ap->a_retval = 37; *ap->a_retval = 37;
return (0); return (0);
case _PC_PATH_MAX:
*ap->a_retval = PATH_MAX;
return (0);
case _PC_PIPE_BUF:
*ap->a_retval = PIPE_BUF;
return (0);
case _PC_CHOWN_RESTRICTED:
*ap->a_retval = 1;
return (0);
case _PC_NO_TRUNC: case _PC_NO_TRUNC:
*ap->a_retval = 1; *ap->a_retval = 1;
return (0); return (0);
default: default:
return (EINVAL); return (vop_stdpathconf(ap));
} }
/* NOTREACHED */ /* NOTREACHED */
} }

View File

@ -1627,18 +1627,6 @@ ext2_pathconf(struct vop_pathconf_args *ap)
else else
*ap->a_retval = ext2_max_nlink(VTOI(ap->a_vp)); *ap->a_retval = ext2_max_nlink(VTOI(ap->a_vp));
break; break;
case _PC_NAME_MAX:
*ap->a_retval = NAME_MAX;
break;
case _PC_PATH_MAX:
*ap->a_retval = PATH_MAX;
break;
case _PC_PIPE_BUF:
*ap->a_retval = PIPE_BUF;
break;
case _PC_CHOWN_RESTRICTED:
*ap->a_retval = 1;
break;
case _PC_NO_TRUNC: case _PC_NO_TRUNC:
*ap->a_retval = 1; *ap->a_retval = 1;
break; break;
@ -1661,11 +1649,6 @@ ext2_pathconf(struct vop_pathconf_args *ap)
case _PC_MIN_HOLE_SIZE: case _PC_MIN_HOLE_SIZE:
*ap->a_retval = ap->a_vp->v_mount->mnt_stat.f_iosize; *ap->a_retval = ap->a_vp->v_mount->mnt_stat.f_iosize;
break; break;
case _PC_ASYNC_IO:
/* _PC_ASYNC_IO should have been handled by upper layers. */
KASSERT(0, ("_PC_ASYNC_IO should not get here"));
error = EINVAL;
break;
case _PC_PRIO_IO: case _PC_PRIO_IO:
*ap->a_retval = 0; *ap->a_retval = 0;
break; break;
@ -1695,7 +1678,7 @@ ext2_pathconf(struct vop_pathconf_args *ap)
break; break;
default: default:
error = EINVAL; error = vop_stdpathconf(ap);
break; break;
} }
return (error); return (error);

View File

@ -71,7 +71,6 @@ struct fifoinfo {
static vop_print_t fifo_print; static vop_print_t fifo_print;
static vop_open_t fifo_open; static vop_open_t fifo_open;
static vop_close_t fifo_close; static vop_close_t fifo_close;
static vop_pathconf_t fifo_pathconf;
static vop_advlock_t fifo_advlock; static vop_advlock_t fifo_advlock;
struct vop_vector fifo_specops = { struct vop_vector fifo_specops = {
@ -87,7 +86,7 @@ struct vop_vector fifo_specops = {
.vop_mkdir = VOP_PANIC, .vop_mkdir = VOP_PANIC,
.vop_mknod = VOP_PANIC, .vop_mknod = VOP_PANIC,
.vop_open = fifo_open, .vop_open = fifo_open,
.vop_pathconf = fifo_pathconf, .vop_pathconf = vop_stdpathconf,
.vop_print = fifo_print, .vop_print = fifo_print,
.vop_read = VOP_PANIC, .vop_read = VOP_PANIC,
.vop_readdir = VOP_PANIC, .vop_readdir = VOP_PANIC,
@ -339,34 +338,6 @@ fifo_print(ap)
return (0); return (0);
} }
/*
* Return POSIX pathconf information applicable to fifo's.
*/
static int
fifo_pathconf(ap)
struct vop_pathconf_args /* {
struct vnode *a_vp;
int a_name;
int *a_retval;
} */ *ap;
{
switch (ap->a_name) {
case _PC_LINK_MAX:
*ap->a_retval = LINK_MAX;
return (0);
case _PC_PIPE_BUF:
*ap->a_retval = PIPE_BUF;
return (0);
case _PC_CHOWN_RESTRICTED:
*ap->a_retval = 1;
return (0);
default:
return (EINVAL);
}
/* NOTREACHED */
}
/* /*
* Fifo advisory byte-level locks. * Fifo advisory byte-level locks.
*/ */

View File

@ -1875,17 +1875,11 @@ msdosfs_pathconf(struct vop_pathconf_args *ap)
case _PC_NAME_MAX: case _PC_NAME_MAX:
*ap->a_retval = pmp->pm_flags & MSDOSFSMNT_LONGNAME ? WIN_MAXLEN : 12; *ap->a_retval = pmp->pm_flags & MSDOSFSMNT_LONGNAME ? WIN_MAXLEN : 12;
return (0); return (0);
case _PC_PATH_MAX:
*ap->a_retval = PATH_MAX;
return (0);
case _PC_CHOWN_RESTRICTED:
*ap->a_retval = 1;
return (0);
case _PC_NO_TRUNC: case _PC_NO_TRUNC:
*ap->a_retval = 0; *ap->a_retval = 0;
return (0); return (0);
default: default:
return (EINVAL); return (vop_stdpathconf(ap));
} }
/* NOTREACHED */ /* NOTREACHED */
} }

View File

@ -2236,21 +2236,6 @@ nandfs_pathconf(struct vop_pathconf_args *ap)
error = 0; error = 0;
switch (ap->a_name) { switch (ap->a_name) {
case _PC_LINK_MAX:
*ap->a_retval = LINK_MAX;
break;
case _PC_NAME_MAX:
*ap->a_retval = NAME_MAX;
break;
case _PC_PATH_MAX:
*ap->a_retval = PATH_MAX;
break;
case _PC_PIPE_BUF:
*ap->a_retval = PIPE_BUF;
break;
case _PC_CHOWN_RESTRICTED:
*ap->a_retval = 1;
break;
case _PC_NO_TRUNC: case _PC_NO_TRUNC:
*ap->a_retval = 1; *ap->a_retval = 1;
break; break;
@ -2273,7 +2258,7 @@ nandfs_pathconf(struct vop_pathconf_args *ap)
*ap->a_retval = ap->a_vp->v_mount->mnt_stat.f_iosize; *ap->a_retval = ap->a_vp->v_mount->mnt_stat.f_iosize;
break; break;
default: default:
error = EINVAL; error = vop_stdpathconf(ap);
break; break;
} }
return (error); return (error);

View File

@ -3481,12 +3481,6 @@ nfs_pathconf(struct vop_pathconf_args *ap)
case _PC_NAME_MAX: case _PC_NAME_MAX:
*ap->a_retval = pc.pc_namemax; *ap->a_retval = pc.pc_namemax;
break; break;
case _PC_PATH_MAX:
*ap->a_retval = PATH_MAX;
break;
case _PC_PIPE_BUF:
*ap->a_retval = PIPE_BUF;
break;
case _PC_CHOWN_RESTRICTED: case _PC_CHOWN_RESTRICTED:
*ap->a_retval = pc.pc_chownrestricted; *ap->a_retval = pc.pc_chownrestricted;
break; break;
@ -3512,11 +3506,6 @@ nfs_pathconf(struct vop_pathconf_args *ap)
case _PC_MAC_PRESENT: case _PC_MAC_PRESENT:
*ap->a_retval = 0; *ap->a_retval = 0;
break; break;
case _PC_ASYNC_IO:
/* _PC_ASYNC_IO should have been handled by upper layers. */
KASSERT(0, ("_PC_ASYNC_IO should not get here"));
error = EINVAL;
break;
case _PC_PRIO_IO: case _PC_PRIO_IO:
*ap->a_retval = 0; *ap->a_retval = 0;
break; break;
@ -3549,7 +3538,7 @@ nfs_pathconf(struct vop_pathconf_args *ap)
break; break;
default: default:
error = EINVAL; error = vop_stdpathconf(ap);
break; break;
} }
return (error); return (error);

View File

@ -907,7 +907,7 @@ smbfs_pathconf (ap)
*retval = 800; /* XXX: a correct one ? */ *retval = 800; /* XXX: a correct one ? */
break; break;
default: default:
error = EINVAL; error = vop_stdpathconf(ap);
} }
return error; return error;
} }

View File

@ -1344,26 +1344,6 @@ tmpfs_pathconf(struct vop_pathconf_args *v)
error = 0; error = 0;
switch (name) { switch (name) {
case _PC_LINK_MAX:
*retval = LINK_MAX;
break;
case _PC_NAME_MAX:
*retval = NAME_MAX;
break;
case _PC_PATH_MAX:
*retval = PATH_MAX;
break;
case _PC_PIPE_BUF:
*retval = PIPE_BUF;
break;
case _PC_CHOWN_RESTRICTED:
*retval = 1;
break;
case _PC_NO_TRUNC: case _PC_NO_TRUNC:
*retval = 1; *retval = 1;
break; break;
@ -1377,7 +1357,7 @@ tmpfs_pathconf(struct vop_pathconf_args *v)
break; break;
default: default:
error = EINVAL; error = vop_stdpathconf(v);
} }
return error; return error;

View File

@ -2442,21 +2442,9 @@ ufs_pathconf(ap)
error = 0; error = 0;
switch (ap->a_name) { switch (ap->a_name) {
case _PC_LINK_MAX:
*ap->a_retval = LINK_MAX;
break;
case _PC_NAME_MAX: case _PC_NAME_MAX:
*ap->a_retval = UFS_MAXNAMLEN; *ap->a_retval = UFS_MAXNAMLEN;
break; break;
case _PC_PATH_MAX:
*ap->a_retval = PATH_MAX;
break;
case _PC_PIPE_BUF:
*ap->a_retval = PIPE_BUF;
break;
case _PC_CHOWN_RESTRICTED:
*ap->a_retval = 1;
break;
case _PC_NO_TRUNC: case _PC_NO_TRUNC:
*ap->a_retval = 1; *ap->a_retval = 1;
break; break;
@ -2505,11 +2493,6 @@ ufs_pathconf(ap)
case _PC_MIN_HOLE_SIZE: case _PC_MIN_HOLE_SIZE:
*ap->a_retval = ap->a_vp->v_mount->mnt_stat.f_iosize; *ap->a_retval = ap->a_vp->v_mount->mnt_stat.f_iosize;
break; break;
case _PC_ASYNC_IO:
/* _PC_ASYNC_IO should have been handled by upper layers. */
KASSERT(0, ("_PC_ASYNC_IO should not get here"));
error = EINVAL;
break;
case _PC_PRIO_IO: case _PC_PRIO_IO:
*ap->a_retval = 0; *ap->a_retval = 0;
break; break;
@ -2539,7 +2522,7 @@ ufs_pathconf(ap)
break; break;
default: default:
error = EINVAL; error = vop_stdpathconf(ap);
break; break;
} }
return (error); return (error);