struct inomap *imap;
struct metapage *mp;
int index;
- struct dinomap *dinom_le;
+ struct dinomap_disk *dinom_le;
/*
* allocate/initialize the in-memory inode map control structure
}
/* copy the on-disk version to the in-memory version. */
- dinom_le = (struct dinomap *) mp->data;
+ dinom_le = (struct dinomap_disk *) mp->data;
imap->im_freeiag = le32_to_cpu(dinom_le->in_freeiag);
imap->im_nextiag = le32_to_cpu(dinom_le->in_nextiag);
atomic_set(&imap->im_numinos, le32_to_cpu(dinom_le->in_numinos));
*/
int diSync(struct inode *ipimap)
{
- struct dinomap *dinom_le;
+ struct dinomap_disk *dinom_le;
struct inomap *imp = JFS_IP(ipimap)->i_imap;
struct metapage *mp;
int index;
}
/* copy the in-memory version to the on-disk version */
- dinom_le = (struct dinomap *) mp->data;
+ dinom_le = (struct dinomap_disk *) mp->data;
dinom_le->in_freeiag = cpu_to_le32(imp->im_freeiag);
dinom_le->in_nextiag = cpu_to_le32(imp->im_nextiag);
dinom_le->in_numinos = cpu_to_le32(atomic_read(&imp->im_numinos));
*/
iagp->inofreefwd =
cpu_to_le32(imap->im_agctl[agno].inofree);
- iagp->inofreeback = -1;
+ iagp->inofreeback = cpu_to_le32(-1);
imap->im_agctl[agno].inofree = iagno;
}
IREAD_UNLOCK(ipimap);
* inodes (i.e., the inode being freed is the first free
* inode of extent),
*/
- if (iagp->wmap[extno] == ONES) {
+ if (iagp->wmap[extno] == cpu_to_le32(ONES)) {
sword = extno >> L2EXTSPERSUM;
bitno = extno & (EXTSPERSUM - 1);
iagp->inosmap[sword] &=
iagp->extfreefwd =
cpu_to_le32(imap->im_agctl[agno].extfree);
- iagp->extfreeback = -1;
+ iagp->extfreeback = cpu_to_le32(-1);
imap->im_agctl[agno].extfree = iagno;
} else {
/* remove the iag from the ag extent list if all extents
imap->im_agctl[agno].extfree =
le32_to_cpu(iagp->extfreefwd);
- iagp->extfreefwd = iagp->extfreeback = -1;
+ iagp->extfreefwd = iagp->extfreeback = cpu_to_le32(-1);
IAGFREE_LOCK(imap);
iagp->iagfree = cpu_to_le32(imap->im_freeiag);
imap->im_agctl[agno].inofree =
le32_to_cpu(iagp->inofreefwd);
- iagp->inofreefwd = iagp->inofreeback = -1;
+ iagp->inofreefwd = iagp->inofreeback = cpu_to_le32(-1);
}
/* update the inode extent address and working map
* allocated. if so, update the free inode summary
* map to reflect this.
*/
- if (iagp->wmap[extno] == ONES) {
+ if (iagp->wmap[extno] == cpu_to_le32(ONES)) {
sword = extno >> L2EXTSPERSUM;
bitno = extno & (EXTSPERSUM - 1);
iagp->inosmap[sword] |= cpu_to_le32(HIGHORDER >> bitno);
imap->im_agctl[agno].inofree =
le32_to_cpu(iagp->inofreefwd);
}
- iagp->inofreefwd = iagp->inofreeback = -1;
+ iagp->inofreefwd = iagp->inofreeback = cpu_to_le32(-1);
}
/* update the free inode count at the iag, ag, inode
imap->im_agctl[agno].extfree =
le32_to_cpu(iagp->extfreefwd);
- iagp->extfreefwd = iagp->extfreeback = -1;
+ iagp->extfreefwd = iagp->extfreeback = cpu_to_le32(-1);
} else {
/* if the iag has all free extents (newly allocated iag),
* add the iag to the ag free extent list.
aiagp->extfreeback = cpu_to_le32(iagno);
iagp->extfreefwd = cpu_to_le32(fwd);
- iagp->extfreeback = -1;
+ iagp->extfreeback = cpu_to_le32(-1);
imap->im_agctl[agno].extfree = iagno;
}
}
iagp->inofreefwd =
cpu_to_le32(imap->im_agctl[agno].inofree);
- iagp->inofreeback = -1;
+ iagp->inofreeback = cpu_to_le32(-1);
imap->im_agctl[agno].inofree = iagno;
}
/* init the iag */
memset(iagp, 0, sizeof(struct iag));
iagp->iagnum = cpu_to_le32(iagno);
- iagp->inofreefwd = iagp->inofreeback = -1;
- iagp->extfreefwd = iagp->extfreeback = -1;
- iagp->iagfree = -1;
+ iagp->inofreefwd = iagp->inofreeback = cpu_to_le32(-1);
+ iagp->extfreefwd = iagp->extfreeback = cpu_to_le32(-1);
+ iagp->iagfree = cpu_to_le32(-1);
iagp->nfreeinos = 0;
iagp->nfreeexts = cpu_to_le32(EXTSPERIAG);
* summary map initialization handled by bzero).
*/
for (i = 0; i < SMAPSZ; i++)
- iagp->inosmap[i] = ONES;
+ iagp->inosmap[i] = cpu_to_le32(ONES);
+ /*
+ * Invalidate the page after writing and syncing it.
+ * After it's initialized, we access it in a different
+ * address space
+ */
+ set_bit(META_discard, &mp->flag);
flush_metapage(mp);
/*
/* remove the iag from the iag free list */
imap->im_freeiag = le32_to_cpu(iagp->iagfree);
- iagp->iagfree = -1;
+ iagp->iagfree = cpu_to_le32(-1);
/* set the return iag number and buffer pointer */
*iagnop = iagno;
/* init per AG control information im_agctl[] */
for (i = 0; i < MAXAG; i++) {
- imap->im_agctl[i].inofree = -1; /* free inode list */
- imap->im_agctl[i].extfree = -1; /* free extent list */
+ imap->im_agctl[i].inofree = -1;
+ imap->im_agctl[i].extfree = -1;
imap->im_agctl[i].numinos = 0; /* number of backed inodes */
imap->im_agctl[i].numfree = 0; /* number of free backed inodes */
}
/* if any backed free inodes, insert at AG free inode list */
if ((int) le32_to_cpu(iagp->nfreeinos) > 0) {
- if ((head = imap->im_agctl[n].inofree) == -1)
- iagp->inofreefwd = iagp->inofreeback = -1;
- else {
+ if ((head = imap->im_agctl[n].inofree) == -1) {
+ iagp->inofreefwd = cpu_to_le32(-1);
+ iagp->inofreeback = cpu_to_le32(-1);
+ } else {
if ((rc = diIAGRead(imap, head, &hbp))) {
rcx = rc;
goto nextiag;
}
hiagp = (struct iag *) hbp->data;
- hiagp->inofreeback =
- le32_to_cpu(iagp->iagnum);
+ hiagp->inofreeback = iagp->iagnum;
iagp->inofreefwd = cpu_to_le32(head);
- iagp->inofreeback = -1;
+ iagp->inofreeback = cpu_to_le32(-1);
write_metapage(hbp);
}
/* if any free extents, insert at AG free extent list */
if (le32_to_cpu(iagp->nfreeexts) > 0) {
- if ((head = imap->im_agctl[n].extfree) == -1)
- iagp->extfreefwd = iagp->extfreeback = -1;
- else {
+ if ((head = imap->im_agctl[n].extfree) == -1) {
+ iagp->extfreefwd = cpu_to_le32(-1);
+ iagp->extfreeback = cpu_to_le32(-1);
+ } else {
if ((rc = diIAGRead(imap, head, &hbp))) {
rcx = rc;
goto nextiag;
hiagp = (struct iag *) hbp->data;
hiagp->extfreeback = iagp->iagnum;
iagp->extfreefwd = cpu_to_le32(head);
- iagp->extfreeback = -1;
+ iagp->extfreeback = cpu_to_le32(-1);
write_metapage(hbp);
}
if (readSuper(sb, &bh))
return;
j_sb = (struct jfs_superblock *)bh->b_data;
- j_sb->s_flag |= JFS_BAD_SAIT;
+ j_sb->s_flag |= cpu_to_le32(JFS_BAD_SAIT);
mark_buffer_dirty(bh);
sync_dirty_buffer(bh);