]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/newvol.c
Make Recycle work -- kes25May02
[bacula/bacula] / bacula / src / dird / newvol.c
index 92c2b1f691bbaa1cf313ab8633dce77632e1e28d..6b3cec4216ac4942d7b7b3f84c511c17eb29422f 100644 (file)
  * Really crude automatic Volume name creation using
  *  LabelFormat
  */
-int newVolume(JCR *jcr)
+int newVolume(JCR *jcr, MEDIA_DBR *mr)
 {
-   MEDIA_DBR mr; 
    POOL_DBR pr;
    char name[MAXSTRING];
 
-   memset(&mr, 0, sizeof(mr));
    memset(&pr, 0, sizeof(pr));
 
    /* See if we can create a new Volume */
@@ -53,18 +51,17 @@ int newVolume(JCR *jcr)
    if (db_get_pool_record(jcr->db, &pr) && pr.LabelFormat[0] &&
        pr.LabelFormat[0] != '*') {
       if (pr.MaxVols == 0 || pr.NumVols < pr.MaxVols) {
-        memset(&mr, 0, sizeof(mr));
-        mr.PoolId = jcr->PoolId;
-        strcpy(mr.MediaType, jcr->store->media_type);
+        mr->PoolId = jcr->PoolId;
+        strcpy(mr->MediaType, jcr->store->media_type);
         strcpy(name, pr.LabelFormat);   
          strcat(name, "%04d");
-        sprintf(mr.VolumeName, name, ++pr.NumVols);
-         strcpy(mr.VolStatus, "Append");
-        mr.Recycle = pr.Recycle;
-        mr.VolRetention = pr.VolRetention;
-        if (db_create_media_record(jcr->db, &mr) &&
+        sprintf(mr->VolumeName, name, ++pr.NumVols);
+         strcpy(mr->VolStatus, "Append");
+        mr->Recycle = pr.Recycle;
+        mr->VolRetention = pr.VolRetention;
+        if (db_create_media_record(jcr->db, mr) &&
            db_update_pool_record(jcr->db, &pr) == 1) {
-            Dmsg1(90, "Created new Volume=%s\n", mr.VolumeName);
+            Dmsg1(90, "Created new Volume=%s\n", mr->VolumeName);
            return 1;
         } else {
             Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));