]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Add some more handling for STREAM_PLUGIN_META_*
authorMichal Rakowski <michal.rakowski@baculasystems.com>
Tue, 23 Mar 2021 10:08:37 +0000 (11:08 +0100)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:03:00 +0000 (09:03 +0100)
bacula/src/filed/restore.c
bacula/src/filed/verify_vol.c
bacula/src/findlib/bfile.c
bacula/src/stored/bextract.c
bacula/src/stored/record_util.c

index 1df14b66a1bf01299c4655e6281ca7960f86c8f1..44f4b2fe4c37814e8bb9620294118f5d599580d4 100644 (file)
@@ -1032,7 +1032,7 @@ void do_restore(JCR *jcr)
       case STREAM_PLUGIN_META_CATALOG:
          {
             if (!jcr->plugin) {
-               Jmsg(jcr, M_ERROR, 0, _("No plugin related to metadata packet found, metadata restore failed!\n"));
+               Dmsg0(10, "No plugin related to metadata packet found, metadata restore failed!\n");
                goto get_out;
             }
 
@@ -1044,6 +1044,11 @@ void do_restore(JCR *jcr)
             Dmsg1(400, "[metadata plugin packet] index: %d\n", mp.index);
             Dmsg2(400, "[metadata plugin packet] buf: %.*s\n", mp.buf_len, mp.buf);
 
+            if (!plug_func(jcr->plugin)->metadataRestore) {
+               Dmsg0(10, "Found plugin metadata, but plugin's metadataRestore callback is empty!\n");
+               break;
+            }
+
             int rc = plug_func(jcr->plugin)->metadataRestore(jcr->plugin_ctx, &mp);
             if (rc != bRC_OK) {
                Jmsg(jcr, M_ERROR, 0, _("Plugin metadataRestore call failed, err: %d\n"), rc);
index 91c2471a576458eedff7aa240116296478ad0e55..31a6f577c0bb23054a8603a7f59498af15f34414 100644 (file)
@@ -409,6 +409,11 @@ void do_verify_volume(JCR *jcr)
          jcr->unlock();
          break;
 
+      case STREAM_PLUGIN_META_BLOB:
+      case STREAM_PLUGIN_META_CATALOG:
+         //TODO Add some metadata verification when it is possible
+         break;
+
       default:
          break;
       }
index ac575ca7ce16d7a2ef9ac60cffd4452c16bf9701..23445c7ace2edb9463908822e7621e5e2e823e4f 100644 (file)
@@ -150,6 +150,12 @@ const char *stream_to_ascii(int stream)
          return _("Plugin Data");
       case STREAM_RESTORE_OBJECT:
          return _("Restore Object");
+      case STREAM_PLUGIN_OBJECT:
+         return _("Plugin Object");
+      case STREAM_PLUGIN_META_BLOB:
+         return _("Plugin metadata (binary)");
+      case STREAM_PLUGIN_META_CATALOG:
+         return _("Plugin metadata (catalog)");
       case STREAM_XACL_AIX_TEXT:
          return _("AIX ACL attribs");
       case STREAM_XACL_DARWIN_ACCESS:
index a1a2029b1cd8c96a0001c80456d4a7fabf722f6c..1be559912d8b64e1cfc8c316fefefc8a70a3632d 100644 (file)
@@ -473,6 +473,8 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
 
    case STREAM_RESTORE_OBJECT:
    case STREAM_PLUGIN_OBJECT:
+   case STREAM_PLUGIN_META_BLOB:
+   case STREAM_PLUGIN_META_CATALOG:
       /* nothing to do */
       break;
 
index 316889da2b3f5ec61c9d8628fea0590b84f506d2..aec46c4214bd7ab945230772da32263307f63aa9 100644 (file)
@@ -113,6 +113,10 @@ const char *stream_to_ascii(char *buf, int stream, int fi)
          return "contRESTORE-OBJECT";
       case STREAM_PLUGIN_OBJECT:
          return "contPLUGIN-OBJECT";
+      case STREAM_PLUGIN_META_BLOB:
+         return "convPLUGIN-METADATA-BINARY";
+      case STREAM_PLUGIN_META_CATALOG:
+         return "convPLUGIN-METADATA-CATALOG";
       case STREAM_SPARSE_DATA:
          return "contSPARSE-DATA";
       case STREAM_SPARSE_GZIP_DATA:
@@ -187,6 +191,10 @@ const char *stream_to_ascii(char *buf, int stream, int fi)
       return "RESTORE-OBJECT";
    case STREAM_PLUGIN_OBJECT:
       return "PLUGIN-OBJECT";
+   case STREAM_PLUGIN_META_BLOB:
+      return "PLUGIN-METADATA-BINARY";
+   case STREAM_PLUGIN_META_CATALOG:
+      return "PLUGIN-METADATA-CATALOG";
    case STREAM_SPARSE_DATA:
       return "SPARSE-DATA";
    case STREAM_SPARSE_GZIP_DATA: