Date: Sat, 22 Mar 2003 19:03:09 -0800 (PST) From: Robert Watson <rwatson@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 27244 for review Message-ID: <200303230303.h2N3394l019223@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=27244 Change 27244 by rwatson@rwatson_paprika on 2003/03/22 19:02:15 More file systems updated to handle new cmask semantics for vop_mknod(). Affected files ... .. //depot/projects/trustedbsd/acl/sys/coda/coda_vnops.c#4 edit .. //depot/projects/trustedbsd/acl/sys/fs/devfs/devfs_vnops.c#4 edit .. //depot/projects/trustedbsd/acl/sys/fs/fifofs/fifo_vnops.c#4 edit .. //depot/projects/trustedbsd/acl/sys/fs/unionfs/union_vnops.c#4 edit .. //depot/projects/trustedbsd/acl/sys/gnu/ext2fs/ext2_vnops.c#4 edit Differences ... ==== //depot/projects/trustedbsd/acl/sys/coda/coda_vnops.c#4 (text+ko) ==== ==== //depot/projects/trustedbsd/acl/sys/fs/devfs/devfs_vnops.c#4 (text+ko) ==== @@ -458,6 +458,7 @@ struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; + int a_cmask; }; */ { @@ -729,6 +730,7 @@ struct devfs_dirent *de; struct vattr *vap; struct vnode *vp; + u_short mode; int c, error; uid_t uid; gid_t gid; @@ -746,6 +748,7 @@ (vap->va_gen != VNOVAL)) { return (EINVAL); } + mode = vap->va_mode &~ ap->a_cmask; de = vp->v_data; if (vp->v_type == VDIR) @@ -770,11 +773,11 @@ c = 1; } - if (vap->va_mode != (mode_t)VNOVAL) { + if (mode != (mode_t)VNOVAL) { if ((ap->a_cred->cr_uid != de->de_uid) && (error = suser_cred(ap->a_td->td_ucred, PRISON_ROOT))) return (error); - de->de_mode = vap->va_mode; + de->de_mode = mode; c = 1; } ==== //depot/projects/trustedbsd/acl/sys/fs/fifofs/fifo_vnops.c#4 (text+ko) ==== ==== //depot/projects/trustedbsd/acl/sys/fs/unionfs/union_vnops.c#4 (text+ko) ==== @@ -692,6 +692,7 @@ struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; + int a_cmask; } */ *ap; { struct union_node *dun = VTOUNION(ap->a_dvp); ==== //depot/projects/trustedbsd/acl/sys/gnu/ext2fs/ext2_vnops.c#4 (text+ko) ==== @@ -83,7 +83,7 @@ #include <gnu/ext2fs/ext2_extern.h> #include <gnu/ext2fs/ext2_fs.h> -static int ext2_makeinode(int mode, struct vnode *, struct vnode **, struct componentname *); +static int ext2_makeinode(int mode, int cmask, struct vnode *, struct vnode **, struct componentname *); static int ext2_access(struct vop_access_args *); static int ext2_advlock(struct vop_advlock_args *); @@ -283,13 +283,11 @@ int a_cmask; } */ *ap; { - u_short mode; int error; - mode = ap->a_vap->va_mode &~ ap->a_cmask; error = - ext2_makeinode(MAKEIMODE(ap->a_vap->va_type, mode), ap->a_dvp, - ap->a_vpp, ap->a_cnp); + ext2_makeinode(MAKEIMODE(ap->a_vap->va_type, ap->a_mode), + ap->a_cmask, ap->a_dvp, ap->a_vpp, ap->a_cnp); if (error) return (error); return (0); @@ -698,6 +696,7 @@ struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; + int a_cmask; } */ *ap; { struct vattr *vap = ap->a_vap; @@ -707,7 +706,7 @@ int error; error = ext2_makeinode(MAKEIMODE(vap->va_type, vap->va_mode), - ap->a_dvp, vpp, ap->a_cnp); + ap->a_cmask, ap->a_dvp, vpp, ap->a_cnp); if (error) return (error); ip = VTOI(*vpp); @@ -1188,6 +1187,7 @@ struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; + int a_cmask; } */ *ap; { struct vnode *dvp = ap->a_dvp; @@ -1207,7 +1207,7 @@ error = EMLINK; goto out; } - dmode = vap->va_mode & 0777; + dmode = vap->va_mode & 0777 &~ ap->a_cmask; dmode |= IFDIR; /* * Must simulate part of ext2_makeinode here to acquire the inode, @@ -1779,8 +1779,9 @@ * Allocate a new inode. */ static int -ext2_makeinode(mode, dvp, vpp, cnp) +ext2_makeinode(mode, cmask, dvp, vpp, cnp) int mode; + int cmask; struct vnode *dvp; struct vnode **vpp; struct componentname *cnp; @@ -1789,6 +1790,11 @@ struct vnode *tvp; int error; + /* + * XXXACL: If and when we support ext2fs ACLs, the new object mode + * will need to be calculated using the ACL_MASK entry also. + */ + mode &= ~cmask; pdir = VTOI(dvp); #ifdef DIAGNOSTIC if ((cnp->cn_flags & HASBUF) == 0) To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200303230303.h2N3394l019223>