From: Michal Rakowski Date: Tue, 23 Mar 2021 10:08:37 +0000 (+0100) Subject: Add some more handling for STREAM_PLUGIN_META_* X-Git-Tag: Release-11.3.2~663 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b0f17db3b304c5970edb8b01a4b352700d982cf;p=thirdparty%2Fbacula.git Add some more handling for STREAM_PLUGIN_META_* --- diff --git a/bacula/src/filed/restore.c b/bacula/src/filed/restore.c index 1df14b66a..44f4b2fe4 100644 --- a/bacula/src/filed/restore.c +++ b/bacula/src/filed/restore.c @@ -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); diff --git a/bacula/src/filed/verify_vol.c b/bacula/src/filed/verify_vol.c index 91c2471a5..31a6f577c 100644 --- a/bacula/src/filed/verify_vol.c +++ b/bacula/src/filed/verify_vol.c @@ -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; } diff --git a/bacula/src/findlib/bfile.c b/bacula/src/findlib/bfile.c index ac575ca7c..23445c7ac 100644 --- a/bacula/src/findlib/bfile.c +++ b/bacula/src/findlib/bfile.c @@ -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: diff --git a/bacula/src/stored/bextract.c b/bacula/src/stored/bextract.c index a1a2029b1..1be559912 100644 --- a/bacula/src/stored/bextract.c +++ b/bacula/src/stored/bextract.c @@ -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; diff --git a/bacula/src/stored/record_util.c b/bacula/src/stored/record_util.c index 316889da2..aec46c421 100644 --- a/bacula/src/stored/record_util.c +++ b/bacula/src/stored/record_util.c @@ -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: