22 #include "sion_error_handler.h" 28 #define DFUNCTION "_sion_init_filedesc" 38 int rc = SION_SUCCESS;
40 if (sion_filedesc == NULL) {
41 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot initalized, data structure is not allocated, aborting ...\n"));
44 sion_filedesc->
fname = NULL;
45 sion_filedesc->
sid = -1;
46 sion_filedesc->
rank = -1;
47 sion_filedesc->
lrank = -1;
49 sion_filedesc->
ntasks = -1;
57 sion_filedesc->
fileversion = SION_FILEFORMAT_VERSION;
58 sion_filedesc->
filesionversion = 1000 * SION_MAIN_VERSION + SION_SUB_VERSION;
92 sion_filedesc->
debug = -1;
94 sion_filedesc->
nfiles = -1;
103 sion_filedesc->
ntasks = -1;
109 sion_filedesc->
prefix = NULL;
126 sion_filedesc->
cachefn[0]=
'\0';
132 sion_filedesc->
buffer = NULL;
161 #define DFUNCTION "_sion_alloc_filedesc" 171 if (sion_filedesc == NULL) {
172 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"cannot allocate filedescriptor structure of size %lu (sion_filedesc), aborting ...\n", (
unsigned long)
sizeof(sion_filedesc));
176 return(sion_filedesc);
181 #define DFUNCTION "_sion_realloc_filedesc_blocklist" 191 int rc = SION_SUCCESS;
194 sion_filedesc->
blocksizes = (sion_int64 *) malloc(maxchunks *
sizeof(sion_int64));
196 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_blocksizes), aborting ...\n",
197 (
unsigned long) maxchunks *
sizeof(sion_int64)));
199 for (i = 0; i < maxchunks; i++)
202 DPRINTFP((2, DFUNCTION, -1,
" alloc for %d chunks\n", maxchunks ));
205 if (sion_filedesc->
maxchunks <= maxchunks) {
206 sion_filedesc->
blocksizes = (sion_int64 *) realloc(sion_filedesc->
blocksizes, maxchunks *
sizeof(sion_int64));
207 for (i = sion_filedesc->
maxchunks; i < maxchunks; i++)
209 DPRINTFP((2, DFUNCTION, -1,
" realloc from %d to %d chunks\n", sion_filedesc->
maxchunks, maxchunks ));
213 fprintf(stderr,
"allocate temporary memory of size %zu (sion_blocksizes) not necessary (allocated size %zu) ...\n",
214 (
size_t) maxchunks *
sizeof(sion_int64), (
size_t) sion_filedesc->
maxchunks *
sizeof(sion_int64));
215 DPRINTFP((2, DFUNCTION, -1,
"allocate temporary memory of size %zu (sion_blocksizes) not necessary (allocated size %zu) ...\n",
216 (
size_t) maxchunks *
sizeof(sion_int64), (
size_t) sion_filedesc->
maxchunks *
sizeof(sion_int64) ));
224 #define DFUNCTION "_sion_alloc_filedesc_all_chunksizes" 225 int _sion_alloc_filedesc_all_chunksizes(
_sion_filedesc *sion_filedesc)
227 int i, rc = SION_SUCCESS;
230 if (sion_filedesc->
ntasks<0) {
231 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
234 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
235 sion_filedesc->
all_chunksizes = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
237 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_chunksizes), aborting ...\n",
238 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
240 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
245 #define DFUNCTION "_sion_alloc_filedesc_all_startpointers" 246 int _sion_alloc_filedesc_all_startpointers(
_sion_filedesc *sion_filedesc)
248 int i, rc = SION_SUCCESS;
251 if (sion_filedesc->
ntasks<0) {
252 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
256 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_startpointers), aborting ...\n",
257 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
259 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
265 #define DFUNCTION "_sion_alloc_filedesc_all_globalranks" 266 int _sion_alloc_filedesc_all_globalranks(
_sion_filedesc *sion_filedesc)
268 int i, rc = SION_SUCCESS;
271 if (sion_filedesc->
ntasks<0) {
272 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
274 sion_filedesc->
all_globalranks = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
276 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_globalranks), aborting ...\n",
277 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
279 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
285 #define DFUNCTION "_sion_alloc_filedesc_all_localranks" 286 int _sion_alloc_filedesc_all_localranks(
_sion_filedesc *sion_filedesc)
288 int i, rc = SION_SUCCESS;
291 if (sion_filedesc->
ntasks<0) {
292 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
294 sion_filedesc->
all_localranks = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
296 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_localranks), aborting ...\n",
297 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
299 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
305 #define DFUNCTION "_sion_alloc_filedesc_all_keyvalptr" 306 int _sion_alloc_filedesc_all_keyvalptr(
_sion_filedesc *sion_filedesc)
308 int i, rc = SION_SUCCESS;
311 if (sion_filedesc->
ntasks<0) {
312 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
315 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
316 sion_filedesc->
all_keyvalptr = p = (
void *) malloc(sion_filedesc->
ntasks *
sizeof(
void *));
318 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_keyvalptr), aborting ...\n",
319 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
321 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = NULL;
327 #define DFUNCTION "_sion_alloc_filedesc_arrays" 336 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
338 _sion_alloc_filedesc_all_chunksizes(sion_filedesc);
339 _sion_alloc_filedesc_all_startpointers(sion_filedesc);
340 _sion_alloc_filedesc_all_globalranks(sion_filedesc);
342 DPRINTFP((2, DFUNCTION, -1,
"leave alloc arrays size=%d\n", sion_filedesc->
ntasks));
348 #define DFUNCTION "_sion_free_filedesc_all_chunksizes" 349 int _sion_free_filedesc_all_chunksizes(
_sion_filedesc *sion_filedesc)
351 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
356 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
361 #define DFUNCTION "_sion_free_filedesc_all_globalranks" 362 int _sion_free_filedesc_all_globalranks(
_sion_filedesc *sion_filedesc)
364 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
369 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
374 #define DFUNCTION "_sion_free_filedesc_all_startpointers" 375 int _sion_free_filedesc_all_startpointers(
_sion_filedesc *sion_filedesc)
377 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
382 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
387 #define DFUNCTION "_sion_free_filedesc_all_localranks" 388 int _sion_free_filedesc_all_localranks(
_sion_filedesc *sion_filedesc)
390 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
395 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
400 #define DFUNCTION "_sion_free_filedesc_all_keyvalptr" 401 int _sion_free_filedesc_all_keyvalptr(
_sion_filedesc *sion_filedesc)
404 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
406 for(tasknr=0;tasknr<sion_filedesc->
ntasks;tasknr++) {
408 DPRINTFP((2, DFUNCTION, -1,
"free now KEYVALPTR all_keyvalptr[%d] = %x\n",tasknr,sion_filedesc->
all_keyvalptr[tasknr]));
415 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
420 #define DFUNCTION "_sion_free_filedesc_arrays" 430 _sion_free_filedesc_all_chunksizes(sion_filedesc);
431 _sion_free_filedesc_all_globalranks(sion_filedesc);
432 _sion_free_filedesc_all_startpointers(sion_filedesc);
438 #define DFUNCTION "_sion_alloc_filedesc_coll_arrays" 450 if (sion_filedesc->
ntasks<0) {
451 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate internal arrays ntasks<0, aborting ...\n"));
454 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
457 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_collsize), aborting ...\n",
458 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
460 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
462 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
465 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_collector), aborting ...\n",
466 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
468 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
470 DPRINTFP((2, DFUNCTION, -1,
"enter alloc arrays size=%d (%lu bytes)\n", sion_filedesc->
ntasks, (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
473 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_all_capability), aborting ...\n",
474 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int32)));
476 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
479 DPRINTFP((2, DFUNCTION, -1,
"leave alloc arrays size=%d\n", sion_filedesc->
ntasks));
485 #define DFUNCTION "_sion_free_filedesc_coll_arrays" 495 DPRINTFP((2, DFUNCTION, -1,
"enter free arrays\n"));
508 DPRINTFP((2, DFUNCTION, -1,
"leave free arrays\n"));
513 #define DFUNCTION "_sion_alloc_filedesc_block_arrays" 525 DPRINTFP((2, DFUNCTION, -1,
"enter alloc locations size=%d, maxblocks=%d\n", sion_filedesc->
ntasks, sion_filedesc->
maxchunks));
526 sion_filedesc->
all_blockcount = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
528 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_blockcount), aborting ...\n",
529 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
531 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
533 sion_filedesc->
all_currentpos = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
535 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_currentpos), aborting ...\n",
536 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
538 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
542 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_currentblocknr), aborting ...\n",
543 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
545 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
549 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_blocksizes), aborting ...\n",
550 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
552 for (i = 0; i < sion_filedesc->
maxchunks * sion_filedesc->
ntasks; i++) p[i] = -1;
555 DPRINTFP((2, DFUNCTION, -1,
"leave alloc locations size=%d, maxblocks=%d\n", sion_filedesc->
ntasks, sion_filedesc->
maxchunks));
561 #define DFUNCTION "_sion_alloc_filedesc_block_arrays_only" 573 DPRINTFP((2, DFUNCTION, -1,
"enter alloc locations size=%d, maxblocks=%d\n", sion_filedesc->
ntasks, sion_filedesc->
maxchunks));
574 sion_filedesc->
all_blockcount = p = (sion_int64 *) malloc(sion_filedesc->
ntasks *
sizeof(sion_int64));
576 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_blockcount), aborting ...\n",
577 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
579 for (i = 0; i < sion_filedesc->
ntasks; i++) p[i] = -1;
583 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot allocate temporary memory of size %lu (sion_blocksizes), aborting ...\n",
584 (
unsigned long) sion_filedesc->
ntasks *
sizeof(sion_int64)));
586 for (i = 0; i < sion_filedesc->
maxchunks * sion_filedesc->
ntasks; i++) p[i] = -1;
588 DPRINTFP((2, DFUNCTION, -1,
"leave alloc locations size=%d, maxblocks=%d\n", sion_filedesc->
ntasks, sion_filedesc->
maxchunks));
593 #define DFUNCTION "_sion_free_filedesc" 597 int rc = SION_SUCCESS;
599 if (sion_filedesc == NULL) {
603 if (sion_filedesc->
fname)
604 free(sion_filedesc->
fname);
628 _sion_free_filedesc_all_keyvalptr(sion_filedesc);
631 if (sion_filedesc->
prefix)
632 free(sion_filedesc->
prefix);
642 if (sion_filedesc->
buffer)
643 free(sion_filedesc->
buffer);
651 #define DFUNCTION "_sion_print_filedesc" 659 int rc = SION_SUCCESS;
662 if (sion_filedesc == NULL) {
663 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN, DFUNCTION
": cannot print, data structure is not allocated, aborting ...\n"));
666 DPRINTFP((level, desc, sion_filedesc->
rank,
"DUMP: sion_filedesc\n"));
667 DPRINTFP((level, desc, sion_filedesc->
rank,
"-------------------\n"));
669 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"fileptr", sion_filedesc->
fileptr));
673 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%s\n",
"fname", sion_filedesc->
fname));
674 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"sid", sion_filedesc->
sid));
675 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"rank", sion_filedesc->
rank));
676 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"globalrank", sion_filedesc->
globalrank));
677 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"ntasks", sion_filedesc->
ntasks));
682 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));
686 else DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d (unknown)\n",
"state", sion_filedesc->
state));
687 if(sion_filedesc->
mode==
SION_FILEMODE_WRITE) DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d (SION_FILEMODE_WRITE)\n",
"mode", sion_filedesc->
mode));
688 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));
689 else DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d (unknown)\n",
"mode", sion_filedesc->
mode));
694 else DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d (unknown)\n",
"dup", sion_filedesc->
dup_mode));
695 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"endianness", sion_filedesc->
endianness));
696 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"swapbytes", sion_filedesc->
swapbytes));
697 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"fileversion", sion_filedesc->
fileversion));
698 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"filesionversion", sion_filedesc->
filesionversion));
699 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"filesionpatchlevel", sion_filedesc->
filesionpatchlevel));
700 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"fsblksize", sion_filedesc->
fsblksize));
701 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"lastchunknr", sion_filedesc->
lastchunknr));
702 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"maxchunks", sion_filedesc->
maxchunks));
703 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"maxusedchunks", sion_filedesc->
maxusedchunks));
705 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"currentpos", sion_filedesc->
currentpos));
706 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"currentblocknr", sion_filedesc->
currentblocknr));
708 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"startpos", sion_filedesc->
startpos));
709 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"chunksize", sion_filedesc->
chunksize));
710 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"chunksize_req", sion_filedesc->
chunksize_req));
711 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"globalskip", sion_filedesc->
globalskip));
712 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"end_of_header", sion_filedesc->
end_of_header));
713 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"start_of_varheader", sion_filedesc->
start_of_varheader));
714 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%lld\n",
"start_of_data", sion_filedesc->
start_of_data));
716 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"nfiles", sion_filedesc->
nfiles));
717 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"filenumber", sion_filedesc->
filenumber));
718 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=\"%s\"\n",
"prefix", sion_filedesc->
prefix));
719 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=\"%s\"\n",
"newfname", sion_filedesc->
newfname));
720 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"fpbuffer", sion_filedesc->
fpbuffer));
721 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"fpbuffer_size", sion_filedesc->
fpbuffer_size));
722 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"buffer", sion_filedesc->
buffer));
723 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"buffer_size", sion_filedesc->
buffer_size));
724 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"buffer_ptr", sion_filedesc->
buffer_ptr));
726 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"compress", sion_filedesc->
compress));
728 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"usecache", sion_filedesc->
usecache));
729 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"cachesize", sion_filedesc->
cachesize));
731 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"usecoll", sion_filedesc->
usecoll));
732 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"collsize", sion_filedesc->
collsize));
733 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"collector", sion_filedesc->
collector));
734 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"colldebug", sion_filedesc->
colldebug));
735 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"collcmdused", sion_filedesc->
collcmdused));
736 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"collmergemode", sion_filedesc->
collmergemode));
741 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"fileptr_exported", sion_filedesc->
fileptr_exported));
743 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"usebuddy", sion_filedesc->
usebuddy));
744 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"buddylevel", sion_filedesc->
buddylevel));
745 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"buddynr", sion_filedesc->
buddynr));
746 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"buddies", sion_filedesc->
buddies));
748 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"usehints", sion_filedesc->
usehints));
749 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"hinttype", sion_filedesc->
hinttype));
752 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"lrank", sion_filedesc->
lrank));
753 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"nlocaltasksinfile", sion_filedesc->
nlocaltasksinfile));
754 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"ntotaltasksinfile", sion_filedesc->
ntotaltasksinfile));
755 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%d\n",
"filemanagedbytask", sion_filedesc->
filemanagedbytask));
758 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"dataptr", sion_filedesc->
dataptr));
763 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"keyvalptr", sion_filedesc->
keyvalptr));
764 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s=%x\n",
"all_keyvalptr", sion_filedesc->
all_keyvalptr));
773 if (maxprintblocks>20) maxprintblocks=20;
774 for (i = 0; i <= maxprintblocks; i++) {
775 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"blocksizes", i, sion_filedesc->
blocksizes[i]));
777 if(maxprintblocks<sion_filedesc->lastchunknr) {
778 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s[....]=...\n",
"blocksizes"));
784 for (i = 0; i < sion_filedesc->
nfiles; i++) {
785 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%s\n",
"file:", i, sion_filedesc->
multifiles[i]->
fname));
789 if (flag&_SION_DEBUG_PRINT_ALL) {
792 for (i = 0; i < sion_filedesc->
ntasks; i++) {
793 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_chunksizes", i, sion_filedesc->
all_chunksizes[i]));
798 for (i = 0; i < sion_filedesc->
ntasks; i++) {
799 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_globalranks", i, sion_filedesc->
all_globalranks[i]));
804 for (i = 0; i < sion_filedesc->
ntasks; i++) {
805 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_localranks", i, sion_filedesc->
all_localranks[i]));
810 for (i = 0; i < sion_filedesc->
ntasks; i++) {
811 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_startpointers", i, sion_filedesc->
all_startpointers[i]));
816 for (i = 0; i < sion_filedesc->
ntasks; i++) {
817 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_currentpos", i, sion_filedesc->
all_currentpos[i]));
822 for (i = 0; i < sion_filedesc->
ntasks; i++) {
823 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_currentblocknr", i, sion_filedesc->
all_currentblocknr[i]));
828 for (i = 0; i < sion_filedesc->
ntasks; i++) {
829 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d]=%lld\n",
"all_blockcount", i, sion_filedesc->
all_blockcount[i]));
834 for (i = 0; i < sion_filedesc->
ntasks; i++) {
837 if (maxprintblocks>20) maxprintblocks=20;
838 for (b = 0; b < maxprintblocks ; b++) {
839 DPRINTFP((2048, desc, sion_filedesc->
rank,
"D: %-20s[%4d][%d]=%lld\n",
"all_blocksizes", i, b,
842 if(maxprintblocks<sion_filedesc->all_blockcount[i]) {
843 DPRINTFP((level, desc, sion_filedesc->
rank,
"D: %-20s[%4d][..]=...\n",
"all_blocksizes", i));
850 if (flag&_SION_DEBUG_PRINT_RECURSIVE) {
851 for (i = 0; i < sion_filedesc->
nfiles; i++) {
852 DPRINTFP((level, desc, sion_filedesc->
rank,
"\n"));
853 DPRINTFP((level, desc, sion_filedesc->
rank,
"*** DUMP of multifile[%d] ***\n",i));
863 #define DFUNCTION "_sion_get_size_of_filedesc" 873 int bytes=0, fds=0, help_bytes, help_fds, i;
875 if(sion_filedesc==NULL)
return(bytes);
877 DPRINTFP((2, DFUNCTION, -1,
"start sid=%d nfiles=%d ntasks=%d maxchunks=%d mapping_size=%d\n", sion_filedesc->
sid,
881 DPRINTFP((512, DFUNCTION, -1,
" sizeof(sion_filedesc)= %5d\n", help_bytes));
886 DPRINTFP((512, DFUNCTION, -1,
" sizeof blocksizes= %5d\n", help_bytes));
892 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_chunksizes= %5d\n", help_bytes));
898 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_globalranks= %5d\n", help_bytes));
903 if(sion_filedesc->
fileptr!=NULL) {
910 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_localranks= %5d\n", help_bytes));
916 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_startpointers= %5d\n", help_bytes));
922 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_currentpos= %5d\n", help_bytes));
928 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_currentblocknr= %5d\n", help_bytes));
934 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_coll_collector= %5d\n", help_bytes));
940 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_coll_collsize= %5d\n", help_bytes));
946 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_blockcount= %5d\n", help_bytes));
952 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_blocksizes= %5d\n", help_bytes));
956 if( (sion_filedesc->
mapping!=NULL) ) {
958 DPRINTFP((512, DFUNCTION, -1,
" sizeof mapping= %5d\n", help_bytes));
962 if( (sion_filedesc->
prefix!=NULL) ) {
963 help_bytes=strlen(sion_filedesc->
prefix);
964 DPRINTFP((512, DFUNCTION, -1,
" sizeof prefix= %5d\n", help_bytes));
968 if( (sion_filedesc->
newfname!=NULL) ) {
969 help_bytes=strlen(sion_filedesc->
newfname);
970 DPRINTFP((512, DFUNCTION, -1,
" sizeof newfname= %5d\n", help_bytes));
974 if( (sion_filedesc->
fpbuffer!=NULL) ) {
976 DPRINTFP((512, DFUNCTION, -1,
" sizeof fpbuffer= %5d\n", help_bytes));
980 if( (sion_filedesc->
buffer!=NULL) ) {
982 DPRINTFP((512, DFUNCTION, -1,
" sizeof buffer= %5d\n", help_bytes));
989 help_bytes=_sion_keyvalue_keymngr_key_get_sizeof(sion_filedesc->
keyvalptr);
990 DPRINTFP((512, DFUNCTION, -1,
" sizeof keyvalptr= %5d\n", help_bytes));
1000 for (i = 0; i < sion_filedesc->
ntasks; i++) {
1002 help_bytes=_sion_keyvalue_keymngr_key_get_sizeof(sion_filedesc->
all_keyvalptr[i]);
1003 DPRINTFP((512, DFUNCTION, -1,
" sizeof all_keyvalptr[%d]= %5d\n", i, help_bytes));
1013 DPRINTFP((512, DFUNCTION, -1,
" sizeof multifiles= %5d\n", help_bytes));
1016 for (i = 0; i < sion_filedesc->
nfiles; i++) {
1019 DPRINTFP((512, DFUNCTION, -1,
" sizeof multifile[%d]= %5d + %1d\n", i, help_bytes, help_fds));
1025 *numbytes=bytes;*numfds=fds;
1026 DPRINTFP((2, DFUNCTION, -1,
"leave total_size =%5d + %d fds\n", bytes, fds));
1032 #define DFUNCTION "_sion_dup_filedesc" 1042 if (sion_filedesc == NULL) {
1043 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"cannot allocate filedescriptor structure (sion_filedesc), aborting ...\n");
1059 new_fd->
fname = strdup(sion_filedesc->
fname);
1060 new_fd->
rank = sion_filedesc->
rank;
1066 new_fd->
mode = sion_filedesc->
mode;
sion_int32 filemanagedbytask
_sion_filedesc * _sion_alloc_filedesc()
Allocates memory for internal sion structure.
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
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