SCCS-vsn: sys/ufs/ffs/ufs_vnops.c 7.71
SCCS-vsn: sys/ufs/ufs/ufs_vnops.c 7.71
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)ufs_vnops.c 7.70 (Berkeley) %G%
+ * @(#)ufs_vnops.c 7.71 (Berkeley) %G%
*/
#include <sys/param.h>
*/
#include <sys/param.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/ufs_extern.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/ufs_extern.h>
-static int ufs_chmod __P((struct vnode *, int, struct proc *));
-static int ufs_chown __P((struct vnode *, u_int, u_int, struct proc *));
+int ufs_chmod __P((struct vnode *, int, struct proc *));
+int ufs_chown __P((struct vnode *, u_int, u_int, struct proc *));
enum vtype iftovt_tab[16] = {
VNON, VFIFO, VCHR, VNON, VDIR, VNON, VBLK, VNON,
enum vtype iftovt_tab[16] = {
VNON, VFIFO, VCHR, VNON, VDIR, VNON, VBLK, VNON,
0, IFREG, IFDIR, IFBLK, IFCHR, IFLNK, IFSOCK, IFIFO, IFMT,
};
0, IFREG, IFDIR, IFBLK, IFCHR, IFLNK, IFSOCK, IFIFO, IFMT,
};
+#ifdef _NOQUAD
+#define SETHIGH(q, h) (q).val[_QUAD_HIGHWORD] = (h)
+#define SETLOW(q, l) (q).val[_QUAD_LOWWORD] = (l)
+#else /* QUAD */
+union _qcvt {
+ quad_t qcvt;
+ long val[2];
+};
+#define SETHIGH(q, h) { \
+ union _qcvt tmp; \
+ tmp.qcvt = (q); \
+ tmp.val[_QUAD_HIGHWORD] = (h); \
+ (q) = tmp.qcvt; \
+}
+#define SETLOW(q, l) { \
+ union _qcvt tmp; \
+ tmp.qcvt = (q); \
+ tmp.val[_QUAD_LOWWORD] = (l); \
+ (q) = tmp.qcvt; \
+}
+#endif /* QUAD */
+
/*
* Create a regular file
*/
/*
* Create a regular file
*/
else
vap->va_blocksize = vp->v_mount->mnt_stat.f_iosize;
vap->va_bytes = dbtob(ip->i_blocks);
else
vap->va_blocksize = vp->v_mount->mnt_stat.f_iosize;
vap->va_bytes = dbtob(ip->i_blocks);
vap->va_type = vp->v_type;
vap->va_type = vp->v_type;
+ vap->va_filerev = ip->i_modrev;
}
if (ip->i_number == ROOTINO)
vp->v_flag |= VROOT;
}
if (ip->i_number == ROOTINO)
vp->v_flag |= VROOT;
+ /*
+ * Initialize modrev times
+ */
+ SETHIGH(ip->i_modrev, mono_time.tv_sec);
+ SETLOW(ip->i_modrev, mono_time.tv_usec * 4294);
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)ufs_vnops.c 7.70 (Berkeley) %G%
+ * @(#)ufs_vnops.c 7.71 (Berkeley) %G%
*/
#include <sys/param.h>
*/
#include <sys/param.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/ufs_extern.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/ufs_extern.h>
-static int ufs_chmod __P((struct vnode *, int, struct proc *));
-static int ufs_chown __P((struct vnode *, u_int, u_int, struct proc *));
+int ufs_chmod __P((struct vnode *, int, struct proc *));
+int ufs_chown __P((struct vnode *, u_int, u_int, struct proc *));
enum vtype iftovt_tab[16] = {
VNON, VFIFO, VCHR, VNON, VDIR, VNON, VBLK, VNON,
enum vtype iftovt_tab[16] = {
VNON, VFIFO, VCHR, VNON, VDIR, VNON, VBLK, VNON,
0, IFREG, IFDIR, IFBLK, IFCHR, IFLNK, IFSOCK, IFIFO, IFMT,
};
0, IFREG, IFDIR, IFBLK, IFCHR, IFLNK, IFSOCK, IFIFO, IFMT,
};
+#ifdef _NOQUAD
+#define SETHIGH(q, h) (q).val[_QUAD_HIGHWORD] = (h)
+#define SETLOW(q, l) (q).val[_QUAD_LOWWORD] = (l)
+#else /* QUAD */
+union _qcvt {
+ quad_t qcvt;
+ long val[2];
+};
+#define SETHIGH(q, h) { \
+ union _qcvt tmp; \
+ tmp.qcvt = (q); \
+ tmp.val[_QUAD_HIGHWORD] = (h); \
+ (q) = tmp.qcvt; \
+}
+#define SETLOW(q, l) { \
+ union _qcvt tmp; \
+ tmp.qcvt = (q); \
+ tmp.val[_QUAD_LOWWORD] = (l); \
+ (q) = tmp.qcvt; \
+}
+#endif /* QUAD */
+
/*
* Create a regular file
*/
/*
* Create a regular file
*/
else
vap->va_blocksize = vp->v_mount->mnt_stat.f_iosize;
vap->va_bytes = dbtob(ip->i_blocks);
else
vap->va_blocksize = vp->v_mount->mnt_stat.f_iosize;
vap->va_bytes = dbtob(ip->i_blocks);
vap->va_type = vp->v_type;
vap->va_type = vp->v_type;
+ vap->va_filerev = ip->i_modrev;
}
if (ip->i_number == ROOTINO)
vp->v_flag |= VROOT;
}
if (ip->i_number == ROOTINO)
vp->v_flag |= VROOT;
+ /*
+ * Initialize modrev times
+ */
+ SETHIGH(ip->i_modrev, mono_time.tv_sec);
+ SETLOW(ip->i_modrev, mono_time.tv_usec * 4294);