static void inomap_set_gen(void *contextp, xfs_ino_t ino, gen_t gen) { seg_addr_t *addrp; seg_addr_t addr; seg_t *segp; i2gseg_t *i2gsegp; xfs_ino_t relino; addrp = contextp ? (seg_addr_t *)contextp : &addr; if ( !inomap_find_seg( addrp, ino ) ) return; segp = inomap_addr2seg( addrp ); i2gsegp = &inomap.i2gmap[inomap_addr2segix( addrp )]; relino = ino - segp->base; i2gsegp->s_valid |= (u_int64_t)1 << relino; i2gsegp->s_lower[ relino ] = ( u_char_t )( gen & 0xff ); if ( relino & 1 ) { /* odd, goes in high nibble */ i2gsegp->s_upper[relino / 2] &= ( u_char_t )( 0x0f ); i2gsegp->s_upper[relino / 2] |= ( u_char_t )( ( gen >> 4 ) & 0xf0 ); } else {
void inomap_writehdr( content_inode_hdr_t *scwhdrp ) { /* update the inomap info in the content header */ scwhdrp->cih_inomap_hnkcnt = inomap.lastseg.hnkoff + 1; scwhdrp->cih_inomap_segcnt = inomap_addr2segix( &inomap.lastseg ) + 1; scwhdrp->cih_inomap_dircnt = ( u_int64_t )cb_dircnt; scwhdrp->cih_inomap_nondircnt = ( u_int64_t )cb_nondircnt; scwhdrp->cih_inomap_firstino = inomap.hnkmap[0].seg[ 0 ].base; scwhdrp->cih_inomap_lastino = inomap.hnkmap[inomap.lastseg.hnkoff].maxino; scwhdrp->cih_inomap_datasz = ( u_int64_t )cb_datasz; }
static void inomap_set_gen(void *contextp, xfs_ino_t ino, gen_t gen) { seg_addr_t *addrp; seg_addr_t addr; seg_t *segp; i2gseg_t *i2gsegp; xfs_ino_t relino; addrp = contextp ? (seg_addr_t *)contextp : &addr; if ( !inomap_find_seg( addrp, ino ) ) return; segp = inomap_addr2seg( addrp ); i2gsegp = &inomap.i2gmap[inomap_addr2segix( addrp )]; relino = ino - segp->base; i2gsegp->s_valid |= (u_int64_t)1 << relino; i2gsegp->s_gen[relino] = gen; }