14 #define _XOPEN_SOURCE 700 24 #include "sion_error_handler.h" 30 #define DFUNCTION "_sion_init_filedesc" 40 int rc = SION_SUCCESS;
42 if (sion_filedesc == NULL) {
43 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot initalized, data structure is not allocated, aborting ...\n"));
46 sion_filedesc->
fname = NULL;
47 sion_filedesc->
sid = -1;
48 sion_filedesc->
rank = -1;
49 sion_filedesc->
lrank = -1;
51 sion_filedesc->
ntasks = -1;
59 sion_filedesc->
fileversion = SION_FILEFORMAT_VERSION;
60 sion_filedesc->
filesionversion = 1000 * SION_MAIN_VERSION + SION_SUB_VERSION;
94 sion_filedesc->
debug = -1;
96 sion_filedesc->
nfiles = -1;
105 sion_filedesc->
ntasks = -1;
111 sion_filedesc->
prefix = NULL;
127 sion_filedesc->
cachefn[0]=
'\0';
133 sion_filedesc->
buffer = NULL;
162 #define DFUNCTION "_sion_alloc_filedesc" 172 if (sion_filedesc == NULL) {
173 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"cannot allocate filedescriptor structure of size %lu (sion_filedesc), aborting ...\n", (
unsigned long)
sizeof(sion_filedesc));
177 return(sion_filedesc);
182 #define DFUNCTION "_sion_realloc_filedesc_blocklist" 192 int rc = SION_SUCCESS;
195 sion_filedesc->
blocksizes = (sion_int64 *) malloc(maxchunks *
sizeof(sion_int64));
197 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_blocksizes), aborting ...\n",
198 (
unsigned long) maxchunks *
sizeof(sion_int64)));
200 for (i = 0; i < maxchunks; i++)
203 DPRINTFP((2, DFUNCTION, -1,
" alloc for %d chunks\n", maxchunks ));
206 if (sion_filedesc->
maxchunks <= maxchunks) {
207 sion_filedesc->
blocksizes = (sion_int64 *) realloc(sion_filedesc->
blocksizes, maxchunks *
sizeof(sion_int64));
208 for (i = sion_filedesc->
maxchunks; i < maxchunks; i++)
210 DPRINTFP((2, DFUNCTION, -1,
" realloc from %d to %d chunks\n", sion_filedesc->
maxchunks, maxchunks ));
214 fprintf(stderr,
"allocate temporary memory of size %zu (sion_blocksizes) not necessary (allocated size %zu) ...\n",
215 (
size_t) maxchunks *
sizeof(sion_int64), (
size_t) sion_filedesc->
maxchunks *
sizeof(sion_int64));
216 DPRINTFP((2, DFUNCTION, -1,
"allocate temporary memory of size %zu (sion_blocksizes) not necessary (allocated size %zu) ...\n",
217 (
size_t) maxchunks *
sizeof(sion_int64), (
size_t) sion_filedesc->
maxchunks *
sizeof(sion_int64) ));
225 #define DFUNCTION "_sion_alloc_filedesc_all_chunksizes" 226 int _sion_alloc_filedesc_all_chunksizes(
_sion_filedesc *sion_filedesc)
228 int i, rc = SION_SUCCESS;
231 if (sion_filedesc->
ntasks<0) {
232 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
235 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
236 sion_filedesc->
all_chunksizes = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
238 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_chunksizes), aborting ...\n",
239 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
241 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
246 #define DFUNCTION "_sion_alloc_filedesc_all_startpointers" 247 int _sion_alloc_filedesc_all_startpointers(
_sion_filedesc *sion_filedesc)
249 int i, rc = SION_SUCCESS;
252 if (sion_filedesc->
ntasks<0) {
253 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
257 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_startpointers), aborting ...\n",
258 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
260 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
266 #define DFUNCTION "_sion_alloc_filedesc_all_globalranks" 267 int _sion_alloc_filedesc_all_globalranks(
_sion_filedesc *sion_filedesc)
269 int i, rc = SION_SUCCESS;
272 if (sion_filedesc->
ntasks<0) {
273 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
275 sion_filedesc->
all_globalranks = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
277 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_globalranks), aborting ...\n",
278 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
280 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
286 #define DFUNCTION "_sion_alloc_filedesc_all_localranks" 287 int _sion_alloc_filedesc_all_localranks(
_sion_filedesc *sion_filedesc)
289 int i, rc = SION_SUCCESS;
292 if (sion_filedesc->
ntasks<0) {
293 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
295 sion_filedesc->
all_localranks = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
297 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_localranks), aborting ...\n",
298 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
300 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
306 #define DFUNCTION "_sion_alloc_filedesc_all_keyvalptr" 307 int _sion_alloc_filedesc_all_keyvalptr(
_sion_filedesc *sion_filedesc)
309 int i, rc = SION_SUCCESS;
312 if (sion_filedesc->
ntasks<0) {
313 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
316 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
317 sion_filedesc->
all_keyvalptr = p = (
void *) malloc(sion_filedesc->
ntasks *
sizeof(
void *));
319 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_keyvalptr), aborting ...\n",
320 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
322 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = NULL;
328 #define DFUNCTION "_sion_alloc_filedesc_arrays" 337 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
339 _sion_alloc_filedesc_all_chunksizes(sion_filedesc);
340 _sion_alloc_filedesc_all_startpointers(sion_filedesc);
341 _sion_alloc_filedesc_all_globalranks(sion_filedesc);
343 DPRINTFP((2, DFUNCTION, -1,
"leave alloc arrays size=%d\n", sion_filedesc->
ntasks));
349 #define DFUNCTION "_sion_free_filedesc_all_chunksizes" 350 int _sion_free_filedesc_all_chunksizes(
_sion_filedesc *sion_filedesc)
352 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
357 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
362 #define DFUNCTION "_sion_free_filedesc_all_globalranks" 363 int _sion_free_filedesc_all_globalranks(
_sion_filedesc *sion_filedesc)
365 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
370 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
375 #define DFUNCTION "_sion_free_filedesc_all_startpointers" 376 int _sion_free_filedesc_all_startpointers(
_sion_filedesc *sion_filedesc)
378 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
383 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
388 #define DFUNCTION "_sion_free_filedesc_all_localranks" 389 int _sion_free_filedesc_all_localranks(
_sion_filedesc *sion_filedesc)
391 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
396 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
401 #define DFUNCTION "_sion_free_filedesc_all_keyvalptr" 402 int _sion_free_filedesc_all_keyvalptr(
_sion_filedesc *sion_filedesc)
405 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
407 for(tasknr=0;tasknr<sion_filedesc->
ntasks;tasknr++) {
409 DPRINTFP((2, DFUNCTION, -1,
"free now KEYVALPTR all_keyvalptr[%d] = %x\n",tasknr,sion_filedesc->
all_keyvalptr[tasknr]));
416 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
421 #define DFUNCTION "_sion_free_filedesc_arrays" 431 _sion_free_filedesc_all_chunksizes(sion_filedesc);
432 _sion_free_filedesc_all_globalranks(sion_filedesc);
433 _sion_free_filedesc_all_startpointers(sion_filedesc);
439 #define DFUNCTION "_sion_alloc_filedesc_coll_arrays" 451 if (sion_filedesc->
ntasks<0) {
452 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
455 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
458 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_collsize), aborting ...\n",
459 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
461 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
463 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
466 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_collector), aborting ...\n",
467 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
469 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
471 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
474 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_capability), aborting ...\n",
475 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
477 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
480 DPRINTFP((2, DFUNCTION, -1,
"leave alloc arrays size=%d\n", sion_filedesc->
ntasks));
486 #define DFUNCTION "_sion_free_filedesc_coll_arrays" 496 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
509 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
514 #define DFUNCTION "_sion_alloc_filedesc_block_arrays" 526 DPRINTFP((2, DFUNCTION, -1,
"enter alloc locations size=%d, maxblocks=%d\n", sion_filedesc->
ntasks, sion_filedesc->
maxchunks));
527 sion_filedesc->
all_blockcount = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
529 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_blockcount), aborting ...\n",
530 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
532 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
534 sion_filedesc->
all_currentpos = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
536 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_currentpos), aborting ...\n",
537 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
539 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
543 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_currentblocknr), aborting ...\n",
544 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
546 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
550 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_blocksizes), aborting ...\n",
551 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
553 for (i = 0; i < sion_filedesc->
maxchunks * sion_filedesc->
ntasks; i++) p[i] = -1;
556 DPRINTFP((2, DFUNCTION, -1,
"leave alloc locations size=%d, maxblocks=%d\n", sion_filedesc->
ntasks, sion_filedesc->
maxchunks));
562 #define DFUNCTION "_sion_alloc_filedesc_block_arrays_only" 574 DPRINTFP((2, DFUNCTION, -1,
"enter alloc locations size=%d, maxblocks=%d\n", sion_filedesc->
ntasks, sion_filedesc->
maxchunks));
575 sion_filedesc->
all_blockcount = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
577 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_blockcount), aborting ...\n",
578 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
580 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
584 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_blocksizes), aborting ...\n",
585 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
587 for (i = 0; i < sion_filedesc->
maxchunks * sion_filedesc->
ntasks; i++) p[i] = -1;
589 DPRINTFP((2, DFUNCTION, -1,
"leave alloc locations size=%d, maxblocks=%d\n", sion_filedesc->
ntasks, sion_filedesc->
maxchunks));
594 #define DFUNCTION "_sion_free_filedesc" 598 int rc = SION_SUCCESS;
600 if (sion_filedesc == NULL) {
604 if (sion_filedesc->
fname)
605 free(sion_filedesc->
fname);
629 _sion_free_filedesc_all_keyvalptr(sion_filedesc);
632 if (sion_filedesc->
prefix)
633 free(sion_filedesc->
prefix);
641 if (sion_filedesc->
buffer)
642 free(sion_filedesc->
buffer);
650 #define DFUNCTION "_sion_print_filedesc" 658 int rc = SION_SUCCESS;
661 if (sion_filedesc == NULL) {
662 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot print, data structure is not allocated, aborting ...\n"));
665 DPRINTFP((level, desc, sion_filedesc->
rank,
"DUMP: sion_filedesc\n"));
666 DPRINTFP((level, desc, sion_filedesc->
rank,
"-------------------\n"));
668 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"fileptr", sion_filedesc->
fileptr));
672 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%s\n",
"fname", sion_filedesc->
fname));
673 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"sid", sion_filedesc->
sid));
674 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"rank", sion_filedesc->
rank));
675 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"globalrank", sion_filedesc->
globalrank));
676 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"ntasks", sion_filedesc->
ntasks));
681 else if(sion_filedesc->
state==
SION_FILESTATE_CLOSE) DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d (SION_FILESTATE_CLOSE)\n",
"state", sion_filedesc->
state));
685 else DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d (unknown)\n",
"state", sion_filedesc->
state));
686 if(sion_filedesc->
mode==
SION_FILEMODE_WRITE) DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d (SION_FILEMODE_WRITE)\n",
"mode", sion_filedesc->
mode));
687 else if(sion_filedesc->
mode==
SION_FILEMODE_READ) DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d (SION_FILEMODE_READ)\n",
"mode", sion_filedesc->
mode));
688 else DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d (unknown)\n",
"mode", sion_filedesc->
mode));
693 else DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d (unknown)\n",
"dup", sion_filedesc->
dup_mode));
694 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"endianness", sion_filedesc->
endianness));
695 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"swapbytes", sion_filedesc->
swapbytes));
696 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"fileversion", sion_filedesc->
fileversion));
697 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"filesionversion", sion_filedesc->
filesionversion));
698 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"filesionpatchlevel", sion_filedesc->
filesionpatchlevel));
699 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"fsblksize", sion_filedesc->
fsblksize));
700 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"lastchunknr", sion_filedesc->
lastchunknr));
701 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"maxchunks", sion_filedesc->
maxchunks));
702 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"maxusedchunks", sion_filedesc->
maxusedchunks));
704 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"currentpos", sion_filedesc->
currentpos));
705 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"currentblocknr", sion_filedesc->
currentblocknr));
707 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"startpos", sion_filedesc->
startpos));
708 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"chunksize", sion_filedesc->
chunksize));
709 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"chunksize_req", sion_filedesc->
chunksize_req));
710 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"globalskip", sion_filedesc->
globalskip));
711 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"end_of_header", sion_filedesc->
end_of_header));
712 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"start_of_varheader", sion_filedesc->
start_of_varheader));
713 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"start_of_data", sion_filedesc->
start_of_data));
715 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"nfiles", sion_filedesc->
nfiles));
716 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"filenumber", sion_filedesc->
filenumber));
717 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=\"%s\"\n",
"prefix", sion_filedesc->
prefix));
718 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"fpbuffer", sion_filedesc->
fpbuffer));
719 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"fpbuffer_size", sion_filedesc->
fpbuffer_size));
720 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"buffer", sion_filedesc->
buffer));
721 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"buffer_size", sion_filedesc->
buffer_size));
722 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"buffer_ptr", sion_filedesc->
buffer_ptr));
724 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"compress", sion_filedesc->
compress));
726 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"usecache", sion_filedesc->
usecache));
727 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"cachesize", sion_filedesc->
cachesize));
729 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"usecoll", sion_filedesc->
usecoll));
730 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"collsize", sion_filedesc->
collsize));
731 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"collector", sion_filedesc->
collector));
732 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"colldebug", sion_filedesc->
colldebug));
733 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"collcmdused", sion_filedesc->
collcmdused));
734 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"collmergemode", sion_filedesc->
collmergemode));
739 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"fileptr_exported", sion_filedesc->
fileptr_exported));
741 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"usebuddy", sion_filedesc->
usebuddy));
742 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"buddylevel", sion_filedesc->
buddylevel));
743 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"buddynr", sion_filedesc->
buddynr));
744 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"buddies", sion_filedesc->
buddies));
746 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"usehints", sion_filedesc->
usehints));
747 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"hinttype", sion_filedesc->
hinttype));
750 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"lrank", sion_filedesc->
lrank));
751 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"nlocaltasksinfile", sion_filedesc->
nlocaltasksinfile));
752 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"ntotaltasksinfile", sion_filedesc->
ntotaltasksinfile));
753 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"filemanagedbytask", sion_filedesc->
filemanagedbytask));
756 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"dataptr", sion_filedesc->
dataptr));
761 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"keyvalptr", sion_filedesc->
keyvalptr));
762 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"all_keyvalptr", sion_filedesc->
all_keyvalptr));
771 if (maxprintblocks>20) maxprintblocks=20;
772 for (i = 0; i <= maxprintblocks; i++) {
773 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"blocksizes", i, sion_filedesc->
blocksizes[i]));
775 if(maxprintblocks<sion_filedesc->lastchunknr) {
776 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s[....]=...\n",
"blocksizes"));
782 for (i = 0; i < sion_filedesc->
nfiles; i++) {
783 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%s\n",
"file:", i, sion_filedesc->
multifiles[i]->
fname));
787 if (flag&_SION_DEBUG_PRINT_ALL) {
790 for (i = 0; i < sion_filedesc->
ntasks; i++) {
791 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_chunksizes", i, sion_filedesc->
all_chunksizes[i]));
796 for (i = 0; i < sion_filedesc->
ntasks; i++) {
797 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_globalranks", i, sion_filedesc->
all_globalranks[i]));
802 for (i = 0; i < sion_filedesc->
ntasks; i++) {
803 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_localranks", i, sion_filedesc->
all_localranks[i]));
808 for (i = 0; i < sion_filedesc->
ntasks; i++) {
809 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_startpointers", i, sion_filedesc->
all_startpointers[i]));
814 for (i = 0; i < sion_filedesc->
ntasks; i++) {
815 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_currentpos", i, sion_filedesc->
all_currentpos[i]));
820 for (i = 0; i < sion_filedesc->
ntasks; i++) {
821 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_currentblocknr", i, sion_filedesc->
all_currentblocknr[i]));
826 for (i = 0; i < sion_filedesc->
ntasks; i++) {
827 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_blockcount", i, sion_filedesc->
all_blockcount[i]));
832 for (i = 0; i < sion_filedesc->
ntasks; i++) {
835 if (maxprintblocks>20) maxprintblocks=20;
836 for (b = 0; b < maxprintblocks ; b++) {
837 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d][%d]=%lld\n",
"all_blocksizes", i, b,
840 if(maxprintblocks<sion_filedesc->all_blockcount[i]) {
841 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s[%4d][..]=...\n",
"all_blocksizes", i));
848 if (flag&_SION_DEBUG_PRINT_RECURSIVE) {
849 for (i = 0; i < sion_filedesc->
nfiles; i++) {
850 DPRINTFP((level, desc, sion_filedesc->
rank,
"\n"));
851 DPRINTFP((level, desc, sion_filedesc->
rank,
"*** DUMP of multifile[%d] ***\n",i));
861 #define DFUNCTION "_sion_get_size_of_filedesc" 871 int bytes=0, fds=0, help_bytes, help_fds, i;
873 if(sion_filedesc==NULL)
return(bytes);
875 DPRINTFP((2, DFUNCTION, -1,
"start sid=%d nfiles=%d ntasks=%d maxchunks=%d mapping_size=%d\n", sion_filedesc->
sid,
879 DPRINTFP((512, DFUNCTION, -1,
" sizeof(sion_filedesc)= %5d\n", help_bytes));
884 DPRINTFP((512, DFUNCTION, -1,
" sizeof blocksizes= %5d\n", help_bytes));
890 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_chunksizes= %5d\n", help_bytes));
896 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_globalranks= %5d\n", help_bytes));
901 if(sion_filedesc->
fileptr!=NULL) {
908 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_localranks= %5d\n", help_bytes));
914 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_startpointers= %5d\n", help_bytes));
920 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_currentpos= %5d\n", help_bytes));
926 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_currentblocknr= %5d\n", help_bytes));
932 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_coll_collector= %5d\n", help_bytes));
938 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_coll_collsize= %5d\n", help_bytes));
944 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_blockcount= %5d\n", help_bytes));
950 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_blocksizes= %5d\n", help_bytes));
954 if( (sion_filedesc->
mapping!=NULL) ) {
956 DPRINTFP((512, DFUNCTION, -1,
" sizeof mapping= %5d\n", help_bytes));
960 if( (sion_filedesc->
prefix!=NULL) ) {
961 help_bytes=strlen(sion_filedesc->
prefix);
962 DPRINTFP((512, DFUNCTION, -1,
" sizeof prefix= %5d\n", help_bytes));
966 if( (sion_filedesc->
fpbuffer!=NULL) ) {
968 DPRINTFP((512, DFUNCTION, -1,
" sizeof fpbuffer= %5d\n", help_bytes));
972 if( (sion_filedesc->
buffer!=NULL) ) {
974 DPRINTFP((512, DFUNCTION, -1,
" sizeof buffer= %5d\n", help_bytes));
981 help_bytes=_sion_keyvalue_keymngr_key_get_sizeof(sion_filedesc->
keyvalptr);
982 DPRINTFP((512, DFUNCTION, -1,
" sizeof keyvalptr= %5d\n", help_bytes));
992 for (i = 0; i < sion_filedesc->
ntasks; i++) {
994 help_bytes=_sion_keyvalue_keymngr_key_get_sizeof(sion_filedesc->
all_keyvalptr[i]);
995 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_keyvalptr[%d]= %5d\n", i, help_bytes));
1005 DPRINTFP((512, DFUNCTION, -1,
" sizeof multifiles= %5d\n", help_bytes));
1008 for (i = 0; i < sion_filedesc->
nfiles; i++) {
1011 DPRINTFP((512, DFUNCTION, -1,
" sizeof multifile[%d]= %5d + %1d\n", i, help_bytes, help_fds));
1017 *numbytes=bytes;*numfds=fds;
1018 DPRINTFP((2, DFUNCTION, -1,
"leave total_size =%5d + %d fds\n", bytes, fds));
1024 #define DFUNCTION "_sion_dup_filedesc" 1034 if (sion_filedesc == NULL) {
1035 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"cannot allocate filedescriptor structure (sion_filedesc), aborting ...\n");
1051 new_fd->
fname = strdup(sion_filedesc->
fname);
1052 new_fd->
rank = sion_filedesc->
rank;
1058 new_fd->
mode = sion_filedesc->
mode;
sion_int32 filemanagedbytask
Sion File Descriptor Structure.
sion_int64 * all_blockcount
#define SION_FILESTATE_SEROPEN
sion_int64 * all_currentpos
sion_int32 filesionpatchlevel
sion_int64 * all_globalranks
#define SION_KEYVAL_INLINE
#define SION_CAPABILITY_FULL
int _sion_alloc_filedesc_arrays(_sion_filedesc *sion_filedesc)
Allocate memory for the internal sion arrays.
int _sion_get_size_of_filedesc(_sion_filedesc *sion_filedesc, int *numbytes, int *numfds)
get size of internal data structure sion_filedesc
int _sion_free_filedesc_arrays(_sion_filedesc *sion_filedesc)
free memory for the internal sion arrays
sion_int64 * all_currentblocknr
int _sion_alloc_filedesc_block_arrays_only(_sion_filedesc *sion_filedesc)
Allocate memory for the internal sion structure, fields for all chunksizes of all tasks.
int _sion_realloc_filedesc_blocklist(_sion_filedesc *sion_filedesc, sion_int32 maxchunks)
Increase the memory used by the internal sion structure for the blocklist.
#define SION_DESCSTATE_DUP_SEL_RANK_KEY
sion_int32 * all_coll_collector
sion_int32 fileptr_exported
#define SION_KEYVAL_UNKNOWN
sion_int32 * all_coll_capability
#define SION_CAPABILITY_NONE
#define SION_DESCSTATE_DUP_SEL_RANK
#define SION_CAPABILITY_ONLY_SENDER
#define SION_FILEMODE_READ
char * _sion_get_fileptr_desc(_sion_fileptr *sion_fileptr)
sion_int64 * all_startpointers
#define SION_CACHE_UNKNOWN
#define SION_FILESTATE_PAROPENMAPPEDMANAGED
char cachefn[SION_CACHE_FNLEN]
#define SION_FILEMODE_UNKNOWN
#define SION_FILESTATE_PAROPEN
int _sion_free_filedesc_coll_arrays(_sion_filedesc *sion_filedesc)
free memory for the internal sion arrays
sion_int32 coll_capability
#define SION_FILESTATE_PAROPENMAPPEDMASTER
sion_int32 currentblocknr
int _sion_alloc_filedesc_block_arrays(_sion_filedesc *sion_filedesc)
Allocate memory for the internal sion structure, fields for all chunksizes of all tasks.
#define SION_FILESTATE_SEROPENRANK
sion_int64 * all_chunksizes
int _sion_print_filedesc(_sion_filedesc *sion_filedesc, int level, char *desc, int flag)
Print the initialized sion file description.
#define SION_DESCSTATE_DUP
#define SION_FILESTATE_CLOSE
sion_int64 * all_localranks
_sion_filedesc * _sion_alloc_filedesc(void)
Allocates memory for internal sion structure.
int _sion_alloc_filedesc_coll_arrays(_sion_filedesc *sion_filedesc)
Allocate memory for the internal sion arrays.
int _sion_init_filedesc(_sion_filedesc *sion_filedesc)
Initialize the sion file description.
#define SION_FILEMODE_WRITE
_sion_filedesc * _sion_dup_filedesc(_sion_filedesc *sion_filedesc)
duplicates a filedesc data structure, not copying/reopen active file pointers
#define SION_FILESTATE_UNKNOWN
sion_int32 filesionversion
sion_int32 * all_coll_collsize
sion_int64 start_of_varheader
#define SION_DESCSTATE_ORIG
#define SION_FILESTATE_SEROPENMASTER
sion_int64 * all_blocksizes
sion_int32 ntotaltasksinfile
struct _sion_filedesc_struct _sion_filedesc
SION File Descriptor Alias.
sion_int32 nlocaltasksinfile
#define SION_HINTS_TYPE_UNKNOWN
_sion_filedesc ** multifiles
#define SION_FILESTATE_PAROPENMAPPED