]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Fix bvfs_restore command with objectid and incremental jobs
authorEric Bollengier <eric@baculasystems.com>
Mon, 16 Nov 2020 12:27:08 +0000 (13:27 +0100)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:02:59 +0000 (09:02 +0100)
bacula/src/dird/ua_dotcmds.c

index c535fcdc848fb06513f1b2ec8ea6b7e33782a93e..ae590af76faeeb5835524fad41c359b74e4e463d 100644 (file)
@@ -754,8 +754,10 @@ static bool compute_ids_from_object(UAContext *ua, DBId_t objectid,
                                     db_list_ctx *jobid, db_list_ctx *fileid, db_list_ctx *dirid)
 {
    bool ret = false;
-   POOL_MEM query, filename, obj_path, tmp;
+   POOL_MEM query, filename, obj_path;
    OBJECT_DBR obj_r;
+   JOB_DBR jr;
+   db_list_ctx tempids;
    obj_r.ObjectId = objectid;
 
    if (!db_get_plugin_object_record(ua->jcr, ua->db, &obj_r)) {
@@ -766,8 +768,13 @@ static bool compute_ids_from_object(UAContext *ua, DBId_t objectid,
       goto bail_out;
    }
 
-   Mmsg(tmp, "%lu", obj_r.JobId);
-   jobid->add(tmp.c_str());
+   /* Compute the list of the jobs that are involved with this object */
+   memset(&jr, 0, sizeof(jr));
+   jr.JobId = obj_r.JobId;
+   if (!db_get_accurate_jobids(ua->jcr, ua->db, &jr, &tempids)) {
+      goto bail_out;
+   }
+   jobid->add(tempids);
 
    if (obj_r.Filename[0] != 0) {
       filename.check_size(strlen(obj_r.Filename)*2+1);