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);