]> git.sur5r.net Git - bacula/bacula/commitdiff
Other modifications outside DVD functions. (@kern please double-check this)
authorNicolas Boichat <nicolas@boichat.ch>
Wed, 27 Jul 2005 22:45:20 +0000 (22:45 +0000)
committerNicolas Boichat <nicolas@boichat.ch>
Wed, 27 Jul 2005 22:45:20 +0000 (22:45 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@2262 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/stored/dev.h
bacula/src/stored/device.c
bacula/src/stored/label.c
bacula/src/stored/mount.c
bacula/src/stored/protos.h

index 3e7c58474cf072762b9996bfb3e0452631d18f46..57c4bb5b77b442767c4802864925ee0a910719cf 100644 (file)
@@ -230,6 +230,8 @@ public:
                                        * - free_space_errno == 0: ignore free_space.
                                        * - free_space_errno < 0: an error occured. 
                                        * - free_space_errno > 0: free_space is valid. */
+   bool truncating;                   /* if set, we are currently truncating the DVD */
+   
    
    utime_t  vol_poll_interval;        /* interval between polling Vol mount */
    DEVRES *device;                    /* pointer to Device Resource */
index 65b956878c0758e49a9dc628ef6842fa61afcf94..282c486354c51b7e2763dcd38dbdd9bf88f6c6ea 100644 (file)
@@ -296,7 +296,7 @@ bool open_device(DCR *dcr)
    }
    if (dev->open(dcr, mode) < 0) {
       /* If polling, ignore the error */
-      if (!dev->poll) {
+      if ((!dev->poll) && (!dev->is_dvd())) {
          Jmsg2(dcr->jcr, M_FATAL, 0, _("Unable to open device %s: ERR=%s\n"),
             dev->print_name(), strerror_dev(dev));
          Pmsg2(000, "Unable to open archive %s: ERR=%s\n", 
index c6bd1391d8638c74a2bdcfe9e8914240790b2621..e83532e4b1274b4320c97a6e65eab4e37428be77 100644 (file)
@@ -377,7 +377,7 @@ bool rewrite_volume_label(DCR *dcr, bool recycle)
                dev->print_name(), strerror_dev(dev));
       }
       if (recycle) {
-         if (!truncate_dev(dev)) {
+         if (!truncate_dev(dcr)) {
             Jmsg2(jcr, M_WARNING, 0, _("Truncate error on device %s: ERR=%s\n"),
                   dev->print_name(), strerror_dev(dev));
          }
index 97e82cfc0debaa878addb71d13317a0cadb74159..bf71087cf5bc51ed5af1ac12d4c7c5220b8d1172 100644 (file)
@@ -48,7 +48,7 @@ bool mount_next_write_volume(DCR *dcr, bool release)
    JCR *jcr = dcr->jcr;
    DEV_BLOCK *block = dcr->block;
 
-   Dmsg0(100, "Enter mount_next_volume()\n");
+   Dmsg1(100, "Enter mount_next_volume(release=%d)\n", release);
 
    init_device_wait_timers(dcr);
 
@@ -123,10 +123,12 @@ mount_next_vol:
     *   we will err, recurse and ask the operator the next time.
     */
    if (!release && dev->is_tape() && dev_cap(dev, CAP_AUTOMOUNT)) {
+      Dmsg0(100, "(1)Ask=0");
       ask = false;                 /* don't ask SYSOP this time */
    }
    /* Don't ask if not removable */
    if (!dev_cap(dev, CAP_REM)) {
+      Dmsg0(100, "(2)Ask=0");
       ask = false;
    }
    Dmsg2(100, "Ask=%d autochanger=%d\n", ask, autochanger);
@@ -147,7 +149,7 @@ mount_next_vol:
 
    /* Ensure the device is open */
    if (!open_device(dcr)) {
-      if (dev->poll) {
+      if ((dev->poll) || (dev->is_dvd())) {
          goto mount_next_vol;
       } else {
          return false;
index 54e526b0362c1e332b17027cf06917a7395670d6..d35e52a958cfe98e0fb422d88a5a0623bc71b56d 100644 (file)
@@ -83,7 +83,7 @@ off_t    lseek_dev(DEVICE *dev, off_t offset, int whence);
 int      open_first_part(DCR *dcr, int mode);
 int      open_next_part(DCR *dcr);
 bool     can_open_mounted_dev(DEVICE *dev);
-bool     truncate_dev(DEVICE *dev);
+bool     truncate_dev(DCR *dcr);
 void     term_dev(DEVICE *dev);
 char *   strerror_dev(DEVICE *dev);
 void     clrerror_dev(DEVICE *dev, int func);
@@ -120,6 +120,8 @@ bool unmount_dev(DEVICE* dev, int timeout);
 void update_free_space_dev(DEVICE *dev);
 void make_mounted_dvd_filename(DEVICE *dev, POOL_MEM &archive_name);
 void make_spooled_dvd_filename(DEVICE *dev, POOL_MEM &archive_name);
+bool truncate_dvd_dev(DCR *dcr);
+bool check_can_write_on_non_blank_dvd(DCR *dcr);
 
 /* From device.c */
 bool     open_device(DCR *dcr);