Changeset 3190 in MondoRescue for branches/3.1/mondo/src/common/libmondo-archive.c
- Timestamp:
- Sep 25, 2013, 8:55:43 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.1/mondo/src/common/libmondo-archive.c
r3161 r3190 503 503 /*@ buffer ************************************************************ */ 504 504 char *tmp = NULL; 505 char *tmp1 = NULL; 505 506 char *tmp2 = NULL; 506 507 char *command = NULL; … … 513 514 char *bootldr_ver = NULL; 514 515 char *tape_device = NULL; 516 char *last_filelist_number = NULL; 515 517 char *broken_bios_sz = NULL; 516 518 char *cd_recovery_sz = NULL; … … 535 537 assert(bkpinfo != NULL); 536 538 539 mvaddstr_and_log_it(g_currentY, 0, "Calling MINDI to create boot+data disks"); 540 open_evalcall_form("Calling MINDI to create boot+data disks"); 537 541 mr_asprintf(tmp, "%s/filelist.full", bkpinfo->tmpdir); 538 542 if (!does_file_exist(tmp)) { … … 547 551 mr_free(tmp); 548 552 553 mr_asprintf(tmp, "%s/LAST-FILELIST-NUMBER", bkpinfo->tmpdir); 554 mr_asprintf(last_filelist_number, "%s", last_line_of_file(tmp)); 555 mr_free(tmp); 556 549 557 if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) { 550 mr_asprintf(tape_size_sz, "%ld", bkpinfo->media_size [1]);558 mr_asprintf(tape_size_sz, "%ld", bkpinfo->media_size); 551 559 if (bkpinfo->media_device) { 552 560 ntapedev = get_non_rewind_dev(bkpinfo->media_device); … … 721 729 } 722 730 log_to_screen("Your boot loader is %s and it boots from %s", bootldr_str, bkpinfo->boot_device); 731 723 732 if (bootldr_ver != NULL) { 724 mr_asprintf(tmp, "Boot loader version string: %s", bootldr_ver); 725 log_to_screen(tmp); 726 mr_free(tmp); 727 } 728 if (bootldr_ver != NULL) { 729 mr_asprintf(tmp, "Boot loader version string: %s", bootldr_ver); 730 log_to_screen(tmp); 731 mr_free(tmp); 733 log_to_screen("Boot loader version string: %s", bootldr_ver); 732 734 } 733 735 … … 776 778 } 777 779 780 mr_asprintf(tmp, "%s/BACKUP-MEDIA-TYPE", bkpinfo->tmpdir); 781 if (write_one_liner_data_file(tmp, value)) { 782 res++; 783 log_msg(1, "%ld: Unable to write one-liner backup-media-type", __LINE__); 784 } 785 mr_free(value); 786 mr_free(tmp); 787 778 788 mr_asprintf(tmp, "%s/BOOTLOADER.NAME", bkpinfo->tmpdir); 779 789 if (write_one_liner_data_file(tmp, bootldr_str)) { … … 784 794 mr_free(tmp); 785 795 796 mr_asprintf(tmp, "%s/BOOTLOADER.VER", bkpinfo->tmpdir); 797 if (write_one_liner_data_file(tmp, bootldr_ver)) { 798 res++; 799 log_msg(1, "%ld: Unable to write one-liner bootloader.ver", 800 __LINE__); 801 } 802 mr_free(bootldr_ver); 803 mr_free(tmp); 804 805 mr_asprintf(tmp, "%s/DIFFERENTIAL", bkpinfo->tmpdir); 806 if (bkpinfo->differential) { 807 res += write_one_liner_data_file(tmp, "1"); 808 } else { 809 res += write_one_liner_data_file(tmp, "0"); 810 } 811 mr_free(tmp); 812 813 if (g_getfattr) { 814 mr_asprintf(tmp1, "%s/XATTR", bkpinfo->tmpdir); 815 if (write_one_liner_data_file(tmp1, "TRUE")) { 816 log_msg(1, "%ld: Unable to write one-liner XATTR", 817 __LINE__); 818 } 819 paranoid_free(tmp1); 820 } 821 if (g_getfacl) { 822 mr_asprintf(tmp1, "%s/ACL", bkpinfo->tmpdir); 823 if (write_one_liner_data_file(tmp1, "TRUE")) { 824 log_msg(1, "%ld: Unable to write one-liner ACL", 825 __LINE__); 826 } 827 paranoid_free(tmp1); 828 } 829 if (bkpinfo->use_obdr) { 830 mr_asprintf(tmp1, "%s/OBDR", bkpinfo->tmpdir); 831 if (write_one_liner_data_file(tmp1, "TRUE")) { 832 log_msg(1, "%ld: Unable to write one-liner OBDR", 833 __LINE__); 834 } 835 paranoid_free(tmp1); 836 } 837 786 838 estimated_total_noof_slices = size_of_all_biggiefiles_K(bkpinfo) / bkpinfo->optimal_set_size + 1; 787 839 788 /* BERLIOS: add netfs stuff here? */840 /* TODO: add netfs stuff here? */ 789 841 mr_asprintf(command, "mkdir -p %s/images", bkpinfo->scratchdir); 790 842 if (system(command)) { … … 796 848 update_evalcall_form(3); 797 849 798 /* 1 2 3 4 5 6 7 8 9 10 */ 799 mr_asprintf(command, "mindi %s --custom %s %s/images '%s' '%s' '%s' %ld '%s' '%s' '%s'\800 '%s' %ld '%s' '%s' '%s' '%s' %ld %d '%s' '%s' '%s' >> %s", 801 /* 11 12 13 14 15 16 17 18 19 20 21 last */ 802 tmp2, // parameter #1 803 850 /* "mindi --custom 2=%s 3=%s/images 4=\"%s\" 5=\"%s\" \ 851 6=\"%s\" 7=%ld 8=\"%s\" 9=\"%s\" 10=\"%s\" \ 852 11=\"%s\" 12=%s 13=%ld 14=\"%s\" 15=\"%s\" 16=\"%s\" 17=\"%s\" 18=%ld 19=%d",*/ 853 mr_asprintf(command, "mindi %s --custom %s %s/images '%s' '%s' \ 854 '%s' %ld '%s' '%s' '%s' \ 855 '%s' %s %ld '%s' '%s' '%s' '%s' %ld %d '%s'", tmp2, bkpinfo->tmpdir, // parameter #2 804 856 bkpinfo->scratchdir, // parameter #3 805 857 bkpinfo->kernel_path, // parameter #4 … … 811 863 (bkpinfo->image_devs == NULL) ? "\"\"" : bkpinfo->image_devs, // parameter #10 812 864 broken_bios_sz, // parameter #11 813 estimated_total_noof_slices, // parameter #12 (INT) 814 (bkpinfo->exclude_devs == NULL) ? "\"\"" : bkpinfo->exclude_devs, // parameter #13 815 use_comp_sz, // parameter #14 816 use_lilo_sz, // parameter #15 817 use_star_sz, // parameter #16 818 bkpinfo->internal_tape_block_size, // parameter #17 (LONG) 819 bkpinfo->differential, // parameter #18 (INT) 865 last_filelist_number, // parameter #12 (STRING) 866 estimated_total_noof_slices, // parameter #13 (INT) 867 (bkpinfo->exclude_devs == NULL) ? "\"\"" : bkpinfo->exclude_devs, // parameter #14 868 use_comp_sz, // parameter #15 869 use_lilo_sz, // parameter #16 870 use_star_sz, // parameter #17 871 bkpinfo->internal_tape_block_size, // parameter #18 (LONG) 872 bkpinfo->differential, // parameter #19 (INT) 820 873 use_gzip_sz, // parameter #19 (STRING) 821 874 use_lzma_sz, // parameter #20 (STRING) … … 823 876 MONDO_LOGFILE); 824 877 825 mr_free(value); 826 mr_free(tmp2); 878 mr_free(last_filelist_number); 827 879 mr_free(tape_device); 828 880 mr_free(use_lzo_sz); … … 844 896 // popup_and_OK("Pausing"); 845 897 846 mvaddstr_and_log_it(g_currentY, 0, "Calling MINDI to create boot+data disks");847 open_evalcall_form("Calling MINDI to create boot+data disks");848 898 res = run_external_binary_with_percentage_indicator_NEW("Generating boot+data disks", command); 849 899 update_evalcall_form(99); … … 872 922 run_program_and_log_output(command, FALSE); 873 923 mr_free(command); 924 } else { 925 mr_asprintf(tmp, "cp -f %s/images/all.tar.gz %s", bkpinfo->scratchdir, bkpinfo->tmpdir); 926 if (system(tmp)) { 927 fatal_error("Cannot find all.tar.gz in tmpdir"); 928 } 929 mr_free(tmp); 874 930 } 875 931 if (res) { … … 982 1038 mr_asprintf(archiving_filelist_fname, FILELIST_FNAME_RAW_SZ, bkpinfo->tmpdir, archiving_set_no); 983 1039 if (!does_file_exist(archiving_filelist_fname)) { 984 log_msg(3, " [%d:%d] - well, I would archive %d, except that it doesn't exist. I'll stop now.", getpid(), this_thread_no, archiving_set_no);1040 log_msg(3, "%s[%d:%d] - well, I would archive %d, except that it doesn't exist. I'll stop now.", FORTY_SPACES, getpid(), this_thread_no, archiving_set_no); 985 1041 mr_free(archiving_afioball_fname); 986 1042 break; … … 989 1045 mr_asprintf(tmp, AFIOBALL_FNAME_RAW_SZ, bkpinfo->tmpdir, archiving_set_no - ARCH_BUFFER_NUM, bkpinfo->zip_suffix); 990 1046 if (does_file_exist(tmp)) { 991 log_msg(4, " [%d:%d] - waiting for storer", getpid(), this_thread_no);1047 log_msg(4, "%s[%d:%d] - waiting for storer", FORTY_SPACES, getpid(), this_thread_no); 992 1048 while (does_file_exist(tmp)) { 993 1049 sleep(1); … … 997 1053 mr_free(tmp); 998 1054 999 log_msg(4, " [%d:%d] - EXATing %d...", getpid(), this_thread_no, archiving_set_no);1055 log_msg(4, "%s[%d:%d] - EXATing %d...", FORTY_SPACES, getpid(), this_thread_no, archiving_set_no); 1000 1056 1001 1057 if (g_getfattr) { … … 1010 1066 } 1011 1067 1012 log_msg(4, " [%d:%d] - archiving %d...", getpid(), this_thread_no, archiving_set_no);1068 log_msg(4, "%s[%d:%d] - archiving %d...", FORTY_SPACES, getpid(), this_thread_no, archiving_set_no); 1013 1069 res = archive_this_fileset(archiving_filelist_fname, archiving_afioball_fname, archiving_set_no); 1014 1070 mr_free(archiving_afioball_fname); … … 1035 1091 fatal_error("Cannot get semaphore V"); 1036 1092 } 1037 log_msg(4, " [%d:%d] - archived %d OK", getpid(), this_thread_no, archiving_set_no);1093 log_msg(4, "%s[%d:%d] - archived %d OK", FORTY_SPACES, getpid(), this_thread_no, archiving_set_no); 1038 1094 archiving_set_no++; 1039 1095 … … 1050 1106 fatal_error("Cannot get semaphore V"); 1051 1107 } 1052 log_msg(3, " [%d:%d] - exiting", getpid(), this_thread_no);1108 log_msg(3, "%s[%d:%d] - exiting", FORTY_SPACES, getpid(), this_thread_no); 1053 1109 pthread_exit(NULL); 1054 1110 } … … 1338 1394 if (!get_bit_N_of_array 1339 1395 (p_list_of_fileset_flags, storing_set_no)) { 1340 misc_counter_that_is_not_important = (misc_counter_that_is_not_important + 1) % 5; 1341 sleep(1); 1396 misc_counter_that_is_not_important = (misc_counter_that_is_not_important + 1) % 5; 1397 /* BCO the media_usage_comment is not really initialized there ! 1398 if (!misc_counter_that_is_not_important) { 1399 update_progress_form(media_usage_comment); 1400 } 1401 */ 1402 sleep(1); 1342 1403 } else { 1343 1404 // store set N … … 1765 1826 log_msg(1, "Non-ia64 --> lilo"); 1766 1827 mr_asprintf(full_isofs_cmd, "%s%s-b images/mindi-bootroot.2880.img -c boot.cat -o '_ISO_' -J -V _CD#_ .",isofs_cmd,MONDO_MKISOFS); 1767 1828 // FIXME: fixed boot size probably wrong. lilo to be removed 1768 1829 res = eval_call_to_make_ISO(full_isofs_cmd, destfile, g_current_media_number, message_to_screen); 1830 mr_free(full_isofs_cmd); 1769 1831 #endif 1770 1832 } else { … … 1773 1835 mr_asprintf(full_isofs_cmd, "%s%s-o '_ISO_' -V _CD#_ .",isofs_cmd,MONDO_MKISOFS_REGULAR_SYSLINUX); 1774 1836 res = eval_call_to_make_ISO(full_isofs_cmd, destfile, g_current_media_number, message_to_screen); 1775 }1776 mr_free(full_isofs_cmd);1837 mr_free(full_isofs_cmd); 1838 } 1777 1839 } 1778 1840 mr_free(isofs_cmd); … … 2002 2064 } 2003 2065 retval += res; 2066 p = strrchr(bigfile_fname, '/'); 2067 if (p) { 2068 p++; 2069 } else { 2070 p = bigfile_fname; 2071 } 2004 2072 mr_asprintf(tmp, "Archiving %s ... ", bigfile_fname); 2005 2073 if (res) { … … 2239 2307 } 2240 2308 2309 mr_asprintf(command, "cp %s/biggielist.txt %s", bkpinfo->tmpdir, biggielist); 2310 paranoid_system(command); 2311 mr_free(command); 2312 2241 2313 mr_asprintf(blah, "biggielist = %s", biggielist); 2242 2314 log_msg(2, blah); … … 2351 2423 va_end(ap); 2352 2424 2353 if (bkpinfo->media_size [g_current_media_number]<= 0) {2425 if (bkpinfo->media_size <= 0) { 2354 2426 fatal_error("move_files_to_cd() - unknown media size"); 2355 2427 } 2356 if (would_occupy / 1024 > bkpinfo->media_size [g_current_media_number]) {2428 if (would_occupy / 1024 > bkpinfo->media_size) { 2357 2429 res = write_iso_and_go_on(FALSE); /* FALSE because this is not the last CD we'll write */ 2358 2430 retval += res; … … 2707 2779 char *checksum_line = NULL; 2708 2780 char *command = NULL; 2709 char *tempblock ;2781 char *tempblock = NULL; 2710 2782 char *curr_slice_fname_uncompressed = NULL; 2711 2783 char *curr_slice_fname_compressed = NULL; … … 2834 2906 } 2835 2907 i = bkpinfo->optimal_set_size / 256; 2908 if (!(tempblock = (char *) malloc(256 * 1024))) { 2909 fatal_error("malloc error 256*1024"); 2910 } 2836 2911 for (slice_num = 1; !finished; slice_num++) { 2837 2912 mr_asprintf(curr_slice_fname_uncompressed, "%s", slice_fname(biggie_file_number, slice_num, bkpinfo->tmpdir, "")); … … 2849 2924 } 2850 2925 if ((i == bkpinfo->optimal_set_size / 256) && (totalread < 1.1 * totallength)) { 2851 tempblock = mr_malloc(256 * 1024);2852 2926 for (i = 0L; i < bkpinfo->optimal_set_size / 256; i++) { 2853 2927 blksize = fread(tempblock, 1, 256 * 1024, fin); … … 3071 3145 assert(bkpinfo != NULL); 3072 3146 orig_vfy_flag_val = bkpinfo->verify_data; 3073 if (bkpinfo->media_size [g_current_media_number]<= 0) {3147 if (bkpinfo->media_size <= 0) { 3074 3148 fatal_error("write_iso_and_go_on() - unknown media size"); 3075 3149 } … … 3108 3182 mr_free(lastcd_fname); 3109 3183 3110 if (space_occupied_by_cd(bkpinfo->scratchdir) / 1024 > 3111 bkpinfo->media_size[g_current_media_number]) { 3112 log_to_screen("Warning! CD is too big. It occupies %ld KB, which is more than the %ld KB allowed.", (long) space_occupied_by_cd(bkpinfo->scratchdir), (long) bkpinfo->media_size[g_current_media_number]); 3184 if (space_occupied_by_cd(bkpinfo->scratchdir) / 1024 > bkpinfo->media_size) { 3185 log_to_screen("Warning! CD is too big. It occupies %ld KB, which is more than the %ld KB allowed.",(long) space_occupied_by_cd(bkpinfo->scratchdir),(long) bkpinfo->media_size); 3113 3186 } 3114 3187 if (((bkpinfo->isodir == NULL) && (bkpinfo->netfs_remote_dir == NULL)) || (bkpinfo->prefix == NULL)) { … … 3181 3254 3182 3255 g_current_media_number++; 3183 if (g_current_media_number > MAX_NOOF_MEDIA) {3184 fatal_error("Too many media. Use tape or net.");3185 }3186 3256 wipe_archives(bkpinfo->scratchdir); 3187 3257 mr_asprintf(tmp1, "rm -Rf %s/images/*gz %s/images/*data*img", bkpinfo->scratchdir, bkpinfo->scratchdir);
Note:
See TracChangeset
for help on using the changeset viewer.