Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F146372378
D12572.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
7 KB
Referenced Files
None
Subscribers
None
D12572.diff
View Options
Index: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
===================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
@@ -5414,31 +5414,17 @@
case _PC_NAME_MAX:
*ap->a_retval = NAME_MAX;
return (0);
+ case _PC_PIPE_BUF:
+ if (ap->a_vp->v_type == VDIR || ap->a_vp->v_type == VFIFO) {
+ *ap->a_retval = PIPE_BUF;
+ return (0);
+ }
+ return (EINVAL);
default:
return (vop_stdpathconf(ap));
}
}
-static int
-zfs_freebsd_fifo_pathconf(ap)
- struct vop_pathconf_args /* {
- struct vnode *a_vp;
- int a_name;
- register_t *a_retval;
- } */ *ap;
-{
-
- switch (ap->a_name) {
- case _PC_ACL_EXTENDED:
- case _PC_ACL_NFS4:
- case _PC_ACL_PATH_MAX:
- case _PC_MAC_PRESENT:
- return (zfs_freebsd_pathconf(ap));
- default:
- return (fifo_specops.vop_pathconf(ap));
- }
-}
-
/*
* FreeBSD's extended attributes namespace defines file name prefix for ZFS'
* extended attribute name:
@@ -6050,7 +6036,7 @@
.vop_reclaim = zfs_freebsd_reclaim,
.vop_setattr = zfs_freebsd_setattr,
.vop_write = VOP_PANIC,
- .vop_pathconf = zfs_freebsd_fifo_pathconf,
+ .vop_pathconf = zfs_freebsd_pathconf,
.vop_fid = zfs_freebsd_fid,
.vop_getacl = zfs_freebsd_getacl,
.vop_setacl = zfs_freebsd_setacl,
Index: head/sys/fs/ext2fs/ext2_vnops.c
===================================================================
--- head/sys/fs/ext2fs/ext2_vnops.c
+++ head/sys/fs/ext2fs/ext2_vnops.c
@@ -180,6 +180,7 @@
.vop_getattr = ext2_getattr,
.vop_inactive = ext2_inactive,
.vop_kqfilter = ext2fifo_kqfilter,
+ .vop_pathconf = ext2_pathconf,
.vop_print = ext2_print,
.vop_read = VOP_PANIC,
.vop_reclaim = ext2_reclaim,
@@ -1635,6 +1636,12 @@
break;
case _PC_NAME_MAX:
*ap->a_retval = NAME_MAX;
+ break;
+ case _PC_PIPE_BUF:
+ if (ap->a_vp->v_type == VDIR || ap->a_vp->v_type == VFIFO)
+ *ap->a_retval = PIPE_BUF;
+ else
+ error = EINVAL;
break;
case _PC_CHOWN_RESTRICTED:
*ap->a_retval = 1;
Index: head/sys/fs/fifofs/fifo_vnops.c
===================================================================
--- head/sys/fs/fifofs/fifo_vnops.c
+++ head/sys/fs/fifofs/fifo_vnops.c
@@ -88,7 +88,7 @@
.vop_mkdir = VOP_PANIC,
.vop_mknod = VOP_PANIC,
.vop_open = fifo_open,
- .vop_pathconf = vop_stdpathconf,
+ .vop_pathconf = VOP_PANIC,
.vop_print = fifo_print,
.vop_read = VOP_PANIC,
.vop_readdir = VOP_PANIC,
Index: head/sys/fs/nandfs/nandfs_vnops.c
===================================================================
--- head/sys/fs/nandfs/nandfs_vnops.c
+++ head/sys/fs/nandfs/nandfs_vnops.c
@@ -2244,6 +2244,12 @@
case _PC_NAME_MAX:
*ap->a_retval = NANDFS_NAME_LEN;
break;
+ case _PC_PIPE_BUF:
+ if (ap->a_vp->v_type == VDIR || ap->a_vp->v_type == VFIFO)
+ *ap->a_retval = PIPE_BUF;
+ else
+ error = EINVAL;
+ break;
case _PC_CHOWN_RESTRICTED:
*ap->a_retval = 1;
break;
@@ -2414,6 +2420,7 @@
.vop_close = nandfsfifo_close,
.vop_getattr = nandfs_getattr,
.vop_inactive = nandfs_inactive,
+ .vop_pathconf = nandfs_pathconf,
.vop_print = nandfs_print,
.vop_read = VOP_PANIC,
.vop_reclaim = nandfs_reclaim,
Index: head/sys/fs/nfsclient/nfs_clvnops.c
===================================================================
--- head/sys/fs/nfsclient/nfs_clvnops.c
+++ head/sys/fs/nfsclient/nfs_clvnops.c
@@ -189,6 +189,7 @@
.vop_fsync = nfs_fsync,
.vop_getattr = nfs_getattr,
.vop_inactive = ncl_inactive,
+ .vop_pathconf = nfs_pathconf,
.vop_print = nfs_print,
.vop_read = nfsfifo_read,
.vop_reclaim = ncl_reclaim,
@@ -3464,6 +3465,12 @@
break;
case _PC_NAME_MAX:
*ap->a_retval = pc.pc_namemax;
+ break;
+ case _PC_PIPE_BUF:
+ if (ap->a_vp->v_type == VDIR || ap->a_vp->v_type == VFIFO)
+ *ap->a_retval = PIPE_BUF;
+ else
+ error = EINVAL;
break;
case _PC_CHOWN_RESTRICTED:
*ap->a_retval = pc.pc_chownrestricted;
Index: head/sys/fs/tmpfs/tmpfs_fifoops.c
===================================================================
--- head/sys/fs/tmpfs/tmpfs_fifoops.c
+++ head/sys/fs/tmpfs/tmpfs_fifoops.c
@@ -71,5 +71,6 @@
.vop_access = tmpfs_access,
.vop_getattr = tmpfs_getattr,
.vop_setattr = tmpfs_setattr,
+ .vop_pathconf = tmpfs_pathconf,
.vop_print = tmpfs_print,
};
Index: head/sys/fs/tmpfs/tmpfs_vnops.h
===================================================================
--- head/sys/fs/tmpfs/tmpfs_vnops.h
+++ head/sys/fs/tmpfs/tmpfs_vnops.h
@@ -51,6 +51,7 @@
vop_access_t tmpfs_access;
vop_getattr_t tmpfs_getattr;
vop_setattr_t tmpfs_setattr;
+vop_pathconf_t tmpfs_pathconf;
vop_print_t tmpfs_print;
vop_reclaim_t tmpfs_reclaim;
Index: head/sys/fs/tmpfs/tmpfs_vnops.c
===================================================================
--- head/sys/fs/tmpfs/tmpfs_vnops.c
+++ head/sys/fs/tmpfs/tmpfs_vnops.c
@@ -1338,9 +1338,10 @@
return 0;
}
-static int
+int
tmpfs_pathconf(struct vop_pathconf_args *v)
{
+ struct vnode *vp = v->a_vp;
int name = v->a_name;
register_t *retval = v->a_retval;
@@ -1355,6 +1356,13 @@
case _PC_NAME_MAX:
*retval = NAME_MAX;
+ break;
+
+ case _PC_PIPE_BUF:
+ if (vp->v_type == VDIR || vp->v_type == VFIFO)
+ *retval = PIPE_BUF;
+ else
+ error = EINVAL;
break;
case _PC_CHOWN_RESTRICTED:
Index: head/sys/fs/udf/udf_vnops.c
===================================================================
--- head/sys/fs/udf/udf_vnops.c
+++ head/sys/fs/udf/udf_vnops.c
@@ -102,6 +102,7 @@
.vop_default = &fifo_specops,
.vop_access = udf_access,
.vop_getattr = udf_getattr,
+ .vop_pathconf = udf_pathconf,
.vop_print = udf_print,
.vop_reclaim = udf_reclaim,
.vop_setattr = udf_setattr,
@@ -400,6 +401,12 @@
case _PC_NO_TRUNC:
*a->a_retval = 1;
return (0);
+ case _PC_PIPE_BUF:
+ if (a->a_vp->v_type == VDIR || a->a_vp->v_type == VFIFO) {
+ *a->a_retval = PIPE_BUF;
+ return (0);
+ }
+ return (EINVAL);
default:
return (vop_stdpathconf(a));
}
Index: head/sys/kern/vfs_default.c
===================================================================
--- head/sys/kern/vfs_default.c
+++ head/sys/kern/vfs_default.c
@@ -482,9 +482,6 @@
case _PC_PATH_MAX:
*ap->a_retval = PATH_MAX;
return (0);
- case _PC_PIPE_BUF:
- *ap->a_retval = PIPE_BUF;
- return (0);
default:
return (EINVAL);
}
Index: head/sys/ufs/ufs/ufs_vnops.c
===================================================================
--- head/sys/ufs/ufs/ufs_vnops.c
+++ head/sys/ufs/ufs/ufs_vnops.c
@@ -124,7 +124,6 @@
static vop_whiteout_t ufs_whiteout;
static vop_close_t ufsfifo_close;
static vop_kqfilter_t ufsfifo_kqfilter;
-static vop_pathconf_t ufsfifo_pathconf;
SYSCTL_NODE(_vfs, OID_AUTO, ufs, CTLFLAG_RD, 0, "UFS filesystem");
@@ -2406,30 +2405,6 @@
}
/*
- * Return POSIX pathconf information applicable to fifos.
- */
-static int
-ufsfifo_pathconf(ap)
- struct vop_pathconf_args /* {
- struct vnode *a_vp;
- int a_name;
- int *a_retval;
- } */ *ap;
-{
-
- switch (ap->a_name) {
- case _PC_ACL_EXTENDED:
- case _PC_ACL_NFS4:
- case _PC_ACL_PATH_MAX:
- case _PC_MAC_PRESENT:
- return (ufs_pathconf(ap));
- default:
- return (fifo_specops.vop_pathconf(ap));
- }
- /* NOTREACHED */
-}
-
-/*
* Return POSIX pathconf information applicable to ufs filesystems.
*/
static int
@@ -2450,6 +2425,12 @@
case _PC_NAME_MAX:
*ap->a_retval = UFS_MAXNAMLEN;
break;
+ case _PC_PIPE_BUF:
+ if (ap->a_vp->v_type == VDIR || ap->a_vp->v_type == VFIFO)
+ *ap->a_retval = PIPE_BUF;
+ else
+ error = EINVAL;
+ break;
case _PC_CHOWN_RESTRICTED:
*ap->a_retval = 1;
break;
@@ -2803,7 +2784,7 @@
.vop_inactive = ufs_inactive,
.vop_kqfilter = ufsfifo_kqfilter,
.vop_markatime = ufs_markatime,
- .vop_pathconf = ufsfifo_pathconf,
+ .vop_pathconf = ufs_pathconf,
.vop_print = ufs_print,
.vop_read = VOP_PANIC,
.vop_reclaim = ufs_reclaim,
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Mar 3, 4:15 AM (8 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29182357
Default Alt Text
D12572.diff (7 KB)
Attached To
Mode
D12572: Various pathconf() fixes.
Attached
Detach File
Event Timeline
Log In to Comment