Changeset 3566 in MondoRescue
- Timestamp:
- Apr 13, 2016, 12:58:26 PM (9 years ago)
- Location:
- branches/3.2/mondo
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.2/mondo/src/common/libmondo-raid.c
r3380 r3566 243 243 items++; 244 244 disklist->entries = items; 245 log_msg(3, "Adding device %s (%d)", device_to_add, index); 245 246 } 246 247 #endif … … 372 373 fprintf(fout, " raid-level linear\n"); 373 374 } else { 374 fprintf(fout, " raid-level %d\n", 375 raidrec->raid_level); 376 } 377 fprintf(fout, " nr-raid-disks %d\n", 378 raidrec->data_disks.entries); 375 fprintf(fout, " raid-level %d\n", raidrec->raid_level); 376 } 377 fprintf(fout, " nr-raid-disks %d\n", raidrec->data_disks.entries); 379 378 if (raidrec->spare_disks.entries > 0) { 380 fprintf(fout, " nr-spare-disks %d\n", 381 raidrec->spare_disks.entries); 379 fprintf(fout, " nr-spare-disks %d\n", raidrec->spare_disks.entries); 382 380 } 383 381 if (raidrec->parity_disks.entries > 0) { 384 fprintf(fout, " nr-parity-disks %d\n", 385 raidrec->parity_disks.entries); 386 } 387 fprintf(fout, " persistent-superblock %d\n", 388 raidrec->persistent_superblock); 382 fprintf(fout, " nr-parity-disks %d\n", raidrec->parity_disks.entries); 383 } 384 fprintf(fout, " persistent-superblock %d\n", raidrec->persistent_superblock); 389 385 if (raidrec->chunk_size > -1) { 390 386 fprintf(fout, " chunk-size %d\n", raidrec->chunk_size); … … 426 422 * @return 0 if the line was read and stored successfully, 1 if we're at end of file. 427 423 */ 428 int get_next_raidtab_line(FILE * fin, char *label, char*value)424 static int get_next_raidtab_line(FILE * fin, char **label, char **value) 429 425 { 430 426 char *incoming = NULL; 431 char *p ;427 char *p = NULL; 432 428 433 429 assert(fin != NULL); 434 assert(label != NULL); 435 assert(value != NULL); 436 437 label[0] = value[0] = '\0'; 430 438 431 if (feof(fin)) { 439 432 return (1); 440 433 } 434 441 435 for (mr_getline(incoming, fin); !feof(fin); mr_getline(incoming, fin)) { 436 log_msg(10,"Found in raidtab line: %s",incoming); 442 437 mr_strip_spaces(incoming); 443 438 p = strchr(incoming, ' '); … … 450 445 p++; 451 446 } 452 strcpy(label, incoming);453 strcpy(value, p);454 mr_free(incoming);447 *label = incoming; 448 *value = p; 449 log_msg(10,"Found in raidtab pair: %s|%s",*label,*value); 455 450 return (0); 456 451 } 457 mr_free(incoming);458 452 return (1); 459 453 } … … 468 462 */ 469 463 #ifdef __FreeBSD__ 470 int load_raidtab_into_raidlist(struct raidlist_itself *raidlist, 471 char *fname) 464 int load_raidtab_into_raidlist(struct raidlist_itself *raidlist, char *fname) 472 465 { 473 466 FILE *fin; … … 503 496 if (get_option_state(argc, argv, "hotspare")) { 504 497 strcpy(raidlist->spares.el[raidlist->spares.entries].name, drivename); 505 strcpy(raidlist->spares.el[raidlist->spares.entries]. device, devname); 506 raidlist->spares.el[raidlist->spares.entries].index = 507 raidlist->disks.entries; 498 strcpy(raidlist->spares.el[raidlist->spares.entries].device, devname); 499 raidlist->spares.el[raidlist->spares.entries].index = raidlist->disks.entries; 508 500 raidlist->spares.entries++; 509 501 } else { 510 502 strcpy(raidlist->disks.el[raidlist->disks.entries].name, drivename); 511 503 strcpy(raidlist->disks.el[raidlist->disks.entries].device, devname); 512 raidlist->disks.el[raidlist->disks.entries].index = 513 raidlist->disks.entries; 504 raidlist->disks.el[raidlist->disks.entries].index = raidlist->disks.entries; 514 505 raidlist->disks.entries++; 515 506 } … … 593 584 char *label = NULL; 594 585 char *value = NULL; 595 int items ;596 int v ;586 int items = 0; 587 int v = 0; 597 588 598 589 assert(raidlist != NULL); … … 608 599 return (1); 609 600 } 610 malloc_string(label);611 malloc_string(value);612 items = 0;613 601 log_it("Loading raidtab..."); 614 get_next_raidtab_line(fin, label,value);602 get_next_raidtab_line(fin, &label, &value); 615 603 while (!feof(fin)) { 616 604 log_msg(1, "Looking for raid record #%d", items); … … 621 609 strcpy(raidlist->el[items].additional_vars.el[v].label, label); 622 610 strcpy(raidlist->el[items].additional_vars.el[v].value, value); 611 mr_free(label); 623 612 log_msg(2,"Found raidtab entry Label: %s Value: %s",raidlist->el[items].additional_vars.el[v].label,raidlist->el[items].additional_vars.el[v].value); 624 613 v++; 625 get_next_raidtab_line(fin, label, value); 626 } 614 get_next_raidtab_line(fin, &label, &value); 615 } 616 627 617 raidlist->el[items].additional_vars.entries = v; 628 618 if (feof(fin)) { … … 632 622 log_msg(2, "Record #%d (%s) found", items, value); 633 623 strcpy(raidlist->el[items].raid_device, value); 634 for (get_next_raidtab_line(fin, label, value); 635 !feof(fin) && strcmp(label, "raiddev"); 636 get_next_raidtab_line(fin, label, value)) { 624 mr_free(label); 625 for (get_next_raidtab_line(fin, &label, &value); !feof(fin) && strcmp(label, "raiddev"); get_next_raidtab_line(fin, &label, &value)) { 637 626 process_raidtab_line(fin, &raidlist->el[items], label, value); 627 mr_free(label); 638 628 } 639 629 items++; 640 630 } 631 mr_free(label); 641 632 paranoid_fclose(fin); 642 633 raidlist->entries = items; 643 634 log_msg(1, "Raidtab loaded successfully."); 644 635 log_msg(1, "%d RAID devices in raidtab", items); 645 paranoid_free(label);646 paranoid_free(value);647 636 return (0); 648 637 } … … 665 654 */ 666 655 void 667 process_raidtab_line(FILE * fin, 668 struct raid_device_record *raidrec, 669 char *label, char *value) 656 process_raidtab_line(FILE * fin, struct raid_device_record *raidrec, char *label, char *value) 670 657 { 671 658 672 659 /*@ add mallocs * */ 673 char *labelB ;674 char *valueB ;660 char *labelB = NULL; 661 char *valueB = NULL; 675 662 676 663 struct list_of_disks *disklist; … … 678 665 int v; 679 666 680 malloc_string(labelB);681 malloc_string(valueB);682 667 assert(fin != NULL); 683 668 assert(raidrec != NULL); … … 716 701 log_msg(4,"Found raid parity %d",raidrec->parity); 717 702 } else if (!strcmp(label, "device")) { 718 get_next_raidtab_line(fin, labelB,valueB);703 get_next_raidtab_line(fin, &labelB, &valueB); 719 704 if (!strcmp(labelB, "raid-disk")) { 720 705 disklist = &raidrec->data_disks; … … 734 719 add_disk_to_raid_device(disklist, value, index); 735 720 } 721 mr_free(labelB); 736 722 } else { 737 723 v = raidrec->additional_vars.entries; … … 742 728 raidrec->additional_vars.entries = v; 743 729 } 744 paranoid_free(labelB);745 paranoid_free(valueB);746 730 } 747 731 #endif … … 755 739 */ 756 740 void 757 save_disklist_to_file(char *listname, 758 struct list_of_disks *disklist, FILE * fout) 741 save_disklist_to_file(char *listname, struct list_of_disks *disklist, FILE * fout) 759 742 { 760 743 int i; … … 765 748 766 749 for (i = 0; i < disklist->entries; i++) { 767 fprintf(fout, " device %s\n", 768 disklist->el[i].device); 750 fprintf(fout, " device %s\n", disklist->el[i].device); 769 751 fprintf(fout, " %-21s %d\n", listname, disklist->el[i].index); 770 752 } -
branches/3.2/mondo/src/lib/mr_str.c
r3294 r3566 182 182 } 183 183 /* Erase the end of the string if needed */ 184 j++;185 184 in_out[j] = '\0'; 186 185 } -
branches/3.2/mondo/test/test-mountlist.c
r3564 r3566 91 91 mr_free(flaws_str); 92 92 93 log_it("before check raidlist content"); 94 log_it("after check raidlist content"); 93 log_it("before write again raidlist content"); 94 save_raidlist_to_raidtab(raidlist, RAIDTAB_TEST".new"); 95 log_it("after write again raidlist content"); 95 96 96 97 log_it("before create mdadm dev"); 98 /* 97 99 create_raid_device_via_mdadm(raidlist,"/dev/md0",FALSE); 98 100 create_raid_device_via_mdadm(raidlist,"/dev/md1",FALSE); 101 */ 99 102 log_it("after create mdadm dev"); 100 103
Note:
See TracChangeset
for help on using the changeset viewer.