28 #define DFUNCTION "_sion_write_header" 37 int rc = SION_SUCCESS;
42 sion_uint32 endianness_writeval;
43 sion_int32 sion_version, sion_version_patchlevel, sion_fileformat_version;
46 DPRINTFP((2, DFUNCTION, -1,
"enter write\n"));
51 if (nwrite != strlen(sionstr)) {
52 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(SIONID) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
54 DPRINTFP((32, DFUNCTION, -1,
" wrote sionstr nwrite=%lu\n", (
unsigned long) nwrite));
57 endianness_writeval = sion_filedesc->
endianness;
59 if (nwrite !=
sizeof(endianness_writeval)) {
60 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(endianness) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
62 DPRINTFP((32, DFUNCTION, -1,
" wrote endianness 0x%x nwrite=%lu\n", endianness_writeval, (
unsigned long) nwrite));
65 sion_version = 1000 * SION_MAIN_VERSION + SION_SUB_VERSION;
66 sion_version_patchlevel = SION_VERSION_PATCHLEVEL;
67 sion_fileformat_version = SION_FILEFORMAT_VERSION;
70 if (nwrite !=
sizeof(sion_version)) {
71 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(sion_version) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
73 DPRINTFP((32, DFUNCTION, -1,
" wrote sion_version %ld nwrite=%lu\n", sion_version, (
unsigned long) nwrite));
76 if (nwrite !=
sizeof(sion_version_patchlevel)) {
77 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(sion_version_patchlevel) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
79 DPRINTFP((32, DFUNCTION, -1,
" wrote sion_version_patchlevel %ld nwrite=%lu\n", sion_version_patchlevel, (
unsigned long) nwrite));
82 if (nwrite !=
sizeof(sion_fileformat_version)) {
83 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(sion_fileformat_version) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
85 DPRINTFP((32, DFUNCTION, -1,
" wrote sion_fileformat_version %ld nwrite=%lu\n", sion_fileformat_version, (
unsigned long) nwrite));
89 if (nwrite !=
sizeof(sion_filedesc->
fsblksize)) {
90 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(fsblksize) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
92 DPRINTFP((32, DFUNCTION, -1,
" wrote fsblksize %ld nwrite=%lu\n", sion_filedesc->
fsblksize, (
unsigned long) nwrite));
96 if (nwrite !=
sizeof(sion_filedesc->
ntasks)) {
97 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(ntasks) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
99 DPRINTFP((32, DFUNCTION, -1,
" wrote ntasks %ld nwrite=%lu\n", sion_filedesc->
ntasks, (
unsigned long) nwrite));
103 if (nwrite !=
sizeof(sion_filedesc->
nfiles)) {
104 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(nfiles) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
106 DPRINTFP((32, DFUNCTION, -1,
" wrote nfiles %d nwrite=%lu\n", sion_filedesc->
nfiles, (
unsigned long) nwrite));
110 if (nwrite !=
sizeof(sion_filedesc->
filenumber)) {
111 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(filenumber) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
113 DPRINTFP((32, DFUNCTION, -1,
" wrote filenumber %d nwrite=%lu\n", sion_filedesc->
filenumber, (
unsigned long) nwrite));
118 if (nwrite !=
sizeof(sion_filedesc->
flag1)) {
119 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(flag1) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
121 DPRINTFP((32, DFUNCTION, -1,
" wrote flag1 %lld nwrite=%lu\n", sion_filedesc->
flag1, (
unsigned long) nwrite));
125 if (nwrite !=
sizeof(sion_filedesc->
flag2)) {
126 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(flag2) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
128 DPRINTFP((32, DFUNCTION, -1,
" wrote flag2 %d nwrite=%lu\n", sion_filedesc->
flag2, (
unsigned long) nwrite));
131 if (sion_filedesc->
prefix==NULL) {
132 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(prefix) to file, data not available, aborting ...\n"));
134 lprefix = calloc(SION_FILENAME_LENGTH,1);
135 if (lprefix == NULL) {
136 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot allocate temporary memory of size %lu (lprefix), aborting ...\n", (
unsigned long) SION_FILENAME_LENGTH));
138 strncpy(lprefix,sion_filedesc->
prefix,SION_FILENAME_LENGTH);
140 if (nwrite != SION_FILENAME_LENGTH) {
141 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(lprefix) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
143 free(lprefix); lprefix=NULL;
144 DPRINTFP((32, DFUNCTION, -1,
" wrote prefix =%s\n", sion_filedesc->
prefix));
148 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(globalranks) to file, data not available, aborting ...\n"));
151 if (nwrite !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
152 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(globalranks) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
154 DPRINTFP((32, DFUNCTION, -1,
" wrote globalranks nwrite=%lu\n", (
unsigned long) nwrite));
158 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(chunksizes) to file, data not available, aborting ...\n"));
161 if (nwrite !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
162 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(chunksizes) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
164 DPRINTFP((32, DFUNCTION, -1,
" wrote chunksizes nwrite=%lu\n", (
unsigned long) nwrite));
167 DPRINTFP((2, DFUNCTION, -1,
"leave write\n"));
173 #define DFUNCTION "_sion_write_header_var_info" 182 int rc = SION_SUCCESS;
185 DPRINTFP((2, DFUNCTION, -1,
"enter write\n"));
194 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(maxusedchunks) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
196 DPRINTFP((32, DFUNCTION, -1,
" wrote maxusedchunks %d nwrite=%lu\n", sion_filedesc->
maxusedchunks, (
unsigned long) nwrite));
201 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(start_of_varheader) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
203 DPRINTFP((32, DFUNCTION, -1,
" wrote start_of_varheader %d nwrite=%lu\n", sion_filedesc->
start_of_varheader, (
unsigned long) nwrite));
206 DPRINTFP((2, DFUNCTION, -1,
"leave write\n"));
212 #define DFUNCTION "_sion_write_header_var_part_blocksizes" 221 int rc = SION_SUCCESS;
224 DPRINTFP((2, DFUNCTION, -1,
"enter write\n"));
228 DPRINTFP((16, DFUNCTION, sion_filedesc->
rank,
" after set fp to start_of_varheader, fileptr is at position %14lld\n",
_sion_file_get_position(sion_filedesc->
fileptr)));
232 if (nwrite !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
233 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(all_blockcount) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
235 DPRINTFP((32, DFUNCTION, -1,
" wrote all_blockcount field %d elements nwrite=%lu\n", sion_filedesc->
ntasks, (
unsigned long) nwrite));
240 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(all_blocksizes) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
242 DPRINTFP((32, DFUNCTION, -1,
" wrote all_blocksizes field %d elements nwrite=%lu\n", sion_filedesc->
ntasks * sion_filedesc->
maxusedchunks, (
unsigned long) nwrite));
245 DPRINTFP((2, DFUNCTION, -1,
"leave write\n"));
251 #define DFUNCTION "_sion_write_header_var_part_mapping" 261 sion_int32 mapping_size,
262 sion_int32 *mapping )
264 int rc = SION_SUCCESS, lrank;
268 DPRINTFP((2, DFUNCTION, -1,
"enter write\n"));
271 + sion_filedesc->
ntasks *
sizeof(sion_int64)
276 DPRINTFP((16, DFUNCTION, sion_filedesc->
rank,
" after set fp to start_of_varheader, fileptr is at position %14lld\n",
_sion_file_get_position(sion_filedesc->
fileptr)));
280 if (nwrite !=
sizeof(sion_int32)) {
281 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(mapping_size) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
283 DPRINTFP((32, DFUNCTION, -1,
" wrote mapping_size=%d elements nwrite=%lu\n", mapping_size, (
unsigned long) nwrite));
288 if (nwrite !=
sizeof(sion_int32) * 2 * mapping_size) {
289 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(mapping) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
291 DPRINTFP((32, DFUNCTION, -1,
" wrote mapping field %d elements nwrite=%lu\n", 2 * mapping_size, (
unsigned long) nwrite*2*mapping_size));
292 for (lrank = 0; lrank < mapping_size; lrank++) {
293 DPRINTFP((2048, DFUNCTION, - 1,
" mapping[%4d]=(%10ld,%10ld)\n", lrank,mapping[lrank*2],mapping[lrank*2+1]));
296 DPRINTFP((32, DFUNCTION, -1,
" wrote no mapping field\n"));
299 DPRINTFP((2, DFUNCTION, -1,
"leave write\n"));
306 #define DFUNCTION "_sion_read_header_fix_part" 315 int rc = SION_SUCCESS;
317 char *sionstr, *lprefix;
318 sion_uint32 lendianness;
319 sion_int32 lfsblksize;
320 sion_int32 Rsion_version, Rsion_version_patchlevel, Rsion_fileformat_version;
322 DPRINTFP((2, DFUNCTION, -1,
"enter read fix_part\n"));
326 sionstr = (
char *) malloc(strlen(
SION_ID) *
sizeof(char));
328 if (nread != strlen(
SION_ID)) {
329 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(SION_ID) from file, aborting ... (%lu!=%lu)\n",
330 (
unsigned long) nread, (
unsigned long) strlen(
SION_ID)));
332 DPRINTFP((32, DFUNCTION, -1,
" sionstr =>%c%c%c%c<\n", sionstr[0], sionstr[1], sionstr[2], sionstr[3]));
335 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: not a sion file(ID: %c%c%c%c)\n", sionstr[0], sionstr[1], sionstr[2], sionstr[3]));
341 if (nread !=
sizeof(lendianness)) {
342 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot read header(endianness) from file, aborting ... (%lu!=%lu)\n",(
unsigned long) nread, (
unsigned long)
sizeof(lendianness)));
347 DPRINTFP((32, DFUNCTION, -1,
" endianness =0x%x swapbytes=%d\n", sion_filedesc->
endianness, sion_filedesc->
swapbytes));
352 if (nread !=
sizeof(Rsion_version)) {
353 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(sion_version) from file, aborting ... (%lu!=%lu)\n", (
unsigned long) nread, (
unsigned long)
sizeof(Rsion_version)));
355 sion_swap(&Rsion_version, &Rsion_version,
sizeof(Rsion_version), 1, sion_filedesc->
swapbytes);
357 DPRINTFP((32, DFUNCTION, -1,
" sion_version=%d\n", Rsion_version));
359 nread =
_sion_file_read(&Rsion_version_patchlevel,
sizeof(Rsion_version_patchlevel), sion_filedesc->
fileptr);
360 if (nread !=
sizeof(Rsion_version_patchlevel)) {
361 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(sion_version_patchlevel) from file, aborting ... (%lu!=%lu)\n",
362 (
unsigned long) nread, (
unsigned long)
sizeof(Rsion_version_patchlevel)));
364 sion_swap(&Rsion_version_patchlevel, &Rsion_version_patchlevel,
sizeof(Rsion_version_patchlevel), 1, sion_filedesc->
swapbytes);
366 DPRINTFP((32, DFUNCTION, -1,
" sion_version_patchlevel=%d\n", (
int) Rsion_version_patchlevel));
368 nread =
_sion_file_read(&Rsion_fileformat_version,
sizeof(Rsion_fileformat_version), sion_filedesc->
fileptr);
369 if (nread !=
sizeof(Rsion_fileformat_version)) {
370 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(sion_fileformat_version) from file, aborting ... (%lu!=%lu)\n",
371 (
unsigned long) nread, (
unsigned long)
sizeof(Rsion_fileformat_version)));
373 sion_swap(&Rsion_fileformat_version, &Rsion_fileformat_version,
sizeof(Rsion_fileformat_version), 1, sion_filedesc->
swapbytes);
374 sion_filedesc->
fileversion=Rsion_fileformat_version;
375 DPRINTFP((32, DFUNCTION, -1,
" sion_fileformat_version=%d\n", (
int) Rsion_fileformat_version));
377 if (Rsion_fileformat_version != SION_FILEFORMAT_VERSION) {
378 if(Rsion_fileformat_version<2) {
379 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"sionlib: FATAL ERROR: file format version of file differs, aborting ... (%lu!=%lu)\n",
380 (
unsigned long) Rsion_fileformat_version, (
unsigned long) SION_FILEFORMAT_VERSION));
382 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_WARN,
"sionlib: FATAL WARNING: old file format version of file differs, trying to read ... (%lu!=%lu)\n",
383 (
unsigned long) Rsion_fileformat_version, (
unsigned long) SION_FILEFORMAT_VERSION);
390 if (nread !=
sizeof(sion_filedesc->
fsblksize)) {
391 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(fsblksize) from file, aborting ... (%lu!=%lu)\n",
392 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
fsblksize)));
395 DPRINTFP((32, DFUNCTION, -1,
" fsblksize=%d\n", sion_filedesc->
fsblksize));
399 if (nread !=
sizeof(sion_filedesc->
ntasks)) {
400 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(ntasks) from file, aborting ... (%lu!=%lu)\n",
401 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
ntasks)));
404 DPRINTFP((32, DFUNCTION, -1,
" ntasks =%d\n", sion_filedesc->
ntasks));
408 if (nread !=
sizeof(sion_filedesc->
nfiles)) {
409 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(nfiles) from file, aborting ... (%lu!=%lu)\n",
410 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
nfiles)));
413 DPRINTFP((32, DFUNCTION, -1,
" nfiles =%d\n", sion_filedesc->
nfiles));
418 if (nread !=
sizeof(sion_filedesc->
filenumber)) {
419 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(filenumber) from file, aborting ... (%lu!=%lu)\n",
420 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
filenumber)));
426 DPRINTFP((32, DFUNCTION, -1,
" filenumber =%d\n", sion_filedesc->
filenumber));
430 if(Rsion_fileformat_version>=3) {
432 if (nread !=
sizeof(sion_filedesc->
flag1)) {
433 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(flag1) from file, aborting ... (%lu!=%lu)\n",
434 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
flag1)));
440 DPRINTFP((32, DFUNCTION, -1,
" flag1 =%lld\n", sion_filedesc->
flag1));
442 if(Rsion_fileformat_version>=5) {
457 if(Rsion_fileformat_version>=3) {
459 if (nread !=
sizeof(sion_filedesc->
flag2)) {
460 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(flag2) from file, aborting ... (%lu!=%lu)\n",
461 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
flag2)));
467 DPRINTFP((32, DFUNCTION, -1,
" flag2 =%lld\n", sion_filedesc->
flag2));
470 lprefix = malloc(SION_FILENAME_LENGTH);
472 if (nread != SION_FILENAME_LENGTH) {
473 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(lprefix) from file, aborting ... (%lu!=%d)\n", (
unsigned long) nread, SION_FILENAME_LENGTH));
475 sion_filedesc->
prefix=strdup(lprefix);
477 DPRINTFP((32, DFUNCTION, -1,
" prefix =%s\n", sion_filedesc->
prefix));
480 DPRINTFTS(sion_filedesc->
rank,
"before purge");
482 DPRINTFTS(sion_filedesc->
rank,
"after purge");
486 DPRINTFP((2, DFUNCTION, -1,
"leave read fix_part\n"));
492 #define DFUNCTION "_sion_read_header_var_part" 501 int rc = SION_SUCCESS;
503 sion_int32 Rmaxchunks;
505 DPRINTFP((32, DFUNCTION, -1,
"enter read var_part\n"));
510 if (nread !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
511 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part: cannot read header(globalranks) from file, aborting ... (%d)\n", sion_filedesc->
ntasks));
517 if (nread !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
518 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part: cannot read header(chunksizes) from file, aborting ... (%d!=%lu)\n", sion_filedesc->
ntasks, (
unsigned long) nread));
524 if (nread !=
sizeof(Rmaxchunks)) {
525 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part: cannot read header(maxchunks) from file, aborting ... (%lu!=%lu)\n",
526 (
unsigned long) nread, (
unsigned long)
sizeof(Rmaxchunks)));
529 DPRINTFP((32, DFUNCTION, -1,
" maxchunks=%d\n", Rmaxchunks));
537 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part: cannot read header(start_of_varheader) from file, aborting ... (%lu!=%lu)\n",
541 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part: bad value for start_of_varheader (=%lu), aborting ...\n",
546 DPRINTFP((32, DFUNCTION, -1,
"leave read var_part start_of_varheader=%lld\n", sion_filedesc->
start_of_varheader));
553 #define DFUNCTION "_sion_rd_hdr_var_prt_blkcnt_to_field" 566 int rc = SION_SUCCESS;
569 DPRINTFP((32, DFUNCTION, -1,
"enter\n"));
572 if (field_size < sion_filedesc->ntasks) {
573 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_blockcount_to_field: cannot read header(blocksizes) field too small, aborting ... (%d<%d)\n", field_size, sion_filedesc->
ntasks));
580 if (nread !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
581 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_blockcount_to_field: cannot read blocksizes from meta block 2 of the file, aborting ... (%d,%d)\n", sion_filedesc->
ntasks, nread));
586 DPRINTFP((32, DFUNCTION, -1,
"leave \n"));
593 #define DFUNCTION "_sion_rd_hdr_vr_prt_nxtblksizes_to_field" 608 int rc = SION_SUCCESS;
610 DPRINTFP((32, DFUNCTION, -1,
"enter\n"));
613 if (field_size < sion_filedesc->ntasks) {
614 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_nextblocksizes_to_field: cannot read header(blocksizes) field too small, aborting ... (%d<%d)\n", field_size, sion_filedesc->
ntasks));
617 if (nread !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
618 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_nextblocksizes_to_field: cannot read blocksizes from meta block 2 of the file, aborting ... (%d,%d)\n", sion_filedesc->
ntasks, nread));
623 DPRINTFP((32, DFUNCTION, -1,
"leave \n"));
630 #define DFUNCTION "_sion_read_header_var_part_blocksizes" 639 int rc = SION_SUCCESS;
643 DPRINTFP((32, DFUNCTION, -1,
"enter read\n"));
651 if (nread !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
652 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_blocksizes: cannot read header from file(sion_blockcount), aborting ... (%d)\n", sion_filedesc->
ntasks));
655 for (i = 0; i < sion_filedesc->
ntasks; i++)
656 DPRINTFP((2048, DFUNCTION, -1,
" read, numblocks on task %02d is %10lld\n", i, sion_filedesc->
all_blockcount[i]));
661 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_blocksizes: cannot read header(sion_blocksizes) from file, aborting ... (%lu!=%lu)\n",
662 (
unsigned long) sion_filedesc->
ntasks * sion_filedesc->
maxusedchunks, (
unsigned long) nread));
666 for (i = 0; i < sion_filedesc->
ntasks; i++)
667 DPRINTFP((2048, DFUNCTION, -1,
" read, blocksize[0] on task %02d is %10lld\n", i, sion_filedesc->
all_blocksizes[0*sion_filedesc->
ntasks+i]));
669 DPRINTFP((32, DFUNCTION, -1,
"leave read\n"));
676 #define DFUNCTION "_sion_read_header_var_part_mapping" 687 int rc = SION_SUCCESS;
691 DPRINTFP((32, DFUNCTION, -1,
"enter read\n"));
694 + sion_filedesc->
ntasks *
sizeof(sion_int64)
704 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping: cannot read header(mapping_size) from file, aborting ... (%d)\n", nread));
707 DPRINTFP((32, DFUNCTION, -1,
"mapping_size=%ld\n", (
long) sion_filedesc->
mapping_size));
710 sion_filedesc->
mapping = (sion_int32 *) malloc(sion_filedesc->
mapping_size * 2 *
sizeof(sion_int32));
711 if (sion_filedesc->
mapping == NULL) {
712 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping: cannot allocate temporary memory of size %lu (mapping), aborting ...\n", (
unsigned long) 2 * sion_filedesc->
mapping_size *
sizeof(sion_int64)));
714 DPRINTFP((32, DFUNCTION, -1,
"alloc mapping vector size=%d (%lu bytes)\n", sion_filedesc->
mapping_size, (
long) sion_filedesc->
mapping_size * 2 *
sizeof(sion_int32)));
718 DPRINTFP((32, DFUNCTION, -1,
"read mapping, %d \n", nread));
719 if (nread != (
sizeof(sion_int32) * sion_filedesc->
mapping_size * 2)) {
720 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping: cannot read header(mapping) from file, aborting ... (%d!=%lu)\n", sion_filedesc->
mapping_size*2, (
unsigned long) nread));
724 DPRINTFP((32, DFUNCTION, -1,
"leave read\n"));
731 #define DFUNCTION "_sion_read_header_var_part_locations_rank" 741 int rc = SION_SUCCESS;
745 sion_int64 helpint64;
747 DPRINTFP((32, DFUNCTION, -1,
"enter read for rank %d of %d\n",sion_filedesc->
rank,sion_filedesc->
ntasks));
750 + sion_filedesc->
rank *
sizeof(sion_int64);
758 numblocks = helpint64;
759 if (nread !=
sizeof(sion_int64)) {
760 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_locations_rank: cannot read header(numblocks) from file, aborting ... (%d)\n", sion_filedesc->
ntasks));
766 for (i = 0; i < numblocks; i++) {
769 + (i + 1) * sion_filedesc->
ntasks *
sizeof(sion_int64)
770 + sion_filedesc->
rank *
sizeof(sion_int64);
775 if (nread !=
sizeof(sion_int64)) {
776 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_locations_rank: cannot read header(blocksizes) from file, aborting ... (%d!=%lu)\n", 1, (
unsigned long) nread));
780 DPRINTFP((32,
"_sion_read_header_var_part_locations_rank", -1,
"read blocksizes[%i], %lld start_of_varheader=%lld\n", i, helpint64, sion_filedesc->
start_of_varheader));
784 DPRINTFP((32, DFUNCTION, -1,
"leave read\n"));
791 #define DFUNCTION "_sion_read_header_var_part_mapping_rank" 802 int rc = SION_SUCCESS;
806 sion_int32 helpint32;
808 DPRINTFP((32, DFUNCTION, -1,
"enter read for rank %d of %d\n",sion_filedesc->
rank,sion_filedesc->
ntasks));
811 + sion_filedesc->
ntasks *
sizeof(sion_int64)
820 if (nread !=
sizeof(sion_int32)) {
821 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping_rank: cannot read header(mapping_size) from file, aborting ... (%d)\n", sion_filedesc->
ntasks));
825 DPRINTFP((32,
"_sion_read_header_var_part_mapping_rank", -1,
"read mapping_size %d \n", msize));
827 if((sion_filedesc->
rank<0) || (sion_filedesc->
rank>=msize)) {
828 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping_rank: wrong rank %d not between 0 .. %d aborting ...\n", sion_filedesc->
rank,msize));
833 + sion_filedesc->
ntasks *
sizeof(sion_int64)
836 + 2*sion_filedesc->
rank*
sizeof(sion_int32);
844 sion_filedesc->
mapping = (sion_int32 *) malloc(sion_filedesc->
mapping_size * 2 *
sizeof(sion_int32));
845 if (sion_filedesc->
mapping == NULL) {
846 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping: cannot allocate temporary memory of size %lu (mapping), aborting ...\n", (
unsigned long) 2 * sion_filedesc->
mapping_size *
sizeof(sion_int64)));
848 DPRINTFP((32, DFUNCTION, -1,
"alloc mapping vector size=%d (%lu bytes)\n", sion_filedesc->
mapping_size, (
long) sion_filedesc->
mapping_size * 2 *
sizeof(sion_int32)));
852 DPRINTFP((32, DFUNCTION, -1,
"read mapping, %d \n", nread));
853 if (nread != (
sizeof(sion_int32) * sion_filedesc->
mapping_size * 2)) {
854 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping: cannot read header(mapping) from file, aborting ... (%d!=%lu)\n", sion_filedesc->
mapping_size*2, (
unsigned long) nread));
858 DPRINTFP((32, DFUNCTION, -1,
"leave read filenumber=%d lrank=%d\n",sion_filedesc->
mapping[0], sion_filedesc->
mapping[1]));
866 #define DFUNCTION "_sion_wr_hdr_var_prt_blkcnt_from_field" 882 DPRINTFP((32, DFUNCTION, -1,
"enter\n"));
885 if (field_size < sion_filedesc->ntasks) {
886 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_blockcount_to_field: cannot read header(blocksizes) field too small, aborting ... (%d<%d)\n", field_size, sion_filedesc->
ntasks));
893 if (nwrite !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
894 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header_var_part_blockcount_from_field: cannot write header(all_blockcount) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
896 DPRINTFP((32, DFUNCTION, -1,
" wrote all_blockcount field %d elements nwrite=%lu\n", sion_filedesc->
ntasks, (
unsigned long) nwrite));
898 DPRINTFP((32, DFUNCTION, -1,
"leave \n"));
905 #define DFUNCTION "_sion_wr_hdr_vr_prt_nxtblksizes_from_field" 922 DPRINTFP((32, DFUNCTION, -1,
"enter\n"));
925 if (field_size < sion_filedesc->ntasks) {
926 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header_var_part_nextblocksizes_from_field: cannot write header(blocksizes) field too small, aborting ... (%d<%d)\n", field_size, sion_filedesc->
ntasks));
929 if (nwrite !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
930 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header_var_part_nextblocksizes_from_field: cannot write header(all_blocksizes) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
932 DPRINTFP((32, DFUNCTION, -1,
" wrote all_blocksizes field %d elements nwrite=%lu\n", sion_filedesc->
ntasks, (
unsigned long) nwrite));
934 DPRINTFP((32, DFUNCTION, -1,
"leave \n"));
sion_int64 _sion_file_write(const void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr)
Write data to file.
sion_int64 _sion_file_get_position(_sion_fileptr *sion_fileptr)
Get new position in file.
sion_int64 _sion_file_set_position(_sion_fileptr *sion_fileptr, sion_int64 startpointer)
Set new position in file.
Sion File Descriptor Structure.
int sion_get_endianness(void)
Return endianness.
sion_int64 * all_blockcount
int _sion_file_purge(_sion_fileptr *sion_fileptr)
Purge data to file.
sion_int64 _sion_file_read(void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr)
Read data from file.
sion_int32 filesionpatchlevel
sion_int64 * all_globalranks
int _sion_realloc_filedesc_blocklist(_sion_filedesc *sion_filedesc, sion_int32 maxchunks)
Increase the memory used by the internal sion structure for the blocklist.
char * sion_keyval_type_to_str(int type)
Returns key value mode as string.
int _sion_errorprint(int rc, int level, const char *format,...)
Internal SION error.
sion_int64 * all_chunksizes
sion_int32 filesionversion
sion_int64 start_of_varheader
sion_int64 * all_blocksizes
int _sion_file_flush(_sion_fileptr *sion_fileptr)
Flush data to file.
void sion_swap(void *target, void *source, int size, int n, int aflag)