For 1.30 release:
- Fix Bare Metal restore problem.
- Implement create "FileSet"?
+- Possibly implement a Slot priority (loaded/not loaded).
- Test multiple simultaneous Volumes
- Document new transparent Console commands and wait command.
the binary gets deleted when the daemon is stopped in the
rc.d/inid.d directory.
- Do not ignore SIGCHLD
-
Dmsg1(29, "open_dev: tape %d opened\n", dev->fd);
} else {
/*
- * Handle opening of file
+ * Handle opening of File Archive (not a tape)
*/
archive_name = get_pool_memory(PM_FNAME);
pm_strcpy(&archive_name, dev->dev_name);
}
Dmsg2(100, "After find_next_append. Vol=%s Slot=%d\n",
jcr->VolCatInfo.VolCatName, jcr->VolCatInfo.Slot);
- release = 1; /* release if we "recurse" */
/*
* Get next volume and ready it for append
for ( ;; ) {
int vol_label_status;
autochanger = autoload_device(jcr, dev, 1, NULL);
- if (autochanger) {
- ask = 0; /* if autochange no need to ask sysop */
+
+ /*
+ * If we autochanged to correct Volume or (we have not just
+ * released the Volume AND we can automount) we go ahead
+ * and read the label. If there is no tape in the drive,
+ * we will err, recurse and ask the operator the next time.
+ */
+ if (autochanger || (!release && dev_cap(dev, CAP_AUTOMOUNT))) {
+ ask = 0; /* don't ask SYSOP this time */
}
+ release = 1; /* release next time if we "recurse" */
+
if (ask && !dir_ask_sysop_to_mount_next_volume(jcr, dev)) {
Dmsg0(100, "Error return ask_sysop ...\n");
return 0; /* error return */
Dmsg1(100, "want vol=%s\n", jcr->VolumeName);
/* Open device */
- for ( ; !(dev->state & ST_OPENED); ) {
+ if (!(dev->state & ST_OPENED)) {
int mode;
if (dev_cap(dev, CAP_STREAM)) {
mode = OPEN_WRITE_ONLY;
Dmsg1(10, "SD init done %s\n", device->device_name);
if (!device->dev) {
Emsg1(M_ERROR, 0, _("Could not initialize %s\n"), device->device_name);
+ continue;
}
if (device->cap_bits & CAP_ALWAYSOPEN) {
Dmsg1(20, "calling open_device %s\n", device->device_name);