Changeset 2682 in MondoRescue for branches/2.2.9/mondo/src/mondorestore/mondo-rstr-tools.c
- Timestamp:
- Sep 10, 2010, 12:13:40 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.9/mondo/src/mondorestore/mondo-rstr-tools.c
r2449 r2682 74 74 extern void kill_anything_like_this(char *str); 75 75 extern int skip_obdr(void); 76 extern int mount_media(); 76 77 extern int set_tape_block_size_with_mt(long internal_tape_block_size); 77 78 … … 579 580 **************************************************************************/ 580 581 581 582 /**583 * Mount the CD-ROM or USB device at /mnt/cdrom.584 * @param bkpinfo The backup information structure. Fields used:585 * - @c bkpinfo->backup_media_type586 * - @c bkpinfo->disaster_recovery587 * - @c bkpinfo->isodir588 * - @c bkpinfo->media_device589 * @return 0 for success, nonzero for failure.590 */591 int mount_media()592 {593 char *mount_cmd;594 int i, res;595 #ifdef __FreeBSD__596 char mdd[32];597 char *mddev = mdd;598 #endif599 600 malloc_string(mount_cmd);601 assert(bkpinfo != NULL);602 603 if (bkpinfo->backup_media_type == tape604 || bkpinfo->backup_media_type == udev) {605 log_msg(8, "Tape/udev. Therefore, no need to mount a media.");606 paranoid_free(mount_cmd);607 return 0;608 }609 610 if (!run_program_and_log_output("mount | grep -F " MNT_CDROM, FALSE)) {611 log_msg(2, "mount_media() - media already mounted. Fair enough.");612 paranoid_free(mount_cmd);613 return (0);614 }615 616 if (bkpinfo->backup_media_type == netfs) {617 log_msg(2, "Mounting for Network thingy");618 log_msg(2, "isodir = %s", bkpinfo->isodir);619 if ((!bkpinfo->isodir[0] || !strcmp(bkpinfo->isodir, "/"))620 && am_I_in_disaster_recovery_mode()) {621 strcpy(bkpinfo->isodir, "/tmp/isodir");622 log_msg(1, "isodir is being set to %s", bkpinfo->isodir);623 }624 #ifdef __FreeBSD__625 sprintf(mount_cmd, "/mnt/isodir/%s/%s/%s-%d.iso", bkpinfo->isodir,626 bkpinfo->netfs_remote_dir, bkpinfo->prefix, g_current_media_number);627 mddev = make_vn(mount_cmd);628 sprintf(mount_cmd, "mount_cd9660 -r %s " MNT_CDROM, mddev);629 #else630 sprintf(mount_cmd, "mount %s/%s/%s-%d.iso -t iso9660 -o loop,ro %s",631 bkpinfo->isodir, bkpinfo->netfs_remote_dir,632 bkpinfo->prefix, g_current_media_number, MNT_CDROM);633 #endif634 635 } else if (bkpinfo->backup_media_type == iso) {636 #ifdef __FreeBSD__637 sprintf(mount_cmd, "%s/%s-%d.iso", bkpinfo->isodir,638 bkpinfo->prefix, g_current_media_number);639 mddev = make_vn(mount_cmd);640 sprintf(mount_cmd, "mount_cd9660 -r %s %s", mddev, MNT_CDROM);641 #else642 sprintf(mount_cmd, "mount %s/%s-%d.iso -t iso9660 -o loop,ro %s",643 bkpinfo->isodir, bkpinfo->prefix, g_current_media_number, MNT_CDROM);644 #endif645 } else if (bkpinfo->backup_media_type == usb) {646 sprintf(mount_cmd, "mount -t vfat %s %s", bkpinfo->media_device, MNT_CDROM);647 } else if (strstr(bkpinfo->media_device, "/dev/")) {648 #ifdef __FreeBSD__649 sprintf(mount_cmd, "mount_cd9660 -r %s %s", bkpinfo->media_device,650 MNT_CDROM);651 #else652 sprintf(mount_cmd, "mount %s -t iso9660 -o ro %s",653 bkpinfo->media_device, MNT_CDROM);654 #endif655 } else {656 if (bkpinfo->disaster_recovery657 && does_file_exist("/tmp/CDROM-LIVES-HERE")) {658 strcpy(bkpinfo->media_device,659 last_line_of_file("/tmp/CDROM-LIVES-HERE"));660 } else {661 find_cdrom_device(bkpinfo->media_device, TRUE);662 }663 664 #ifdef __FreeBSD__665 sprintf(mount_cmd, "mount_cd9660 -r %s %s", bkpinfo->media_device,666 MNT_CDROM);667 #else668 sprintf(mount_cmd, "mount %s -t iso9660 -o ro %s",669 bkpinfo->media_device, MNT_CDROM);670 #endif671 }672 673 log_msg(2, "(mount_media) --- command = %s", mount_cmd);674 for (i = 0; i < 2; i++) {675 res = run_program_and_log_output(mount_cmd, FALSE);676 if (!res) {677 break;678 } else {679 log_msg(2, "Failed to mount device.");680 sleep(5);681 run_program_and_log_output("sync", FALSE);682 }683 }684 685 if (res) {686 log_msg(2, "Failed, despite %d attempts", i);687 } else {688 log_msg(2, "Mounted media drive OK");689 }690 paranoid_free(mount_cmd);691 return (res);692 }693 /**************************************************************************694 *END_MOUNT_CDROM *695 **************************************************************************/696 582 697 583
Note:
See TracChangeset
for help on using the changeset viewer.