]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/autoprune.c
Correct pool source setting
[bacula/bacula] / bacula / src / dird / autoprune.c
index 0b7c2a863a7d0976fb05163b3e37a3e27d320272..0995b74ab67cd0a61d3d45d1065846b98bea6c62 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *
  *   Bacula Director -- Automatic Pruning
- *     Applies retention periods
+ *      Applies retention periods
  *
  *     Kern Sibbald, May MMII
  *
@@ -45,7 +45,7 @@ int do_autoprune(JCR *jcr)
    CLIENT *client;
    bool pruned;
 
-   if (!jcr->client) {               /* temp -- remove me */
+   if (!jcr->client) {                /* temp -- remove me */
       return 1;
    }
 
@@ -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);
       }
    }