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 {
intgen_t inomap_get_state( void *contextp, xfs_ino_t ino ) { seg_addr_t *addrp; seg_addr_t addr; seg_t *segp; addrp = contextp ? (seg_addr_t *)contextp : &addr; if ( !inomap_find_seg( addrp, ino ) ) return MAP_INO_UNUSED; segp = inomap_addr2seg( addrp ); return SEG_GET_BITS( segp, ino ); }
static intgen_t inomap_set_state( void *contextp, xfs_ino_t ino, intgen_t state ) { intgen_t oldstate; seg_addr_t *addrp; seg_addr_t addr; seg_t *segp; addrp = contextp ? (seg_addr_t *)contextp : &addr; if ( !inomap_find_seg( addrp, ino ) ) return MAP_INO_UNUSED; segp = inomap_addr2seg( addrp ); oldstate = SEG_GET_BITS( segp, ino ); SEG_SET_BITS( segp, ino, state ); return oldstate; }
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; }