/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
dev->dlock();
Dmsg1(dbglvl, "Enter blocked=%s\n", dev->print_blocked());
- unmounted = is_device_unmounted(dev);
+ /*
+ * Since we want to mount a tape, make sure current one is
+ * not marked as using this drive.
+ */
+ volume_unused(dcr);
+
+ unmounted = dev->is_device_unmounted();
dev->poll = false;
/*
* Wait requested time (dev->rem_wait_sec). However, we also wake up every
Dmsg4(dbglvl, "I'm going to sleep on device %s. HB=%d rem_wait=%d add_wait=%d\n",
dev->print_name(), (int)me->heartbeat_interval, dev->rem_wait_sec, add_wait);
start = time(NULL);
+
/* Wait required time */
stat = pthread_cond_timedwait(&dev->wait_next_vol, &dev->m_mutex, &timeout);
+
Dmsg2(dbglvl, "Wokeup from sleep on device stat=%d blocked=%s\n", stat,
dev->print_blocked());
-
now = time(NULL);
total_waited = now - first_start;
dev->rem_wait_sec -= (now - start);
break;
}
-
if (dev->rem_wait_sec <= 0) { /* on exceeding wait time return */
Dmsg0(dbglvl, "Exceed wait time.\n");
stat = W_TIMEOUT;
/*
* Check if user unmounted the device while we were waiting
*/
- unmounted = is_device_unmounted(dev);
+ unmounted = dev->is_device_unmounted();
if (!unmounted && dev->vol_poll_interval &&
(total_waited >= dev->vol_poll_interval)) {