]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/autoprune.c
Minor tweaks to Migration
[bacula/bacula] / bacula / src / dird / autoprune.c
index 0b7c2a863a7d0976fb05163b3e37a3e27d320272..0fea7f8a7608e6dd4e2e4eb2558fb1f332844250 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *
  *   Bacula Director -- Automatic Pruning
- *     Applies retention periods
+ *      Applies retention periods
  *
  *     Kern Sibbald, May MMII
  *
  * Auto Prune Jobs and Files. This is called at the end of every
  *   Job.  We do not prune volumes here.
  */
-int do_autoprune(JCR *jcr)
+void do_autoprune(JCR *jcr)
 {
    UAContext *ua;
    CLIENT *client;
    bool pruned;
 
-   if (!jcr->client) {               /* temp -- remove me */
-      return 1;
+   if (!jcr->client) {                /* temp -- remove me */
+      return;
    }
 
    ua = new_ua_context(jcr);
@@ -71,7 +71,7 @@ int do_autoprune(JCR *jcr)
    }
 
    free_ua_context(ua);
-   return 1;
+   return;
 }
 
 /*
@@ -80,7 +80,7 @@ int do_autoprune(JCR *jcr)
  *   volume and no appendable volumes are available.
  *
  *  Return 0: on error
- *        number of Volumes Purged
+ *         number of Volumes Purged
  */
 int prune_volumes(JCR *jcr)
 {
@@ -101,7 +101,7 @@ int prune_volumes(JCR *jcr)
    db_lock(jcr->db);
 
    /* Get the List of all media ids in the current Pool */
-   if (!db_get_media_ids(jcr, jcr->db, jcr->PoolId, &num_ids, &ids)) {
+   if (!db_get_media_ids(jcr, jcr->db, jcr->jr.PoolId, &num_ids, &ids)) {
       Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
       goto bail_out;
    }
@@ -110,20 +110,23 @@ int prune_volumes(JCR *jcr)
    for (i=0; i<num_ids; i++) {
       mr.MediaId = ids[i];
       if (!db_get_media_record(jcr, jcr->db, &mr)) {
-        Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
-        continue;
+         Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
+         continue;
       }
       /* Prune only Volumes from current Pool */
-      if (jcr->PoolId != mr.PoolId) {
-        continue;
+      if (jcr->jr.PoolId != mr.PoolId) {
+         continue;
       }
-      /* Prune only Volumes with status "Full", "Used", or "Append" */
+      /* Don't prune archived volumes */
+      if (mr.Enabled == 2) {
+         continue;
+      }
+      /* Prune only Volumes with status "Full", or "Used" */
       if (strcmp(mr.VolStatus, "Full")   == 0 ||
-         strcmp(mr.VolStatus, "Append") == 0 ||
-         strcmp(mr.VolStatus, "Used")   == 0) {
-        Dmsg1(200, "Prune Volume %s\n", mr.VolumeName);
-        stat += prune_volume(ua, &mr);
-        Dmsg1(200, "Num pruned = %d\n", stat);
+          strcmp(mr.VolStatus, "Used")   == 0) {
+         Dmsg1(200, "Prune Volume %s\n", mr.VolumeName);
+         stat += prune_volume(ua, &mr);
+         Dmsg1(200, "Num pruned = %d\n", stat);
       }
    }