{
struct hfs_btree *tree;
struct hfs_bnode *bnode;
- u32 data, nidx, parent;
+ u32 nidx, parent;
+ __be32 data;
int height, res;
tree = fd->tree;
* Accesses memory in 32-bit aligned chunks of 32-bits and thus
* may read beyond the 'size'th bit.
*/
-static u32 hfs_find_set_zero_bits(u32 *bitmap, u32 size, u32 offset, u32 *max)
+static u32 hfs_find_set_zero_bits(__be32 *bitmap, u32 size, u32 offset, u32 *max)
{
- u32 *curr, *end;
- u32 val, mask, start, len;
+ __be32 *curr, *end;
+ u32 mask, start, len, n;
+ __be32 val;
int i;
len = *max;
/* scan the first partial u32 for zero bits */
val = *curr;
if (~val) {
- val = be32_to_cpu(val);
+ n = be32_to_cpu(val);
i = offset % 32;
mask = (1U << 31) >> i;
for (; i < 32; mask >>= 1, i++) {
- if (!(val & mask))
+ if (!(n & mask))
goto found;
}
}
while (++curr < end) {
val = *curr;
if (~val) {
- val = be32_to_cpu(val);
+ n = be32_to_cpu(val);
mask = 1 << 31;
for (i = 0; i < 32; mask >>= 1, i++) {
- if (!(val & mask))
+ if (!(n & mask))
goto found;
}
}
/* do any partial u32 at the start */
len = min(size - start, len);
while (1) {
- val |= mask;
+ n |= mask;
if (++i >= 32)
break;
mask >>= 1;
- if (!--len || val & mask)
+ if (!--len || n & mask)
goto done;
}
if (!--len)
goto done;
- *curr++ = cpu_to_be32(val);
+ *curr++ = cpu_to_be32(n);
/* do full u32s */
while (1) {
- val = be32_to_cpu(*curr);
+ n = be32_to_cpu(*curr);
if (len < 32)
break;
- if (val) {
+ if (n) {
len = 32;
break;
}
- *curr++ = 0xffffffffU;
+ *curr++ = cpu_to_be32(0xffffffff);
len -= 32;
}
/* do any partial u32 at end */
mask = 1U << 31;
for (i = 0; i < len; i++) {
- if (val & mask)
+ if (n & mask)
break;
- val |= mask;
+ n |= mask;
mask >>= 1;
}
done:
- *curr = cpu_to_be32(val);
+ *curr = cpu_to_be32(n);
*max = (curr - bitmap) * 32 + i - start;
return start;
}
*/
int hfs_clear_vbm_bits(struct super_block *sb, u16 start, u16 count)
{
- u32 *curr;
+ __be32 *curr;
u32 mask;
int i, len;
u16 hfs_bnode_read_u16(struct hfs_bnode *node, int off)
{
- u16 data;
+ __be16 data;
// optimize later...
hfs_bnode_read(node, &data, off, 2);
return be16_to_cpu(data);
void hfs_bnode_write_u16(struct hfs_bnode *node, int off, u16 data)
{
- data = cpu_to_be16(data);
+ __be16 v = cpu_to_be16(data);
// optimize later...
- hfs_bnode_write(node, &data, off, 2);
+ hfs_bnode_write(node, &v, off, 2);
}
void hfs_bnode_write_u8(struct hfs_bnode *node, int off, u8 data)
void hfs_bnode_dump(struct hfs_bnode *node)
{
struct hfs_bnode_desc desc;
- u32 cnid;
+ __be32 cnid;
int i, off, key_off;
dprint(DBG_BNODE_MOD, "bnode: %d\n", node->this);
{
struct hfs_btree *tree;
struct hfs_bnode *tmp;
- u32 cnid;
+ __be32 cnid;
tree = node->tree;
if (node->prev) {
/* Get the length and offset of the given record in the given node */
u16 hfs_brec_lenoff(struct hfs_bnode *node, u16 rec, u16 *off)
{
- u16 retval[2];
+ __be16 retval[2];
u16 dataoff;
dataoff = node->tree->node_size - (rec + 2) * 2;
int size, key_len, rec;
int data_off, end_off;
int idx_rec_off, data_rec_off, end_rec_off;
- u32 cnid;
+ __be32 cnid;
tree = fd->tree;
if (!fd->bnode) {
node = parent;
if (new_node) {
- u32 cnid;
+ __be32 cnid;
fd->bnode = hfs_bnode_find(tree, new_node->parent);
/* create index key and entry */
struct hfs_bnode *node, *new_node;
struct hfs_bnode_desc node_desc;
int key_size, rec;
- u32 cnid;
+ __be32 cnid;
node = NULL;
if (tree->root) {
struct hfs_btree *tree = prev->tree;
struct hfs_bnode *node;
struct hfs_bnode_desc desc;
- u32 cnid;
+ __be32 cnid;
node = hfs_bnode_create(tree, idx);
if (IS_ERR(node))
struct hfs_bnode_desc {
- u32 next; /* (V) Number of the next node at this level */
- u32 prev; /* (V) Number of the prev node at this level */
+ __be32 next; /* (V) Number of the next node at this level */
+ __be32 prev; /* (V) Number of the prev node at this level */
u8 type; /* (F) The type of node */
u8 height; /* (F) The level of this node (leaves=1) */
- u16 num_recs; /* (V) The number of records in this node */
+ __be16 num_recs; /* (V) The number of records in this node */
u16 reserved;
} __packed;
#define HFS_NODE_LEAF 0xFF /* A leaf (ndNHeight==1) node */
struct hfs_btree_header_rec {
- u16 depth; /* (V) The number of levels in this B-tree */
- u32 root; /* (V) The node number of the root node */
- u32 leaf_count; /* (V) The number of leaf records */
- u32 leaf_head; /* (V) The number of the first leaf node */
- u32 leaf_tail; /* (V) The number of the last leaf node */
- u16 node_size; /* (F) The number of bytes in a node (=512) */
- u16 max_key_len; /* (F) The length of a key in an index node */
- u32 node_count; /* (V) The total number of nodes */
- u32 free_nodes; /* (V) The number of unused nodes */
+ __be16 depth; /* (V) The number of levels in this B-tree */
+ __be32 root; /* (V) The node number of the root node */
+ __be32 leaf_count; /* (V) The number of leaf records */
+ __be32 leaf_head; /* (V) The number of the first leaf node */
+ __be32 leaf_tail; /* (V) The number of the last leaf node */
+ __be16 node_size; /* (F) The number of bytes in a node (=512) */
+ __be16 max_key_len; /* (F) The length of a key in an index node */
+ __be32 node_count; /* (V) The total number of nodes */
+ __be32 free_nodes; /* (V) The number of unused nodes */
u16 reserved1;
- u32 clump_size; /* (F) clump size. not usually used. */
+ __be32 clump_size; /* (F) clump size. not usually used. */
u8 btree_type; /* (F) BTree type */
u8 reserved2;
- u32 attributes; /* (F) attributes */
+ __be32 attributes; /* (F) attributes */
u32 reserved3[16];
} __packed;
int hfs_cat_build_record(hfs_cat_rec *rec, u32 cnid, struct inode *inode)
{
- u32 mtime = hfs_mtime();
+ __be32 mtime = hfs_mtime();
memset(rec, 0, sizeof(*rec));
if (S_ISDIR(inode->i_mode)) {
int res, i;
if (type == HFS_FK_DATA) {
- total_blocks = file->PyLen;
+ total_blocks = be32_to_cpu(file->PyLen);
extent = file->ExtRec;
} else {
- total_blocks = file->RPyLen;
+ total_blocks = be32_to_cpu(file->RPyLen);
extent = file->RExtRec;
}
- total_blocks = be32_to_cpu(total_blocks) / HFS_SB(sb)->alloc_blksz;
+ total_blocks /= HFS_SB(sb)->alloc_blksz;
if (!total_blocks)
return 0;
} __packed;
struct hfs_point {
- u16 v;
- u16 h;
+ __be16 v;
+ __be16 h;
} __packed;
struct hfs_rect {
- u16 top;
- u16 left;
- u16 bottom;
- u16 right;
+ __be16 top;
+ __be16 left;
+ __be16 bottom;
+ __be16 right;
} __packed;
struct hfs_finfo {
- u32 fdType;
- u32 fdCreator;
- u16 fdFlags;
+ __be32 fdType;
+ __be32 fdCreator;
+ __be16 fdFlags;
struct hfs_point fdLocation;
- u16 fdFldr;
+ __be16 fdFldr;
} __packed;
struct hfs_fxinfo {
- u16 fdIconID;
+ __be16 fdIconID;
u8 fdUnused[8];
- u16 fdComment;
- u32 fdPutAway;
+ __be16 fdComment;
+ __be32 fdPutAway;
} __packed;
struct hfs_dinfo {
struct hfs_rect frRect;
- u16 frFlags;
+ __be16 frFlags;
struct hfs_point frLocation;
- u16 frView;
+ __be16 frView;
} __packed;
struct hfs_dxinfo {
struct hfs_point frScroll;
- u32 frOpenChain;
- u16 frUnused;
- u16 frComment;
- u32 frPutAway;
+ __be32 frOpenChain;
+ __be16 frUnused;
+ __be16 frComment;
+ __be32 frPutAway;
} __packed;
union hfs_finder_info {
struct hfs_cat_key {
u8 key_len; /* number of bytes in the key */
u8 reserved; /* padding */
- u32 ParID; /* CNID of the parent dir */
+ __be32 ParID; /* CNID of the parent dir */
struct hfs_name CName; /* The filename of the entry */
} __packed;
struct hfs_ext_key {
u8 key_len; /* number of bytes in the key */
u8 FkType; /* HFS_FK_{DATA,RSRC} */
- u32 FNum; /* The File ID of the file */
- u16 FABN; /* allocation blocks number*/
+ __be32 FNum; /* The File ID of the file */
+ __be16 FABN; /* allocation blocks number*/
} __packed;
typedef union hfs_btree_key {
typedef union hfs_btree_key btree_key;
struct hfs_extent {
- u16 block;
- u16 count;
+ __be16 block;
+ __be16 count;
};
typedef struct hfs_extent hfs_extent_rec[3];
u8 Flags; /* Flags such as read-only */
s8 Typ; /* file version number = 0 */
struct hfs_finfo UsrWds; /* data used by the Finder */
- u32 FlNum; /* The CNID */
- u16 StBlk; /* obsolete */
- u32 LgLen; /* The logical EOF of the data fork*/
- u32 PyLen; /* The physical EOF of the data fork */
- u16 RStBlk; /* obsolete */
- u32 RLgLen; /* The logical EOF of the rsrc fork */
- u32 RPyLen; /* The physical EOF of the rsrc fork */
- u32 CrDat; /* The creation date */
- u32 MdDat; /* The modified date */
- u32 BkDat; /* The last backup date */
+ __be32 FlNum; /* The CNID */
+ __be16 StBlk; /* obsolete */
+ __be32 LgLen; /* The logical EOF of the data fork*/
+ __be32 PyLen; /* The physical EOF of the data fork */
+ __be16 RStBlk; /* obsolete */
+ __be32 RLgLen; /* The logical EOF of the rsrc fork */
+ __be32 RPyLen; /* The physical EOF of the rsrc fork */
+ __be32 CrDat; /* The creation date */
+ __be32 MdDat; /* The modified date */
+ __be32 BkDat; /* The last backup date */
struct hfs_fxinfo FndrInfo; /* more data for the Finder */
- u16 ClpSize; /* number of bytes to allocate
+ __be16 ClpSize; /* number of bytes to allocate
when extending files */
hfs_extent_rec ExtRec; /* first extent record
for the data fork */
struct hfs_cat_dir {
s8 type; /* The type of entry */
u8 reserved;
- u16 Flags; /* flags */
- u16 Val; /* Valence: number of files and
+ __be16 Flags; /* flags */
+ __be16 Val; /* Valence: number of files and
dirs in the directory */
- u32 DirID; /* The CNID */
- u32 CrDat; /* The creation date */
- u32 MdDat; /* The modification date */
- u32 BkDat; /* The last backup date */
+ __be32 DirID; /* The CNID */
+ __be32 CrDat; /* The creation date */
+ __be32 MdDat; /* The modification date */
+ __be32 BkDat; /* The last backup date */
struct hfs_dinfo UsrInfo; /* data used by the Finder */
struct hfs_dxinfo FndrInfo; /* more data used by Finder */
u8 Resrv[16]; /* reserved by Apple */
struct hfs_cat_thread {
s8 type; /* The type of entry */
u8 reserved[9]; /* reserved by Apple */
- u32 ParID; /* CNID of parent directory */
+ __be32 ParID; /* CNID of parent directory */
struct hfs_name CName; /* The name of this entry */
} __packed;
} hfs_cat_rec;
struct hfs_mdb {
- u16 drSigWord; /* Signature word indicating fs type */
- u32 drCrDate; /* fs creation date/time */
- u32 drLsMod; /* fs modification date/time */
- u16 drAtrb; /* fs attributes */
- u16 drNmFls; /* number of files in root directory */
- u16 drVBMSt; /* location (in 512-byte blocks)
+ __be16 drSigWord; /* Signature word indicating fs type */
+ __be32 drCrDate; /* fs creation date/time */
+ __be32 drLsMod; /* fs modification date/time */
+ __be16 drAtrb; /* fs attributes */
+ __be16 drNmFls; /* number of files in root directory */
+ __be16 drVBMSt; /* location (in 512-byte blocks)
of the volume bitmap */
- u16 drAllocPtr; /* location (in allocation blocks)
+ __be16 drAllocPtr; /* location (in allocation blocks)
to begin next allocation search */
- u16 drNmAlBlks; /* number of allocation blocks */
- u32 drAlBlkSiz; /* bytes in an allocation block */
- u32 drClpSiz; /* clumpsize, the number of bytes to
+ __be16 drNmAlBlks; /* number of allocation blocks */
+ __be32 drAlBlkSiz; /* bytes in an allocation block */
+ __be32 drClpSiz; /* clumpsize, the number of bytes to
allocate when extending a file */
- u16 drAlBlSt; /* location (in 512-byte blocks)
+ __be16 drAlBlSt; /* location (in 512-byte blocks)
of the first allocation block */
- u32 drNxtCNID; /* CNID to assign to the next
+ __be32 drNxtCNID; /* CNID to assign to the next
file or directory created */
- u16 drFreeBks; /* number of free allocation blocks */
+ __be16 drFreeBks; /* number of free allocation blocks */
u8 drVN[28]; /* the volume label */
- u32 drVolBkUp; /* fs backup date/time */
- u16 drVSeqNum; /* backup sequence number */
- u32 drWrCnt; /* fs write count */
- u32 drXTClpSiz; /* clumpsize for the extents B-tree */
- u32 drCTClpSiz; /* clumpsize for the catalog B-tree */
- u16 drNmRtDirs; /* number of directories in
+ __be32 drVolBkUp; /* fs backup date/time */
+ __be16 drVSeqNum; /* backup sequence number */
+ __be32 drWrCnt; /* fs write count */
+ __be32 drXTClpSiz; /* clumpsize for the extents B-tree */
+ __be32 drCTClpSiz; /* clumpsize for the catalog B-tree */
+ __be16 drNmRtDirs; /* number of directories in
the root directory */
- u32 drFilCnt; /* number of files in the fs */
- u32 drDirCnt; /* number of directories in the fs */
+ __be32 drFilCnt; /* number of files in the fs */
+ __be32 drDirCnt; /* number of directories in the fs */
u8 drFndrInfo[32]; /* data used by the Finder */
- u16 drEmbedSigWord; /* embedded volume signature */
- u32 drEmbedExtent; /* starting block number (xdrStABN)
+ __be16 drEmbedSigWord; /* embedded volume signature */
+ __be32 drEmbedExtent; /* starting block number (xdrStABN)
and number of allocation blocks
(xdrNumABlks) occupied by embedded
volume */
- u32 drXTFlSize; /* bytes in the extents B-tree */
+ __be32 drXTFlSize; /* bytes in the extents B-tree */
hfs_extent_rec drXTExtRec; /* extents B-tree's first 3 extents */
- u32 drCTFlSize; /* bytes in the catalog B-tree */
+ __be32 drCTFlSize; /* bytes in the catalog B-tree */
hfs_extent_rec drCTExtRec; /* catalog B-tree's first 3 extents */
} __packed;
struct buffer_head *alt_mdb_bh; /* The hfs_buffer holding
the alternate superblock */
struct hfs_mdb *alt_mdb;
- u32 *bitmap; /* The page holding the
+ __be32 *bitmap; /* The page holding the
allocation bitmap */
struct hfs_btree *ext_tree; /* Information about
the extents b-tree */
"allocation block" */
int s_quiet; /* Silent failure when
changing owner or mode? */
- u32 s_type; /* Type for new files */
- u32 s_creator; /* Creator for new files */
+ __be32 s_type; /* Type for new files */
+ __be32 s_creator; /* Creator for new files */
umode_t s_file_umask; /* The umask applied to the
permissions on all files */
umode_t s_dir_umask; /* The umask applied to the
extern struct address_space_operations hfs_btree_aops;
extern struct inode *hfs_new_inode(struct inode *, struct qstr *, int);
-extern void hfs_inode_write_fork(struct inode *, struct hfs_extent *, u32 *, u32 *);
+extern void hfs_inode_write_fork(struct inode *, struct hfs_extent *, __be32 *, __be32 *);
extern int hfs_write_inode(struct inode *, int);
extern int hfs_inode_setattr(struct dentry *, struct iattr *);
extern void hfs_inode_read_fork(struct inode *inode, struct hfs_extent *ext,
- u32 log_size, u32 phys_size, u32 clump_size);
+ __be32 log_size, __be32 phys_size, u32 clump_size);
extern struct inode *hfs_iget(struct super_block *, struct hfs_cat_key *, hfs_cat_rec *);
extern void hfs_clear_inode(struct inode *);
extern void hfs_delete_inode(struct inode *);
dprint(DBG_INODE, "delete_inode: %lu\n", inode->i_ino);
if (S_ISDIR(inode->i_mode)) {
HFS_SB(sb)->folder_count--;
- if (HFS_I(inode)->cat_key.ParID == be32_to_cpu(HFS_ROOT_CNID))
+ if (HFS_I(inode)->cat_key.ParID == cpu_to_be32(HFS_ROOT_CNID))
HFS_SB(sb)->root_dirs--;
set_bit(HFS_FLG_MDB_DIRTY, &HFS_SB(sb)->flags);
sb->s_dirt = 1;
return;
}
HFS_SB(sb)->file_count--;
- if (HFS_I(inode)->cat_key.ParID == be32_to_cpu(HFS_ROOT_CNID))
+ if (HFS_I(inode)->cat_key.ParID == cpu_to_be32(HFS_ROOT_CNID))
HFS_SB(sb)->root_files--;
if (S_ISREG(inode->i_mode)) {
if (!inode->i_nlink) {
}
void hfs_inode_read_fork(struct inode *inode, struct hfs_extent *ext,
- u32 log_size, u32 phys_size, u32 clump_size)
+ __be32 __log_size, __be32 phys_size, u32 clump_size)
{
struct super_block *sb = inode->i_sb;
+ u32 log_size = be32_to_cpu(__log_size);
u16 count;
int i;
count += be16_to_cpu(ext[i].count);
HFS_I(inode)->first_blocks = count;
- log_size = be32_to_cpu(log_size);
inode->i_size = HFS_I(inode)->phys_size = log_size;
inode->i_blocks = (log_size + sb->s_blocksize - 1) >> sb->s_blocksize_bits;
HFS_I(inode)->alloc_blocks = be32_to_cpu(phys_size) /
}
void hfs_inode_write_fork(struct inode *inode, struct hfs_extent *ext,
- u32 *log_size, u32 *phys_size)
+ __be32 *log_size, __be32 *phys_size)
{
memcpy(ext, HFS_I(inode)->first_extents, sizeof(hfs_extent_rec));
int off2, len, size, sect;
sector_t part_start, part_size;
loff_t off;
- u16 attrib;
+ __be16 attrib;
/* set the device driver to 512-byte blocks */
size = sb_min_blocksize(sb, HFS_SECTOR_SIZE);
hfs_warn("hfs_fs: continuing without an alternate MDB\n");
}
- HFS_SB(sb)->bitmap = (u32 *)__get_free_pages(GFP_KERNEL, PAGE_SIZE < 8192 ? 1 : 0);
+ HFS_SB(sb)->bitmap = (__be32 *)__get_free_pages(GFP_KERNEL, PAGE_SIZE < 8192 ? 1 : 0);
if (!HFS_SB(sb)->bitmap)
goto out;
* contiguous starting at block 1.
*/
struct new_pmap {
- u16 pmSig; /* signature */
- u16 reSigPad; /* padding */
- u32 pmMapBlkCnt; /* partition blocks count */
- u32 pmPyPartStart; /* physical block start of partition */
- u32 pmPartBlkCnt; /* physical block count of partition */
+ __be16 pmSig; /* signature */
+ __be16 reSigPad; /* padding */
+ __be32 pmMapBlkCnt; /* partition blocks count */
+ __be32 pmPyPartStart; /* physical block start of partition */
+ __be32 pmPartBlkCnt; /* physical block count of partition */
u8 pmPartName[32]; /* (null terminated?) string
giving the name of this
partition */
* one of these.
*/
struct old_pmap {
- u16 pdSig; /* Signature bytes */
+ __be16 pdSig; /* Signature bytes */
struct old_pmap_entry {
- u32 pdStart;
- u32 pdSize;
- u32 pdFSID;
+ __be32 pdStart;
+ __be32 pdSize;
+ __be32 pdFSID;
} pdEntry[42];
} __packed;
sector_t *part_start, sector_t *part_size)
{
struct buffer_head *bh;
- u16 *data;
+ __be16 *data;
int i, size, res;
res = -ENOENT;
hsb->s_gid = current->gid;
hsb->s_file_umask = 0644;
hsb->s_dir_umask = 0755;
- hsb->s_type = 0x3f3f3f3f; /* == '????' */
- hsb->s_creator = 0x3f3f3f3f; /* == '????' */
+ hsb->s_type = hsb->s_creator = cpu_to_be32(0x3f3f3f3f); /* == '????' */
hsb->s_quiet = 0;
hsb->part = -1;
hsb->session = -1;
} else if (!strcmp(this_char, "type") && value) {
if (strlen(value) != 4)
return 0;
- hsb->s_type = *(u32 *)value;
+ memcpy(&hsb->s_type, value, 4);
} else if (!strcmp(this_char, "creator") && value) {
if (strlen(value) != 4)
return 0;
- hsb->s_creator = *(u32 *)value;
+ memcpy(&hsb->s_creator, value, 4);
/* Boolean-valued options */
} else if (!strcmp(this_char, "quiet")) {
if (value)