summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/cachefs/cachefs_ioctl.c
diff options
context:
space:
mode:
authoramw <none@none>2007-10-25 16:34:29 -0700
committeramw <none@none>2007-10-25 16:34:29 -0700
commitda6c28aaf62fa55f0fdb8004aa40f88f23bf53f0 (patch)
tree65be91fb78a6a66183197595333f2e8aafb4640a /usr/src/uts/common/fs/cachefs/cachefs_ioctl.c
parente845e33dd0d1aea22db7edaa8c7d43955d24609b (diff)
downloadillumos-gate-da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0.tar.gz
PSARC/2007/218 caller_context_t in all VOPs
PSARC/2007/227 VFS Feature Registration and ACL on Create PSARC/2007/244 ZFS Case-insensitive support PSARC/2007/315 Extensible Attribute Interfaces PSARC/2007/394 ls(1) new command line options '-/' and '-%': CIFS system attributes support PSARC/2007/403 Modified Access Checks for CIFS PSARC/2007/410 Add system attribute support to chmod(1) PSARC/2007/432 CIFS system attributes support for cp(1), pack(1), unpack(1), compress(1) and uncompress(1) PSARC/2007/444 Rescind SETTABLE Attribute PSARC/2007/459 CIFS system attributes support for cpio(1), pax(1), tar(1) PSARC/2007/546 Update utilities to match CIFS system attributes changes. PSARC/2007/560 ZFS sharesmb property 4890717 want append-only files 6417428 Case-insensitive file system name lookup to support CIFS 6417435 DOS attributes and additional timestamps to support for CIFS 6417442 File system quarantined and modified attributes to support an integrated Anti-Virus service 6417453 FS boolean property for rejecting/allowing invalid UTF-8 sequences in file names 6473733 RFE: Need support for open-deny modes 6473755 RFE: Need ability to reconcile oplock and delegation conflicts 6494624 sharemgr needs to support CIFS shares better 6546705 All vnode operations need to pass caller_context_t 6546706 Need VOP_SETATTR/VOP_GETATTR to support new, optional attributes 6546893 Solaris system attribute support 6550962 ZFS ACL inheritance needs to be enhanced to support Automatic Inheritance 6553589 RFE: VFS Feature Registration facility 6553770 RFE: ZFS support for ACL-on-CREATE (PSARC 2007/227) 6565581 ls(1) should support file system attributes proposed in PSARC/2007/315 6566784 NTFS streams are not copied along with the files. 6576205 cp(1), pack(1) and compress(1) should support file system attributes proposed in PSARC/2007/315 6578875 RFE: kernel interfaces for nbmand need improvement 6578883 RFE: VOP_SHRLOCK needs additional access types 6578885 chmod(1) should support file system attributes proposed in PSARC/2007/315 6578886 RFE: disallow nbmand state to change on remount 6583349 ACL parser needs to support audit/alarm ACE types 6590347 tar(1) should support filesystem attributes proposed in PSARC/2007/315 6597357 *tar* xv@ doesn't show the hidden directory even though it is restored 6597360 *tar* should re-init xattr info if openat() fails during extraction of and extended attribute 6597368 *tar* cannot restore hard linked extended attributes 6597374 *tar* doesn't display "x " when hard linked attributes are restored 6597375 *tar* extended attribute header off by one 6614861 *cpio* incorrectly archives extended system attributes with -@ 6614896 *pax* incorrectly archives extended system attributes with -@ 6615225 *tar* incorrectly archives extended system attributes with -@ 6617183 CIFS Service - PSARC 2006/715
Diffstat (limited to 'usr/src/uts/common/fs/cachefs/cachefs_ioctl.c')
-rw-r--r--usr/src/uts/common/fs/cachefs/cachefs_ioctl.c85
1 files changed, 44 insertions, 41 deletions
diff --git a/usr/src/uts/common/fs/cachefs/cachefs_ioctl.c b/usr/src/uts/common/fs/cachefs/cachefs_ioctl.c
index 62c15fc35e..2a6b60a7a0 100644
--- a/usr/src/uts/common/fs/cachefs/cachefs_ioctl.c
+++ b/usr/src/uts/common/fs/cachefs/cachefs_ioctl.c
@@ -2,9 +2,8 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
@@ -20,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
@@ -1123,7 +1122,7 @@ cachefs_io_getinfo(vnode_t *vp, void *dinp, void *doutp)
/* Get the length of the directory */
va.va_mask = AT_SIZE;
- error = VOP_GETATTR(dcp->c_frontvp, &va, 0, kcred);
+ error = VOP_GETATTR(dcp->c_frontvp, &va, 0, kcred, NULL);
if (error) {
error = 0;
goto out;
@@ -1248,7 +1247,7 @@ cachefs_io_getattrfid(vnode_t *vp, void *dinp, void *doutp)
cr = conj_cred(&gafid->cg_cred);
CACHEFS_TMPPTR_SET(attrp, &va, tmpvap, vattr_t);
tmpvap->va_mask = AT_ALL;
- error = VOP_GETATTR(backvp, tmpvap, 0, cr);
+ error = VOP_GETATTR(backvp, tmpvap, 0, cr, NULL);
CACHEFS_VATTR_COPYOUT(tmpvap, attrp, error);
crfree(cr);
@@ -1298,7 +1297,7 @@ cachefs_io_getattrname(vnode_t *vp, void *dinp, void *doutp)
/* lookup the file name */
cr = conj_cred(&gap->cg_cred);
error = VOP_LOOKUP(pbackvp, gap->cg_name, &cbackvp,
- (struct pathname *)NULL, 0, (vnode_t *)NULL, cr);
+ (struct pathname *)NULL, 0, (vnode_t *)NULL, cr, NULL, NULL, NULL);
if (error) {
crfree(cr);
VN_RELE(pbackvp);
@@ -1307,12 +1306,12 @@ cachefs_io_getattrname(vnode_t *vp, void *dinp, void *doutp)
CACHEFS_TMPPTR_SET(&retp->cg_attr, &va, tmpvap, vattr_t);
tmpvap->va_mask = AT_ALL;
- error = VOP_GETATTR(cbackvp, tmpvap, 0, cr);
+ error = VOP_GETATTR(cbackvp, tmpvap, 0, cr, NULL);
CACHEFS_VATTR_COPYOUT(tmpvap, &retp->cg_attr, error);
if (!error) {
CACHEFS_TMPPTR_SET(&retp->cg_fid, &tmpfid, tmpfidp, fid_t);
tmpfidp->fid_len = MAXFIDSZ;
- error = VOP_FID(cbackvp, tmpfidp);
+ error = VOP_FID(cbackvp, tmpfidp, NULL);
CACHEFS_FID_COPYOUT(tmpfidp, &retp->cg_fid);
}
@@ -1415,7 +1414,7 @@ cachefs_io_pushback(vnode_t *vp, void *dinp, void *doutp)
}
/* do open so NFS gets correct creds on writes */
- error = VOP_OPEN(&backvp, FWRITE, cr);
+ error = VOP_OPEN(&backvp, FWRITE, cr, NULL);
if (error) {
mutex_exit(&cp->c_statelock);
goto out;
@@ -1450,9 +1449,9 @@ cachefs_io_pushback(vnode_t *vp, void *dinp, void *doutp)
off += amt;
}
- error = VOP_FSYNC(backvp, FSYNC, cr);
+ error = VOP_FSYNC(backvp, FSYNC, cr, NULL);
if (error == 0)
- error = VOP_CLOSE(backvp, FWRITE, 1, (offset_t)0, cr);
+ error = VOP_CLOSE(backvp, FWRITE, 1, (offset_t)0, cr, NULL);
if (error) {
mutex_exit(&cp->c_statelock);
goto out;
@@ -1469,7 +1468,7 @@ cachefs_io_pushback(vnode_t *vp, void *dinp, void *doutp)
* new ctime and mtimes.
*/
va.va_mask = AT_ALL;
- error = VOP_GETATTR(backvp, &va, 0, cr);
+ error = VOP_GETATTR(backvp, &va, 0, cr, NULL);
if (error)
goto out;
CACHEFS_TS_TO_CFS_TS_COPY(&va.va_ctime, &retp->pb_ctime, error);
@@ -1527,21 +1526,21 @@ cachefs_io_create(vnode_t *vp, void *dinp, void *doutp)
CACHEFS_TMPPTR_SET(&crp->cr_va, &va, tmpvap, vattr_t);
CACHEFS_VATTR_COPYIN(&crp->cr_va, tmpvap);
error = VOP_CREATE(dvp, crp->cr_name, tmpvap,
- crp->cr_exclusive, crp->cr_mode, &cvp, cr, 0);
+ crp->cr_exclusive, crp->cr_mode, &cvp, cr, 0, NULL, NULL);
if (error)
goto out;
/* get the fid of the file */
CACHEFS_TMPPTR_SET(&retp->cr_newfid, &tmpfid, tmpfidp, fid_t);
tmpfidp->fid_len = MAXFIDSZ;
- error = VOP_FID(cvp, tmpfidp);
+ error = VOP_FID(cvp, tmpfidp, NULL);
if (error)
goto out;
CACHEFS_FID_COPYOUT(tmpfidp, &retp->cr_newfid);
/* get attributes for the file */
va.va_mask = AT_ALL;
- error = VOP_GETATTR(cvp, &va, 0, cr);
+ error = VOP_GETATTR(cvp, &va, 0, cr, NULL);
if (error)
goto out;
CACHEFS_TS_TO_CFS_TS_COPY(&va.va_ctime, &retp->cr_ctime, error);
@@ -1614,10 +1613,11 @@ cachefs_io_remove(vnode_t *vp, void *dinp, void *doutp)
/* if the caller wants the ctime after the remove */
if (ctimep) {
- error = VOP_LOOKUP(dvp, rmp->rm_name, &cvp, NULL, 0, NULL, cr);
+ error = VOP_LOOKUP(dvp, rmp->rm_name, &cvp, NULL, 0, NULL, cr,
+ NULL, NULL, NULL);
if (error == 0) {
child_fid.fid_len = MAXFIDSZ;
- error = VOP_FID(cvp, &child_fid);
+ error = VOP_FID(cvp, &child_fid, NULL);
VN_RELE(cvp);
}
if (error)
@@ -1625,7 +1625,7 @@ cachefs_io_remove(vnode_t *vp, void *dinp, void *doutp)
}
/* do the remove */
- error = VOP_REMOVE(dvp, rmp->rm_name, cr);
+ error = VOP_REMOVE(dvp, rmp->rm_name, cr, NULL, 0);
if (error)
goto out;
@@ -1634,7 +1634,7 @@ cachefs_io_remove(vnode_t *vp, void *dinp, void *doutp)
error = VFS_VGET(fscp->fs_backvfsp, &cvp, &child_fid);
if (error == 0) {
va.va_mask = AT_ALL;
- error = VOP_GETATTR(cvp, &va, 0, cr);
+ error = VOP_GETATTR(cvp, &va, 0, cr, NULL);
if (error == 0) {
CACHEFS_TS_TO_CFS_TS_COPY(&va.va_ctime,
ctimep, error);
@@ -1697,13 +1697,13 @@ cachefs_io_link(vnode_t *vp, void *dinp, void *doutp)
cr = conj_cred(&linkp->ln_cred);
/* do the link */
- error = VOP_LINK(dvp, lvp, linkp->ln_name, cr);
+ error = VOP_LINK(dvp, lvp, linkp->ln_name, cr, NULL, 0);
if (error)
goto out;
/* get the ctime */
va.va_mask = AT_ALL;
- error = VOP_GETATTR(lvp, &va, 0, cr);
+ error = VOP_GETATTR(lvp, &va, 0, cr, NULL);
if (error)
goto out;
CACHEFS_TS_TO_CFS_TS_COPY(&va.va_ctime, ctimep, error);
@@ -1771,14 +1771,14 @@ cachefs_io_rename(vnode_t *vp, void *dinp, void *doutp)
/* if the caller wants the ctime of the target after deletion */
if (rnp->rn_del_getctime) {
error = VOP_LOOKUP(ndvp, rnp->rn_newname, &cvp, NULL, 0,
- NULL, cr);
+ NULL, cr, NULL, NULL, NULL);
if (error) {
cvp = NULL; /* paranoia */
goto out;
}
child_fid.fid_len = MAXFIDSZ;
- error = VOP_FID(cvp, &child_fid);
+ error = VOP_FID(cvp, &child_fid, NULL);
if (error)
goto out;
VN_RELE(cvp);
@@ -1786,17 +1786,19 @@ cachefs_io_rename(vnode_t *vp, void *dinp, void *doutp)
}
/* do the rename */
- error = VOP_RENAME(odvp, rnp->rn_oldname, ndvp, rnp->rn_newname, cr);
+ error = VOP_RENAME(odvp, rnp->rn_oldname, ndvp, rnp->rn_newname, cr,
+ NULL, 0);
if (error)
goto out;
/* get the new ctime on the renamed file */
- error = VOP_LOOKUP(ndvp, rnp->rn_newname, &cvp, NULL, 0, NULL, cr);
+ error = VOP_LOOKUP(ndvp, rnp->rn_newname, &cvp, NULL, 0, NULL, cr,
+ NULL, NULL, NULL);
if (error)
goto out;
va.va_mask = AT_ALL;
- error = VOP_GETATTR(cvp, &va, 0, cr);
+ error = VOP_GETATTR(cvp, &va, 0, cr, NULL);
if (error)
goto out;
CACHEFS_TS_TO_CFS_TS_COPY(&va.va_ctime, &retp->rn_ctime, error);
@@ -1815,7 +1817,7 @@ cachefs_io_rename(vnode_t *vp, void *dinp, void *doutp)
goto out;
}
va.va_mask = AT_ALL;
- error = VOP_GETATTR(cvp, &va, 0, cr);
+ error = VOP_GETATTR(cvp, &va, 0, cr, NULL);
if (error)
goto out;
CACHEFS_TS_TO_CFS_TS_COPY(&va.va_ctime, &retp->rn_del_ctime,
@@ -1878,14 +1880,14 @@ cachefs_io_mkdir(vnode_t *vp, void *dinp, void *doutp)
/* make the directory */
CACHEFS_TMPPTR_SET(&mdirp->md_vattr, &va, tmpvap, vattr_t);
CACHEFS_VATTR_COPYIN(&mdirp->md_vattr, tmpvap);
- error = VOP_MKDIR(dvp, mdirp->md_name, tmpvap, &cvp, cr);
+ error = VOP_MKDIR(dvp, mdirp->md_name, tmpvap, &cvp, cr, NULL, 0, NULL);
if (error) {
if (error != EEXIST)
goto out;
/* if the directory already exists, then use it */
error = VOP_LOOKUP(dvp, mdirp->md_name, &cvp,
- NULL, 0, NULL, cr);
+ NULL, 0, NULL, cr, NULL, NULL, NULL);
if (error) {
cvp = NULL;
goto out;
@@ -1899,14 +1901,14 @@ cachefs_io_mkdir(vnode_t *vp, void *dinp, void *doutp)
/* get the fid of the directory */
CACHEFS_TMPPTR_SET(fidp, &tmpfid, tmpfidp, fid_t);
tmpfidp->fid_len = MAXFIDSZ;
- error = VOP_FID(cvp, tmpfidp);
+ error = VOP_FID(cvp, tmpfidp, NULL);
if (error)
goto out;
CACHEFS_FID_COPYOUT(tmpfidp, fidp);
/* get attributes of the directory */
va.va_mask = AT_ALL;
- error = VOP_GETATTR(cvp, &va, 0, cr);
+ error = VOP_GETATTR(cvp, &va, 0, cr, NULL);
if (error)
goto out;
@@ -1969,7 +1971,7 @@ cachefs_io_rmdir(vnode_t *vp, void *dinp, void *doutp)
}
cr = conj_cred(&rdp->rd_cred);
- error = VOP_RMDIR(dvp, rdp->rd_name, dvp, cr);
+ error = VOP_RMDIR(dvp, rdp->rd_name, dvp, cr, NULL, 0);
crfree(cr);
VN_RELE(dvp);
@@ -2019,18 +2021,19 @@ cachefs_io_symlink(vnode_t *vp, void *dinp, void *doutp)
CACHEFS_TMPPTR_SET(&symp->sy_vattr, &va, tmpvap, vattr_t);
CACHEFS_VATTR_COPYIN(&symp->sy_vattr, tmpvap);
error = VOP_SYMLINK(dvp, symp->sy_name, tmpvap,
- symp->sy_link, cr);
+ symp->sy_link, cr, NULL, 0);
if (error)
goto out;
/* get the vnode for the symlink */
- error = VOP_LOOKUP(dvp, symp->sy_name, &svp, NULL, 0, NULL, cr);
+ error = VOP_LOOKUP(dvp, symp->sy_name, &svp, NULL, 0, NULL, cr,
+ NULL, NULL, NULL);
if (error)
goto out;
/* get the attributes of the symlink */
va.va_mask = AT_ALL;
- error = VOP_GETATTR(svp, &va, 0, cr);
+ error = VOP_GETATTR(svp, &va, 0, cr, NULL);
if (error)
goto out;
CACHEFS_TS_TO_CFS_TS_COPY(&va.va_ctime, &retp->sy_ctime, error);
@@ -2041,7 +2044,7 @@ cachefs_io_symlink(vnode_t *vp, void *dinp, void *doutp)
/* get the fid */
CACHEFS_TMPPTR_SET(&retp->sy_newfid, &tmpfid, tmpfidp, fid_t);
tmpfidp->fid_len = MAXFIDSZ;
- error = VOP_FID(svp, tmpfidp);
+ error = VOP_FID(svp, tmpfidp, NULL);
if (error)
goto out;
CACHEFS_FID_COPYOUT(tmpfidp, &retp->sy_newfid);
@@ -2120,7 +2123,7 @@ cachefs_io_setattr(vnode_t *vp, void *dinp, void *doutp)
/* get the new ctime and mtime */
va.va_mask = AT_ALL;
- error = VOP_GETATTR(cvp, &va, 0, cr);
+ error = VOP_GETATTR(cvp, &va, 0, cr, NULL);
if (error)
goto out;
CACHEFS_TS_TO_CFS_TS_COPY(&va.va_ctime, &retp->sa_ctime, error);
@@ -2181,14 +2184,14 @@ cachefs_io_setsecattr(vnode_t *vp, void *dinp, void *doutp)
/* set the ACL */
(void) VOP_RWLOCK(tvp, V_WRITELOCK_TRUE, NULL);
- error = VOP_SETSECATTR(tvp, &vsec, 0, cr);
+ error = VOP_SETSECATTR(tvp, &vsec, 0, cr, NULL);
VOP_RWUNLOCK(tvp, V_WRITELOCK_TRUE, NULL);
if (error != 0)
goto out;
/* get the new ctime and mtime */
va.va_mask = AT_ALL;
- error = VOP_GETATTR(tvp, &va, 0, cr);
+ error = VOP_GETATTR(tvp, &va, 0, cr, NULL);
if (error)
goto out;
CACHEFS_TS_TO_CFS_TS_COPY(&va.va_ctime, &retp->sc_ctime, error);
@@ -2223,7 +2226,7 @@ drop_backvp(cnode_t *cp)
if (cp->c_backvp) {
/* dump any pages, may be a dirty one */
(void) VOP_PUTPAGE(cp->c_backvp, (offset_t)0, 0,
- B_INVAL | B_TRUNC, kcred);
+ B_INVAL | B_TRUNC, kcred, NULL);
}
mutex_exit(&cp->c_statelock);
}