Wow, great spot! Is this around line 1546 of src/io/trove/trove-dbpf/dbpf-mgmt.c or somewhere else I'm not seeing?
Thanks, Michael On Mon, Aug 22, 2011 at 2:30 PM, Neale Ferguson <[email protected]>wrote: > It appears the problem is due to the following: > > TROVE_ds_position *inout_position_p - sizeof (*inout_position_p) = *8 > **(db_recno_t *)key.data = *(db_recno_t *)inout_position_p; -> > sizeof(db_recno_t) = *4 > * > *inout_position_p = 0x00000000 0x00000001 > *key.data = 0x00000000 > > Just to confirm I put in the following: > > fprintf(stderr,"sizeof(db_recno_t): %d sizeof(*inout_position_p): %d > *inout_position_p: %d *(db_recno_t *)inout_position_p: %d inout_position_p: > %p (%016llx)\n", > sizeof(db_recno_t),sizeof(*inout_position_p),*inout_position_p,*(db_recno_t > *)inout_position_p,inout_position_p,*inout_position_p); > > And got: > > sizeof(db_recno_t): 4 sizeof(*inout_position_p): 8 *inout_position_p: 1 > *(db_recno_t *)inout_position_p: 0 inout_position_p: 0x3ffffdc0d88 > (0000000000000001) > > The code generated for *(db_recno_t *)key.data = *(db_recno_t *) > inout_position_p; is > > lg %r1,256(%r15) - destination pointer > lg %r2,184(%r15) - source pointer > l %r2,0(%r2) - get 1st 32-bits of the 64-bit field > st %r2,0(%r1) - store in destination > > Changing the statement to > > *(db_recno_t *)key.data = (db_recno_t) *inout_position_p; > > Fixes the problem. I’ll scan for similar statements. > > Neale > > _______________________________________________ > Pvfs2-developers mailing list > [email protected] > http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers > >
_______________________________________________ Pvfs2-developers mailing list [email protected] http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
