Ignore:
Timestamp:
Apr 12, 2010, 3:23:24 PM (14 years ago)
Author:
Bruno Cornec
Message:

r3783@localhost: bruno | 2010-04-11 11:57:27 +0200

  • Use MINDI_CACHE for temp file communication between archive/restore
  • Remove some now useless globals in mondo
  • Remove function get_cfg_file_from_archive_or_bust and get_cfg_file_from_archive
  • Adds function get_cfg_file_from_initrd (Not finished)
  • Recovery doesn't work in that version atm (checkpoint version)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.10/mondo/src/mondorestore/mondorestore.c

    r2508 r2623  
    7979
    8080/**
    81  * The location of 'biggielist.txt', containing the biggiefiles on the current archive set.
    82  */
    83 char *g_biggielist_txt;
    84 
    85 /**
    8681 * The location of 'filelist.full', containing all files (<em>including biggiefiles</em>) on
    8782 * the current archive set.
     
    10095 */
    10196char *g_imagedevs_restthese;
    102 
    103 /**
    104  * The location of 'mondorestore.cfg', containing the metadata
    105  * information for this backup.
    106  */
    107 char *g_mondo_cfg_file;
    108 
    109 /**
    110  * The location of 'mountlist.txt', containing the information on the
    111  * user's partitions and hard drives.
    112  */
    113 char *g_mountlist_fname;
    11497
    11598/**
     
    161144    assert(mountlist != NULL);
    162145    assert(raidlist != NULL);
    163     if (!bkpinfo->disaster_recovery) {
    164         strcpy(g_mountlist_fname, MINDI_CACHE"/mountlist.txt");
    165         log_msg(2, "I guess you're testing edit_mountlist()");
    166     }
    167     if (!does_file_exist(g_mountlist_fname)) {
    168         log_to_screen(g_mountlist_fname);
    169         log_to_screen("does not exist");
     146    if (!does_file_exist(MINDI_CACHE"/mountlist.txt")) {
     147        log_to_screen(MINDI_CACHE"/mountlist.txt doesn't exist");
    170148        return (1);
    171149    }
    172150
    173     retval = load_mountlist(mountlist, g_mountlist_fname);
     151    retval = load_mountlist(mountlist, MINDI_CACHE"/mountlist.txt");
    174152    load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
    175153    if (retval) {
     
    177155            ("Warning - load_raidtab_into_raidlist returned an error");
    178156    }
    179     res = edit_mountlist(g_mountlist_fname, mountlist, raidlist);
     157    res = edit_mountlist(MINDI_CACHE"/mountlist.txt", mountlist, raidlist);
    180158    if (res) {
    181159        return (1);
    182160    }
    183161
    184     save_mountlist_to_disk(mountlist, g_mountlist_fname);
     162    save_mountlist_to_disk(mountlist, MINDI_CACHE"/mountlist.txt");
    185163    save_raidlist_to_raidtab(raidlist, RAIDTAB_FNAME);
    186164
     
    466444
    467445    log_it("About to load config file");
    468     get_cfg_file_from_archive_or_bust();
    469     read_cfg_file_into_bkpinfo(g_mondo_cfg_file);
     446    read_cfg_file_into_bkpinfo(MINDI_CACHE"/mondorestore.cfg");
    470447    log_it("Done loading config file; resizing ML");
    471448
     
    481458        log_it("About to edit mountlist");
    482459        if (g_text_mode) {
    483             save_mountlist_to_disk(mountlist, g_mountlist_fname);
    484             mr_asprintf(tmp1, "%s %s", find_my_editor(), g_mountlist_fname);
     460            save_mountlist_to_disk(mountlist, MINDI_CACHE"/mountlist.txt");
     461            mr_asprintf(tmp1, "%s %s", find_my_editor(), MINDI_CACHE"/mountlist.txt");
    485462            res = system(tmp1);
    486463            mr_free(tmp1);
    487             load_mountlist(mountlist, g_mountlist_fname);
     464            load_mountlist(mountlist, MINDI_CACHE"/mountlist.txt");
    488465        } else {
    489             res = edit_mountlist(g_mountlist_fname, mountlist, raidlist);
     466            res = edit_mountlist(MINDI_CACHE"/mountlist.txt", mountlist, raidlist);
    490467        }
    491468        log_it("Finished editing mountlist");
     
    494471        }
    495472        log_msg(2, "Proceeding...");
    496         save_mountlist_to_disk(mountlist, g_mountlist_fname);
     473        save_mountlist_to_disk(mountlist, MINDI_CACHE"/mountlist.txt");
    497474        save_raidlist_to_raidtab(raidlist, RAIDTAB_FNAME);
    498475        mvaddstr_and_log_it(1, 30, "Restoring Interactively");
     
    646623            mr_asprintf(fstab_fname, "/tmp/fstab");
    647624        }
    648         mr_asprintf(tmp1, "label-partitions-as-necessary %s < %s >> %s 2>> %s", g_mountlist_fname, fstab_fname, MONDO_LOGFILE, MONDO_LOGFILE);
     625        mr_asprintf(tmp1, "label-partitions-as-necessary %s < %s >> %s 2>> %s", MINDI_CACHE"/mountlist.txt", fstab_fname, MONDO_LOGFILE, MONDO_LOGFILE);
    649626        mr_free(fstab_fname);
    650627
     
    762739
    763740    log_msg(2, "nuke_mode --- starting");
    764 
    765     get_cfg_file_from_archive_or_bust();
    766     load_mountlist(mountlist, g_mountlist_fname);   // in case read_cfg_file_into_bkpinfo updated the mountlist
     741    load_mountlist(mountlist, MINDI_CACHE"/mountlist.txt"); // in case read_cfg_file_into_bkpinfo updated the mountlist
    767742
    768743    tmp = call_program_and_get_last_line_of_output("cat " CMDLINE);
     
    788763    }
    789764
    790     save_mountlist_to_disk(mountlist, g_mountlist_fname);
     765    save_mountlist_to_disk(mountlist, MINDI_CACHE"/mountlist.txt");
    791766    mvaddstr_and_log_it(1, 30, "Restoring Automatically");
    792767    if (bkpinfo->differential) {
     
    862837                        "Using tune2fs to identify your ext2,3 partitions");
    863838
    864     mr_asprintf(tmp, "label-partitions-as-necessary %s < /tmp/fstab", g_mountlist_fname);
     839    mr_asprintf(tmp, "label-partitions-as-necessary %s < /tmp/fstab", MINDI_CACHE"/mountlist.txt");
    865840    res = run_program_and_log_output(tmp, TRUE);
    866841    mr_free(tmp);
     
    927902    mr_free(bkpinfo->restore_path);
    928903    mr_asprintf(bkpinfo->restore_path, "/");
    929     if (!g_restoring_live_from_cd && !g_restoring_live_from_netfs) {
     904    if (bkpinfo->backup_media_type != netfs) {
    930905        popup_and_OK
    931906            ("Please insert tape/CD/USB Key, then hit 'OK' to continue.");
    932907        sleep(1);
    933     }
    934     if (!g_restoring_live_from_netfs) {
    935908        interactively_obtain_media_parameters_from_user(FALSE);
    936909    }
     
    945918
    946919    open_evalcall_form("Thinking...");
    947 
    948     get_cfg_file_from_archive_or_bust();
    949     read_cfg_file_into_bkpinfo(g_mondo_cfg_file);
    950     load_mountlist(mountlist, g_mountlist_fname);   // in case read_cfg_file_into_bkpinfo
     920    read_cfg_file_into_bkpinfo(MINDI_CACHE"/mondorestore.cfg");
     921    load_mountlist(mountlist, MINDI_CACHE"/mountlist.txt"); // in case read_cfg_file_into_bkpinfo
    951922
    952923    close_evalcall_form();
    953     retval = load_mountlist(mountlist, g_mountlist_fname);
     924    retval = load_mountlist(mountlist, MINDI_CACHE"/mountlist.txt");
    954925    load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
    955926
    956     if (!g_restoring_live_from_netfs && (filelist = process_filelist_and_biggielist())) {
     927    if ((bkpinfo->backup_media_type != netfs) && (filelist = process_filelist_and_biggielist())) {
    957928        save_filelist(filelist, "/tmp/selected-files.txt");
    958929        mr_asprintf(old_restpath, "%s", bkpinfo->restore_path);
     
    19451916    }
    19461917
    1947     tmp1 = read_cfg_var(g_mondo_cfg_file, "total-slices");
     1918    tmp1 = read_cfg_var(MINDI_CACHE"/mondorestore.cfg", "total-slices");
    19481919    total_slices = atol(tmp1);
    19491920    mr_free(tmp1);
     
    20802051    }
    20812052    insist_on_this_cd_number(g_current_media_number);
    2082     tmp1 = read_cfg_var(g_mondo_cfg_file, "last-filelist-number");
     2053    tmp1 = read_cfg_var(MINDI_CACHE"/mondorestore.cfg", "last-filelist-number");
    20832054    max_val = atol(tmp1) + 1;
    20842055    mr_free(tmp1);
     
    22192190    assert(bkpinfo != NULL);
    22202191
    2221     tmp1 = read_cfg_var(g_mondo_cfg_file, "total-slices");
     2192    tmp1 = read_cfg_var(MINDI_CACHE"/mondorestore.cfg", "total-slices");
    22222193    total_slices = atol(tmp1);
    22232194    mr_free(tmp1);
     
    23752346    assert(bkpinfo != NULL);
    23762347    mvaddstr_and_log_it(g_currentY, 0, "Restoring from archives");
    2377     tmp = read_cfg_var(g_mondo_cfg_file, "last-filelist-number");
     2348    tmp = read_cfg_var(MINDI_CACHE"/mondorestore.cfg", "last-filelist-number");
    23782349    max_val = atol(tmp) + 1;
    23792350    mr_free(tmp);
     
    26492620    g_kernel_version = get_kernel_version();
    26502621
    2651     log_msg(1, "FYI - g_mountlist_fname = %s", g_mountlist_fname);
    2652     if (strlen(g_mountlist_fname) < 3) {
    2653         fatal_error("Serious error in malloc()'ing. Could be a bug in your glibc.");
    2654     }
     2622    log_msg(1, "FYI - mountlist = %s", MINDI_CACHE"/mountlist.txt");
    26552623    mkdir(MNT_CDROM, 0x770);
    26562624    make_hole_for_dir(MONDO_CACHE);
    26572625
    26582626    /* Backup original mountlist.txt */
    2659     mr_asprintf(tmp, "%s.orig", g_mountlist_fname);
    2660     if (!does_file_exist(g_mountlist_fname)) {
    2661         log_msg(2, "%ld: Warning - g_mountlist_fname (%s) does not exist yet", __LINE__, g_mountlist_fname);
    2662     } else if (!does_file_exist(tmp)) {
    2663         mr_free(tmp);
    2664         mr_asprintf(tmp, "cp -f %s %s.orig", g_mountlist_fname, g_mountlist_fname);
    2665         run_program_and_log_output(tmp, FALSE);
    2666     }
     2627    mr_asprintf(tmp, "cp -f "MINDI_CACHE"/mountlist.txt "MINDI_CACHE"/mountlist.txt.orig");
     2628    run_program_and_log_output(tmp, FALSE);
    26672629    mr_free(tmp);
    26682630
     
    26942656#endif
    26952657        load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
    2696         if (!does_file_exist(g_mountlist_fname)) {
    2697             strcpy(g_mountlist_fname, MINDI_CACHE"/mountlist.txt");
    2698         }
    26992658        res = let_user_edit_the_mountlist(mountlist, raidlist);
    27002659#ifdef __FreeBSD__
     
    27952754        log_msg(0, "Partitioning only.");
    27962755        load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
    2797         strcpy(g_mountlist_fname, MINDI_CACHE"/mountlist.txt");
    2798         load_mountlist(mountlist, g_mountlist_fname);
     2756        load_mountlist(mountlist, MINDI_CACHE"/mountlist.txt");
    27992757        res = partition_everything(mountlist);
    28002758        finish(res);
     
    28042762        log_msg(0, "Formatting only.");
    28052763        load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
    2806         strcpy(g_mountlist_fname, MINDI_CACHE"/mountlist.txt");
    2807         load_mountlist(mountlist, g_mountlist_fname);
    28082764        res = format_everything(mountlist, FALSE, raidlist);
    28092765        finish(res);
     
    28132769        log_msg(0, "Stopping LVM and RAID");
    28142770        load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
    2815         strcpy(g_mountlist_fname, MINDI_CACHE"/mountlist.txt");
    2816         load_mountlist(mountlist, g_mountlist_fname);
     2771        load_mountlist(mountlist, MINDI_CACHE"/mountlist.txt");
    28172772        res = do_my_funky_lvm_stuff(TRUE, FALSE);
    28182773        res += stop_all_raid_devices(mountlist);
     
    28202775    }
    28212776
    2822     if ((argc > 1 && strcmp(argv[argc - 1], "--live-from-cd") == 0) && (!bkpinfo->disaster_recovery)) {
    2823         g_restoring_live_from_cd = TRUE;
    2824     }
    2825 
    28262777    // Handle params here first
    28272778    handle_incoming_parameters(argc,argv);
     
    28292780    if (!bkpinfo->disaster_recovery) {  // live!
    28302781        log_msg(1, "I am in normal, live mode.");
    2831         log_msg(2, "FYI, MOUNTLIST_FNAME = %s", g_mountlist_fname);
    28322782        mount_boot_if_necessary();  /* for Gentoo users */
    28332783        log_msg(2, "Still here.");
    2834         if (bkpinfo->backup_media_type == netfs) {
    2835             g_restoring_live_from_netfs = TRUE;
    2836         }
    28372784        /* Adding an initialisation in order to avoid to hndle NULL pointer later */
    28382785        mr_free(bkpinfo->restore_path);
     
    28532800        /* Disaster recovery mode (must be) */
    28542801        log_msg(1, "I must be in disaster recovery mode.");
    2855         log_msg(2, "FYI, MOUNTLIST_FNAME = %s ", g_mountlist_fname);
    28562802
    28572803        log_it("About to call load_mountlist and load_raidtab");
    28582804        mr_free(bkpinfo->restore_path);
    28592805        mr_asprintf(bkpinfo->restore_path, "%s", MNT_RESTORING);
    2860         read_cfg_file_into_bkpinfo(g_mondo_cfg_file);
    2861         retval = load_mountlist(mountlist, g_mountlist_fname);
     2806        read_cfg_file_into_bkpinfo(MINDI_CACHE"/mondorestore.cfg");
     2807        retval = load_mountlist(mountlist, MINDI_CACHE"/mountlist.txt");
    28622808        retval += load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
    28632809        log_it("Returned from calling load_mountlist and load_raidtab successfully");
     
    28652811        // BCO:To be reviewed
    28662812        if ((bkpinfo->restore_mode == compare) || (bkpinfo->restore_mode == nuke)) {
    2867             if (bkpinfo->backup_media_type == netfs && bkpinfo->netfs_mount && !is_this_device_mounted(bkpinfo->netfs_mount)) {
     2813            if ((bkpinfo->backup_media_type == netfs) && bkpinfo->netfs_mount && !is_this_device_mounted(bkpinfo->netfs_mount)) {
    28682814                log_msg(1, "Mounting remote %s dir", bkpinfo->netfs_proto);
    28692815                mr_free(bkpinfo->isodir);
     
    30112957
    30122958    unlink("/tmp/filelist.full");
    3013     unlink("/tmp/filelist.full.gz");
    30142959
    30152960    exit(retval);
Note: See TracChangeset for help on using the changeset viewer.