Changeset 2696 in MondoRescue for branches/2.2.10/mondo/src/mondorestore/mondo-rstr-tools.c
- Timestamp:
- Jan 25, 2011, 10:34:40 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.10/mondo/src/mondorestore/mondo-rstr-tools.c
r2644 r2696 43 43 extern void kill_anything_like_this(char *str); 44 44 extern int skip_obdr(void); 45 extern int mount_media(); 45 46 extern int set_tape_block_size_with_mt(long internal_tape_block_size); 46 47 … … 460 461 /************************************************************************** 461 462 *END_MOUNT_ALL_DEVICES * 462 **************************************************************************/463 464 465 /**466 * Mount the CD-ROM or USB device at /mnt/cdrom.467 * @param bkpinfo The backup information structure. Fields used:468 * - @c bkpinfo->backup_media_type469 * - @c bkpinfo->disaster_recovery470 * - @c bkpinfo->isodir471 * - @c bkpinfo->media_device472 * @return 0 for success, nonzero for failure.473 */474 int mount_media() {475 476 char *mount_cmd = NULL;477 int i, res;478 #ifdef __FreeBSD__479 char mdd[32];480 char *mddev = mdd;481 #endif482 483 if (bkpinfo->backup_media_type == tape || bkpinfo->backup_media_type == udev) {484 log_msg(8, "Tape/udev. Therefore, no need to mount a media.");485 return 0;486 }487 488 if (!run_program_and_log_output("mount | grep -F "MNT_CDROM, FALSE)) {489 log_msg(2, "mount_media() - media already mounted. Fair enough.");490 return (0);491 }492 493 if (bkpinfo->media_device == NULL) {494 fatal_error("No media device at that point");495 }496 497 if (bkpinfo->backup_media_type == netfs) {498 log_msg(2, "Mounting for Network thingy");499 log_msg(2, "isodir = %s", bkpinfo->isodir);500 if (!strcmp(bkpinfo->isodir, "/") && am_I_in_disaster_recovery_mode()) {501 mr_free(bkpinfo->isodir);502 mr_asprintf(bkpinfo->isodir, "/tmp/isodir");503 log_msg(1, "isodir is being set to %s", bkpinfo->isodir);504 }505 if ((bkpinfo->isodir == NULL) || (bkpinfo->netfs_remote_dir == NULL) || (bkpinfo->prefix == NULL)) {506 fatal_error("Unable to prepare the iso filename");507 }508 #ifdef __FreeBSD__509 mr_asprintf(mount_cmd, "/mnt/isodir/%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->netfs_remote_dir, bkpinfo->prefix, g_current_media_number);510 mddev = make_vn(mount_cmd);511 mr_free(mount_cmd);512 513 mr_asprintf(mount_cmd, "mount_cd9660 -r %s "MNT_CDROM, mddev);514 #else515 mr_asprintf(mount_cmd, "mount %s/%s/%s-%d.iso -t iso9660 -o loop,ro %s", bkpinfo->isodir, bkpinfo->netfs_remote_dir, bkpinfo->prefix, g_current_media_number, MNT_CDROM);516 #endif517 518 } else if (bkpinfo->backup_media_type == iso) {519 #ifdef __FreeBSD__520 mr_asprintf(mount_cmd, "%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->prefix, g_current_media_number);521 mddev = make_vn(mount_cmd);522 mr_free(mount_cmd);523 524 mr_asprintf(mount_cmd, "mount_cd9660 -r %s %s", mddev, MNT_CDROM);525 #else526 mr_asprintf(mount_cmd, "mount %s/%s-%d.iso -t iso9660 -o loop,ro %s", bkpinfo->isodir, bkpinfo->prefix, g_current_media_number, MNT_CDROM);527 #endif528 } else if (bkpinfo->backup_media_type == usb) {529 mr_asprintf(mount_cmd, "mount -t vfat %s %s", bkpinfo->media_device, MNT_CDROM);530 } else if (strstr(bkpinfo->media_device, "/dev/")) {531 #ifdef __FreeBSD__532 mr_asprintf(mount_cmd, "mount_cd9660 -r %s %s", bkpinfo->media_device, MNT_CDROM);533 #else534 mr_asprintf(mount_cmd, "mount %s -t iso9660 -o ro %s", bkpinfo->media_device, MNT_CDROM);535 #endif536 } else {537 mr_free(bkpinfo->media_device);538 if (bkpinfo->disaster_recovery && does_file_exist(MINDI_CACHE"/CDROM-LIVES-HERE")) {539 bkpinfo->media_device = last_line_of_file(MINDI_CACHE"/CDROM-LIVES-HERE");540 } else {541 bkpinfo->media_device = find_cdrom_device(TRUE);542 }543 544 #ifdef __FreeBSD__545 mr_asprintf(mount_cmd, "mount_cd9660 -r %s %s", bkpinfo->media_device, MNT_CDROM);546 #else547 mr_asprintf(mount_cmd, "mount %s -t iso9660 -o ro %s", bkpinfo->media_device, MNT_CDROM);548 #endif549 }550 551 log_msg(2, "(mount_media) --- command = %s", mount_cmd);552 for (i = 0; i < 2; i++) {553 res = run_program_and_log_output(mount_cmd, FALSE);554 if (!res) {555 break;556 } else {557 log_msg(2, "Failed to mount device.");558 sleep(5);559 sync();560 }561 }562 mr_free(mount_cmd);563 564 if (res) {565 log_msg(2, "Failed, despite %d attempts", i);566 } else {567 log_msg(2, "Mounted media drive OK");568 }569 return (res);570 }571 /**************************************************************************572 *END_MOUNT_CDROM *573 463 **************************************************************************/ 574 464
Note:
See TracChangeset
for help on using the changeset viewer.