// This is for the new 4.4 cylinder group block void byte_swap_cgout(struct cg *cg, struct fs * fs) { int32_t * ulptr; int16_t * usptr; int size; byte_swap_int(cg->cg_firstfield); byte_swap_int(cg->cg_magic); byte_swap_int(cg->cg_time); byte_swap_int(cg->cg_cgx); byte_swap_short(cg->cg_ncyl); byte_swap_short(cg->cg_niblk); byte_swap_int(cg->cg_ndblk); byte_swap_csum(&cg->cg_cs); byte_swap_int(cg->cg_rotor); byte_swap_int(cg->cg_frotor); byte_swap_int(cg->cg_irotor); byte_swap_ints(cg->cg_frsum, MAXFRAG); byte_swap_int(cg->cg_freeoff); byte_swap_int(cg->cg_nextfreeoff); byte_swap_int(cg->cg_nclusterblks); byte_swap_ints(cg->cg_sparecon, 13); byte_swap_int(cg->cg_iusedoff); byte_swap_int(cg->cg_clusteroff); ulptr = ((int32_t *)((u_int8_t *)(cg) + (cg)->cg_btotoff)); size = fs->fs_cpg; byte_swap_ints(ulptr, size); /*cg_btotoff*/ byte_swap_int(cg->cg_btotoff); usptr = ((int16_t *)((u_int8_t *)(cg) + (cg)->cg_boff)); size = fs->fs_cpg * fs->fs_nrpos; byte_swap_shorts(usptr,size); /*cg_boff*/ byte_swap_int(cg->cg_boff); if ((unsigned int)fs->fs_contigsumsize > 0) { ulptr = ((int32_t *)((u_int8_t *)(cg) + (cg)->cg_clustersumoff)); size = (fs->fs_contigsumsize + 1); byte_swap_ints(ulptr, size); /*cg_clustersumoff*/ } byte_swap_int(cg->cg_clustersumoff); }
void byte_swap_cylgroup(struct cg *cg) { swapBigLongToHost(cg->cg_time); swapBigLongToHost(cg->cg_cgx); swapBigShortToHost(cg->cg_ncyl); swapBigShortToHost(cg->cg_niblk); swapBigLongToHost(cg->cg_ndblk); byte_swap_csum(&cg->cg_cs); swapBigLongToHost(cg->cg_rotor); swapBigLongToHost(cg->cg_frotor); swapBigLongToHost(cg->cg_irotor); swapBigIntsToHost(cg->cg_frsum, MAXFRAG); swapBigIntsToHost(cg->cg_btot, MAXCPG); swapBigShortToHosts((short *) cg->cg_b, MAXCPG * NRPOS); swapBigLongToHost(cg->cg_magic); }
/* This is for the new 4.4 cylinder group block */ void byte_swap_cgin(struct cg *cg, struct fs * fs) { int32_t * ulptr; int16_t * usptr; size_t size; byte_swap_int(cg->cg_firstfield); byte_swap_int(cg->cg_magic); byte_swap_int(cg->cg_time); byte_swap_int(cg->cg_cgx); byte_swap_short(cg->cg_ncyl); byte_swap_short(cg->cg_niblk); byte_swap_int(cg->cg_ndblk); byte_swap_csum(&cg->cg_cs); byte_swap_int(cg->cg_rotor); byte_swap_int(cg->cg_frotor); byte_swap_int(cg->cg_irotor); byte_swap_ints(cg->cg_frsum, MAXFRAG); byte_swap_int(cg->cg_iusedoff); byte_swap_int(cg->cg_freeoff); byte_swap_int(cg->cg_nextfreeoff); byte_swap_int(cg->cg_clusteroff); byte_swap_int(cg->cg_nclusterblks); byte_swap_ints(cg->cg_sparecon, 13); byte_swap_int(cg->cg_btotoff); if (cg->cg_btotoff < 0 || cg->cg_btotoff > sblock.fs_bsize) { pfatal("CG bad on input: block total offset out of range (%d)\n", cg->cg_btotoff); } else { ulptr = ((int32_t *)((u_int8_t *)(cg) + (cg)->cg_btotoff)); size = fs->fs_cpg; if (size > sblock.fs_bsize || (u_int8_t*)(ulptr + size) > ((u_int8_t*)cg + sblock.fs_bsize)) { pfatal("CG bad on input: Block totals array out of range\n"); } else { byte_swap_ints(ulptr, size); /*cg_btotoff*/ } } byte_swap_int(cg->cg_boff); if (cg->cg_boff < 0 || cg->cg_boff > sblock.fs_bsize) { pfatal("CG bad on input: free block offset out of range (%d)\n", cg->cg_boff); } else { usptr = ((int16_t *)((u_int8_t *)(cg) + (cg)->cg_boff)); size = fs->fs_cpg * fs->fs_nrpos; if (size > sblock.fs_bsize || (u_int8_t*)(usptr + size) > ((u_int8_t*)cg + sblock.fs_bsize)) { pfatal("CG bad on input: free block array out of bounds\n"); } else { byte_swap_shorts(usptr,size); /*cg_boff*/ } } byte_swap_int(cg->cg_clustersumoff); if ((unsigned int)cg->cg_clustersumoff > sblock.fs_bsize) { pfatal("CG bad on input: sum offset array out of range (%d)\n", cg->cg_clustersumoff); } else { if ((unsigned int)fs->fs_contigsumsize > 0) { ulptr = ((int32_t *)((u_int8_t *)(cg) + (cg)->cg_clustersumoff)); size = (fs->fs_contigsumsize + 1); if (size > sblock.fs_bsize || (u_int8_t*)(ulptr + size) > ((u_int8_t*)cg + sblock.fs_bsize)) { pfatal("CG bad on input: sum array out of bounds\n"); } else { byte_swap_ints(ulptr, size); /*cg_clustersumoff*/ } } } }