/*
- * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
#include <ufs/ffs/ffs_extern.h>
#if REV_ENDIAN_FS
#include <ufs/ufs/ufs_byte_order.h>
-#include <architecture/byte_order.h>
+#include <libkern/OSByteOrder.h>
#endif /* REV_ENDIAN_FS */
int ffs_sbupdate(struct ufsmount *, int);
return(0);
}
}
- if ((mp->mnt_flag & MNT_UPDATE) == 0)
+ if ((mp->mnt_flag & MNT_UPDATE) == 0) {
+ ufs_ihashinit();
error = ffs_mountfs(devvp, mp, context);
- else {
+ } else {
if (devvp != ump->um_devvp)
error = EINVAL; /* needs translation */
}
error = EINVAL;
goto out;
}
-
- /*
- * Buffer cache does not handle multiple pages in a buf when
-
/*
* Buffer cache does not handle multiple pages in a buf when
length = ulp->ul_namelen;
#if REV_ENDIAN_FS
if (mp->mnt_flag & MNT_REVEND)
- length = NXSwapShort(length);
+ length = OSSwapInt16(length);
#endif
if (length > 0 && length <= UFS_MAX_LABEL_NAME) {
bcopy(ulp->ul_name, fsap->f_vol_name, length);
VOL_CAP_FMT_SPARSE_FILES |
VOL_CAP_FMT_CASE_SENSITIVE |
VOL_CAP_FMT_CASE_PRESERVING |
- VOL_CAP_FMT_FAST_STATFS ;
+ VOL_CAP_FMT_FAST_STATFS |
+ VOL_CAP_FMT_HIDDEN_FILES ;
fsap->f_capabilities.capabilities[VOL_CAPABILITIES_INTERFACES]
= VOL_CAP_INT_NFSEXPORT |
VOL_CAP_INT_VOL_RENAME |
VOL_CAP_FMT_CASE_SENSITIVE |
VOL_CAP_FMT_CASE_PRESERVING |
VOL_CAP_FMT_FAST_STATFS |
- VOL_CAP_FMT_2TB_FILESIZE;
+ VOL_CAP_FMT_2TB_FILESIZE |
+ VOL_CAP_FMT_OPENDENYMODES |
+ VOL_CAP_FMT_HIDDEN_FILES ;
fsap->f_capabilities.valid[VOL_CAPABILITIES_INTERFACES] =
VOL_CAP_INT_SEARCHFS |
VOL_CAP_INT_ATTRLIST |
VOL_CAP_INT_ALLOCATE |
VOL_CAP_INT_VOL_RENAME |
VOL_CAP_INT_ADVLOCK |
- VOL_CAP_INT_FLOCK ;
+ VOL_CAP_INT_FLOCK |
+ VOL_CAP_INT_MANLOCK;
fsap->f_capabilities.valid[VOL_CAPABILITIES_RESERVED1] = 0;
fsap->f_capabilities.valid[VOL_CAPABILITIES_RESERVED2] = 0;
/* Copy new name over existing name */
ulp->ul_namelen = strlen(fsap->f_vol_name);
-#if REV_ENDIAN_FS
- if (mp->mnt_flag & MNT_REVEND)
- ulp->ul_namelen = NXSwapShort(ulp->ul_namelen);
-#endif
bcopy(fsap->f_vol_name, ulp->ul_name, ulp->ul_namelen);
ulp->ul_name[UFS_MAX_LABEL_NAME - 1] = '\0';
ulp->ul_name[ulp->ul_namelen] = '\0';
+#if REV_ENDIAN_FS
+ if (mp->mnt_flag & MNT_REVEND)
+ ulp->ul_namelen = OSSwapInt16(ulp->ul_namelen);
+#endif
+
/* Update the checksum */
ulp->ul_checksum = 0;
ulp->ul_checksum = ul_cksum(ulp, sizeof(*ulp));
struct vnode *nvp;
struct fs *fs;
int error;
+ ino_t ino;
if (fhlen < (int)sizeof(struct ufid))
return (EINVAL);
ufhp = (struct ufid *)fhp;
fs = VFSTOUFS(mp)->um_fs;
- if (ufhp->ufid_ino < ROOTINO ||
- ufhp->ufid_ino >= fs->fs_ncg * fs->fs_ipg)
+ ino = ntohl(ufhp->ufid_ino);
+ if (ino < ROOTINO || ino >= fs->fs_ncg * fs->fs_ipg)
return (ESTALE);
- error = ffs_vget_internal(mp, ufhp->ufid_ino, &nvp, NULL, NULL, 0, 1);
+ error = ffs_vget_internal(mp, ino, &nvp, NULL, NULL, 0, 1);
if (error) {
*vpp = NULLVP;
return (error);
}
ip = VTOI(nvp);
- if (ip->i_mode == 0 || ip->i_gen != ufhp->ufid_gen) {
+ if (ip->i_mode == 0 || ip->i_gen != ntohl(ufhp->ufid_gen)) {
vnode_put(nvp);
*vpp = NULLVP;
return (ESTALE);
return (EOVERFLOW);
ip = VTOI(vp);
ufhp = (struct ufid *)fhp;
- ufhp->ufid_ino = ip->i_number;
- ufhp->ufid_gen = ip->i_gen;
+ ufhp->ufid_ino = htonl(ip->i_number);
+ ufhp->ufid_gen = htonl(ip->i_gen);
*fhlenp = sizeof(struct ufid);
return (0);
}
* before writing
*/
if (rev_endian) {
- dfs->fs_maxfilesize = NXSwapLongLong(mp->um_savedmaxfilesize); /* XXX */
+ dfs->fs_maxfilesize = OSSwapInt64(mp->um_savedmaxfilesize); /* XXX */
} else {
#endif /* REV_ENDIAN_FS */
dfs->fs_maxfilesize = mp->um_savedmaxfilesize; /* XXX */