From: Radosław Korzeniewski Date: Mon, 28 Feb 2022 17:47:21 +0000 (+0100) Subject: Update docker plugin X-Git-Tag: Release-11.3.2~291 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=72a0939426b54d8dd7d261733f83866128fff5d3;p=thirdparty%2Fbacula.git Update docker plugin --- diff --git a/bacula/src/plugins/fd/docker/dkid.c b/bacula/src/plugins/fd/docker/dkid.c index 339003a02..a56b93aa7 100644 --- a/bacula/src/plugins/fd/docker/dkid.c +++ b/bacula/src/plugins/fd/docker/dkid.c @@ -18,7 +18,7 @@ */ /** * @file dkid.c - * @author Radosław Korzeniewski (radoslaw@korzeniewski.net) + * @author Radoslaw Korzeniewski (radoslaw@korzeniewski.net) * @brief This is a Bacula plugin for backup/restore Docker using native tools. * @version 1.2.1 * @date 2020-01-05 @@ -27,6 +27,8 @@ */ #include "dkid.h" +#include +#include /* * DKID class constructor, does default initialization. @@ -34,8 +36,8 @@ DKID::DKID() : ShortD(DKIDInvalid), #if __cplusplus > 201103L - Digest{0}, - DigestShort{0}, + Digest {0}, + DigestShort {0}, #endif shortonly(false) { @@ -181,13 +183,3 @@ bool DKID::operator !=(DKID &other) } return false; } - -#ifdef DEBUG -void DKID::dump() -{ - printf ("%p::ShortD: %ld\n", this, ShortD); - printf ("%p::Digest: %s\n", this, Digest); - printf ("%p::shortonly: %s\n", this, shortonly?"true":"false"); - printf ("%p::DigestShort: %s\n", this, DigestShort); -}; -#endif diff --git a/bacula/src/plugins/fd/docker/dkid.h b/bacula/src/plugins/fd/docker/dkid.h index 61680fdf2..9512337d9 100644 --- a/bacula/src/plugins/fd/docker/dkid.h +++ b/bacula/src/plugins/fd/docker/dkid.h @@ -18,7 +18,7 @@ */ /** * @file dkid.h - * @author Radosław Korzeniewski (radoslaw@korzeniewski.net) + * @author Radoslaw Korzeniewski (radoslaw@korzeniewski.net) * @brief This is a Bacula plugin for backup/restore Docker using native tools. * @version 1.2.1 * @date 2020-01-05 @@ -52,19 +52,16 @@ public: ~DKID() {}; #endif - inline int64_t id() { return ShortD; }; - inline char *digest() { return Digest; }; - inline char *digest_short() { return DigestShort; }; - inline operator int64_t () { return ShortD; }; - inline operator char* () { return Digest; }; + inline int64_t id() { return ShortD; } + inline char *digest() { return Digest; } + inline char *digest_short() { return DigestShort; } + inline operator int64_t () { return ShortD; } + inline operator char* () { return Digest; } DKID& operator= (char *data); DKID& operator= (DKID &other); DKID& operator= (POOL_MEM &data); bool operator== (DKID &other); bool operator!= (DKID &other); -#ifdef DEBUG - void dump(); -#endif private: int64_t ShortD; // default short digest on Docker is 48bits/6bytes/12hex chars diff --git a/bacula/src/plugins/fd/docker/dkid_test.c b/bacula/src/plugins/fd/docker/dkid_test.c index 4a862109b..b7cd51a8c 100644 --- a/bacula/src/plugins/fd/docker/dkid_test.c +++ b/bacula/src/plugins/fd/docker/dkid_test.c @@ -21,10 +21,11 @@ */ /** * @file dkid_test.c - * @author Radosław Korzeniewski (radoslaw@korzeniewski.net) + * @author Radoslaw Korzeniewski (radoslaw@korzeniewski.net) * @brief This is a Bacula plugin for backup/restore Docker using native tools - unittest. * @version 1.2.1 * @date 2020-01-05 + * This is a Bacula plugin for backup/restore Docker using native tools. * * @copyright Copyright (c) 2021 All rights reserved. IP transferred to Bacula Systems according to agreement. */ diff --git a/bacula/src/plugins/fd/docker/dkinfo.c b/bacula/src/plugins/fd/docker/dkinfo.c index 24a81bba2..1a7091003 100644 --- a/bacula/src/plugins/fd/docker/dkinfo.c +++ b/bacula/src/plugins/fd/docker/dkinfo.c @@ -16,15 +16,14 @@ Bacula(R) is a registered trademark of Kern Sibbald. */ + /** * @file dkinfo.c - * @author Radosław Korzeniewski (radoslaw@korzeniewski.net) + * @author Radoslaw Korzeniewski (radoslaw@korzeniewski.net) * @brief This is a Bacula plugin for backup/restore Docker using native tools. * @version 1.2.1 * @date 2020-01-05 - * * @copyright Copyright (c) 2021 All rights reserved. IP transferred to Bacula Systems according to agreement. - * TODO: add unittests */ #include "dkinfo.h" diff --git a/bacula/src/plugins/fd/docker/dkinfo.h b/bacula/src/plugins/fd/docker/dkinfo.h index faf1a9edf..ff6568dab 100644 --- a/bacula/src/plugins/fd/docker/dkinfo.h +++ b/bacula/src/plugins/fd/docker/dkinfo.h @@ -18,14 +18,13 @@ */ /** * @file dkinfo.h - * @author Radosław Korzeniewski (radoslaw@korzeniewski.net) + * @author Radoslaw Korzeniewski (radoslaw@korzeniewski.net) * @brief This is a Bacula plugin for backup/restore Docker using native tools. * @version 1.2.1 * @date 2020-01-05 * * @copyright Copyright (c) 2021 All rights reserved. IP transferred to Bacula Systems according to agreement. */ - #ifndef _DKINFO_H_ #define _DKINFO_H_ @@ -95,101 +94,107 @@ public: /* * The class which handles DKINFO operations */ -class DKINFO : public SMARTALLOC { +class DKINFO : public SMARTALLOC +{ public: - DKINFO(DKINFO_OBJ_t t); - DKINFO(const DKINFO &dkinfo); - ~DKINFO(); - - /* set methods dedicated to container */ - inline void set_container_id(DKID &id) { if (Type == DOCKER_CONTAINER){ *data.container.containerid = id; }}; - inline void set_container_id(POOL_MEM &id) { if (Type == DOCKER_CONTAINER){ *data.container.containerid = id; }}; - inline void set_container_id(POOLMEM *id) { if (Type == DOCKER_CONTAINER){ *data.container.containerid = (char*)id; }}; - inline void set_container_names(POOLMEM *n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.names, n); }}; - inline void set_container_names(POOL_MEM &n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.names, n); }}; - inline void set_container_size(uint64_t s) { if (Type == DOCKER_CONTAINER){ data.container.size = s; }}; - inline void set_container_imagesave(DKID &id) { if (Type == DOCKER_CONTAINER){ *data.container.imagesave = id; }}; - inline void set_container_imagesave(POOL_MEM &id) { if (Type == DOCKER_CONTAINER){ *data.container.imagesave = id; }}; - inline void set_container_imagesave(POOLMEM *id) { if (Type == DOCKER_CONTAINER){ *data.container.imagesave = (char*)id; }}; - inline void set_container_imagesave_tag(POOL_MEM &n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.imagesave_tag, n); }}; - inline void set_container_imagesave_tag(POOLMEM *n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.imagesave_tag, n); }}; - inline void set_container_status(DOCKER_POWER_T s) { if (Type == DOCKER_CONTAINER){ data.container.status = s; }}; - void set_container_status(POOL_MEM &s); - inline void set_container_mounts(POOLMEM *n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.mounts, n); }}; - inline void set_container_mounts(POOL_MEM &n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.mounts, n); }}; - - /* special vols handling */ - inline void container_append_vols(DKVOLS *dk) { if (Type == DOCKER_CONTAINER){ data.container.vols->append(dk); }}; - inline bool container_has_vols() { return Type == DOCKER_CONTAINER ? !data.container.vols->empty() : false; }; - inline DKVOLS *container_first_vols() { return Type == DOCKER_CONTAINER ? (DKVOLS*)data.container.vols->first() : NULL; }; - inline DKVOLS *container_next_vols() { return Type == DOCKER_CONTAINER ? (DKVOLS*)data.container.vols->next() : NULL; }; - - /* set methods dedicated to image */ - inline void set_image_id(DKID &id) { if (Type == DOCKER_IMAGE){ *data.image.imageid = id; }}; - inline void set_image_id(POOLMEM *id) { if (Type == DOCKER_IMAGE){ *data.image.imageid = (char*)id; }}; - inline void set_image_id(POOL_MEM &id) { if (Type == DOCKER_IMAGE){ *data.image.imageid = id; }}; - inline void set_image_repository(POOLMEM *n) { if (Type == DOCKER_IMAGE){ pm_strcpy(data.image.repository, n); render_image_repository_tag(); }}; - inline void set_image_repository(POOL_MEM &n) { if (Type == DOCKER_IMAGE){ pm_strcpy(data.image.repository, n); render_image_repository_tag(); }}; - inline void set_image_tag(POOLMEM *n) { if (Type == DOCKER_IMAGE){ pm_strcpy(data.image.tag, n); render_image_repository_tag(); }}; - inline void set_image_tag(POOL_MEM &n) { if (Type == DOCKER_IMAGE){ pm_strcpy(data.image.tag, n); render_image_repository_tag(); }}; - inline void set_image_size(uint64_t s) { if (Type == DOCKER_IMAGE){ data.image.size = s; }}; - inline void set_image_created(utime_t t) { if (Type == DOCKER_IMAGE){ data.image.created = t; }}; - - /* set methods dedicated to volume */ - inline void set_volume_name(POOLMEM *n) { if (Type == DOCKER_VOLUME){ pm_strcpy(data.volume.name, n); }}; - inline void set_volume_name(POOL_MEM &n) { if (Type == DOCKER_VOLUME){ pm_strcpy(data.volume.name, n); }}; - inline void set_volume_created(utime_t t) { if (Type == DOCKER_VOLUME){ data.volume.created = t; }}; - inline void set_volume_size(uint64_t s) { if (Type == DOCKER_VOLUME){ data.volume.size = s; }}; - inline void set_volume_linknr(int l) { if (Type == DOCKER_VOLUME){ data.volume.linknr = l; }}; - inline int inc_volume_linknr() { return Type == DOCKER_VOLUME ? ++data.volume.linknr : 0; }; - - /* scanning methods */ - void scan_container_size(POOLMEM *str); - void scan_image_size(POOLMEM *str); - void scan_image_repository_tag(POOL_MEM &rt); - void scan_volume_size(POOLMEM *str); - - /* get methods dedicated to container */ - inline DKID *get_container_id() { return Type == DOCKER_CONTAINER ? data.container.containerid : NULL; }; - inline DKID *get_container_imagesave() { return Type == DOCKER_CONTAINER ? data.container.imagesave : NULL; }; - inline POOLMEM *get_container_names() { return Type == DOCKER_CONTAINER ? data.container.names : NULL; }; - inline DOCKER_POWER_T get_container_status() { return Type == DOCKER_CONTAINER ? data.container.status : DKUNKNOWN; }; - inline uint64_t get_container_size() { return Type == DOCKER_CONTAINER ? data.container.size : 0; }; - inline POOLMEM *get_container_imagesave_tag() { return Type == DOCKER_CONTAINER ? data.container.imagesave_tag : NULL; }; - inline POOLMEM *get_container_mounts() { return Type == DOCKER_CONTAINER ? data.container.mounts : NULL; }; - - /* get methods dedicated to image */ - inline DKID *get_image_id() { return Type == DOCKER_IMAGE ? data.image.imageid : NULL; }; - inline POOLMEM *get_image_repository() { return Type == DOCKER_IMAGE ? data.image.repository : NULL; }; - inline POOLMEM *get_image_tag() { return Type == DOCKER_IMAGE ? data.image.tag : NULL; }; - inline POOLMEM *get_image_repository_tag() { return Type == DOCKER_IMAGE ? data.image.repository_tag : NULL; }; - inline uint64_t get_image_size() { return Type == DOCKER_IMAGE ? data.image.size : 0; }; - inline utime_t get_image_created() { return Type == DOCKER_IMAGE ? data.image.created : 0; }; - - /* get methods dedicated to volume */ - inline POOLMEM *get_volume_name() { return Type == DOCKER_VOLUME ? data.volume.name : NULL; }; - inline utime_t get_volume_created() { return Type == DOCKER_VOLUME ? data.volume.created : 0; }; - inline uint64_t get_volume_size() { return Type == DOCKER_VOLUME ? data.volume.size : 0; }; - inline int get_volume_linknr() { return Type == DOCKER_VOLUME ? data.volume.linknr : 0; }; - - /* generic get methods which check dkinfo type */ - DKID *id(); - POOLMEM *name(); - uint64_t size(); - inline DKINFO_OBJ_t type() { return Type; }; - const char *type_str(); - - private: - DKINFO_OBJ_t Type; - DOCKER_OBJ data; - - void init(DKINFO_OBJ_t t); - inline void render_image_repository_tag() - { + DKINFO(DKINFO_OBJ_t t); + DKINFO(const DKINFO &dkinfo); +#if __cplusplus > 201103L + DKINFO() = delete; + DKINFO(DKINFO&) = delete; + DKINFO(DKINFO&&) = delete; +#endif + ~DKINFO(); + + /* set methods dedicated to container */ + inline void set_container_id(DKID &id) { if (Type == DOCKER_CONTAINER){ *data.container.containerid = id; }} + inline void set_container_id(POOL_MEM &id) { if (Type == DOCKER_CONTAINER){ *data.container.containerid = id; }} + inline void set_container_id(POOLMEM *id) { if (Type == DOCKER_CONTAINER){ *data.container.containerid = (char*)id; }} + inline void set_container_names(POOLMEM *n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.names, n); }} + inline void set_container_names(POOL_MEM &n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.names, n); }} + inline void set_container_size(uint64_t s) { if (Type == DOCKER_CONTAINER){ data.container.size = s; }} + inline void set_container_imagesave(DKID &id) { if (Type == DOCKER_CONTAINER){ *data.container.imagesave = id; }} + inline void set_container_imagesave(POOL_MEM &id) { if (Type == DOCKER_CONTAINER){ *data.container.imagesave = id; }} + inline void set_container_imagesave(POOLMEM *id) { if (Type == DOCKER_CONTAINER){ *data.container.imagesave = (char*)id; }} + inline void set_container_imagesave_tag(POOL_MEM &n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.imagesave_tag, n); }} + inline void set_container_imagesave_tag(POOLMEM *n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.imagesave_tag, n); }} + inline void set_container_status(DOCKER_POWER_T s) { if (Type == DOCKER_CONTAINER){ data.container.status = s; }} + void set_container_status(POOL_MEM &s); + inline void set_container_mounts(POOLMEM *n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.mounts, n); }} + inline void set_container_mounts(POOL_MEM &n) { if (Type == DOCKER_CONTAINER){ pm_strcpy(data.container.mounts, n); }} + + /* special vols handling */ + inline void container_append_vols(DKVOLS *dk) { if (Type == DOCKER_CONTAINER){ data.container.vols->append(dk); }} + inline bool container_has_vols() { return Type == DOCKER_CONTAINER ? !data.container.vols->empty() : false; } + inline DKVOLS *container_first_vols() { return Type == DOCKER_CONTAINER ? (DKVOLS*)data.container.vols->first() : NULL; } + inline DKVOLS *container_next_vols() { return Type == DOCKER_CONTAINER ? (DKVOLS*)data.container.vols->next() : NULL; } + + /* set methods dedicated to image */ + inline void set_image_id(DKID &id) { if (Type == DOCKER_IMAGE){ *data.image.imageid = id; }} + inline void set_image_id(POOLMEM *id) { if (Type == DOCKER_IMAGE){ *data.image.imageid = (char*)id; }} + inline void set_image_id(POOL_MEM &id) { if (Type == DOCKER_IMAGE){ *data.image.imageid = id; }} + inline void set_image_repository(POOLMEM *n) { if (Type == DOCKER_IMAGE){ pm_strcpy(data.image.repository, n); render_image_repository_tag(); }} + inline void set_image_repository(POOL_MEM &n) { if (Type == DOCKER_IMAGE){ pm_strcpy(data.image.repository, n); render_image_repository_tag(); }} + inline void set_image_tag(POOLMEM *n) { if (Type == DOCKER_IMAGE){ pm_strcpy(data.image.tag, n); render_image_repository_tag(); }} + inline void set_image_tag(POOL_MEM &n) { if (Type == DOCKER_IMAGE){ pm_strcpy(data.image.tag, n); render_image_repository_tag(); }} + inline void set_image_size(uint64_t s) { if (Type == DOCKER_IMAGE){ data.image.size = s; }} + inline void set_image_created(utime_t t) { if (Type == DOCKER_IMAGE){ data.image.created = t; }} + + /* set methods dedicated to volume */ + inline void set_volume_name(POOLMEM *n) { if (Type == DOCKER_VOLUME){ pm_strcpy(data.volume.name, n); }} + inline void set_volume_name(POOL_MEM &n) { if (Type == DOCKER_VOLUME){ pm_strcpy(data.volume.name, n); }} + inline void set_volume_created(utime_t t) { if (Type == DOCKER_VOLUME){ data.volume.created = t; }} + inline void set_volume_size(uint64_t s) { if (Type == DOCKER_VOLUME){ data.volume.size = s; }} + inline void set_volume_linknr(int l) { if (Type == DOCKER_VOLUME){ data.volume.linknr = l; }} + inline int inc_volume_linknr() { return Type == DOCKER_VOLUME ? ++data.volume.linknr : 0; } + + /* scanning methods */ + void scan_container_size(POOLMEM *str); + void scan_image_size(POOLMEM *str); + void scan_image_repository_tag(POOL_MEM &rt); + void scan_volume_size(POOLMEM *str); + + /* get methods dedicated to container */ + inline DKID *get_container_id() { return Type == DOCKER_CONTAINER ? data.container.containerid : NULL; } + inline DKID *get_container_imagesave() { return Type == DOCKER_CONTAINER ? data.container.imagesave : NULL; } + inline POOLMEM *get_container_names() { return Type == DOCKER_CONTAINER ? data.container.names : NULL; } + inline DOCKER_POWER_T get_container_status() { return Type == DOCKER_CONTAINER ? data.container.status : DKUNKNOWN; } + inline uint64_t get_container_size() { return Type == DOCKER_CONTAINER ? data.container.size : 0; } + inline POOLMEM *get_container_imagesave_tag() { return Type == DOCKER_CONTAINER ? data.container.imagesave_tag : NULL; } + inline POOLMEM *get_container_mounts() { return Type == DOCKER_CONTAINER ? data.container.mounts : NULL; } + + /* get methods dedicated to image */ + inline DKID *get_image_id() { return Type == DOCKER_IMAGE ? data.image.imageid : NULL; } + inline POOLMEM *get_image_repository() { return Type == DOCKER_IMAGE ? data.image.repository : NULL; } + inline POOLMEM *get_image_tag() { return Type == DOCKER_IMAGE ? data.image.tag : NULL; } + inline POOLMEM *get_image_repository_tag() { return Type == DOCKER_IMAGE ? data.image.repository_tag : NULL; } + inline uint64_t get_image_size() { return Type == DOCKER_IMAGE ? data.image.size : 0; } + inline utime_t get_image_created() { return Type == DOCKER_IMAGE ? data.image.created : 0; } + + /* get methods dedicated to volume */ + inline POOLMEM *get_volume_name() { return Type == DOCKER_VOLUME ? data.volume.name : NULL; } + inline utime_t get_volume_created() { return Type == DOCKER_VOLUME ? data.volume.created : 0; } + inline uint64_t get_volume_size() { return Type == DOCKER_VOLUME ? data.volume.size : 0; } + inline int get_volume_linknr() { return Type == DOCKER_VOLUME ? data.volume.linknr : 0; } + + /* generic get methods which check dkinfo type */ + DKID *id(); + POOLMEM *name(); + uint64_t size(); + inline DKINFO_OBJ_t type() { return Type; } + const char *type_str(); + +private: + DKINFO_OBJ_t Type; + DOCKER_OBJ data; + + void init(DKINFO_OBJ_t t); + inline void render_image_repository_tag() + { pm_strcpy(data.image.repository_tag, data.image.repository); pm_strcat(data.image.repository_tag, ":"); pm_strcat(data.image.repository_tag, data.image.tag); - }; + } }; #endif /* _DKINFO_H_ */ diff --git a/bacula/src/plugins/fd/docker/docker-fd.c b/bacula/src/plugins/fd/docker/docker-fd.c index 6747d3a9e..2364e380f 100644 --- a/bacula/src/plugins/fd/docker/docker-fd.c +++ b/bacula/src/plugins/fd/docker/docker-fd.c @@ -15,14 +15,13 @@ conveyed and/or propagated. Bacula(R) is a registered trademark of Kern Sibbald. - */ +*/ /** * @file docker-fd.c - * @author Radosław Korzeniewski (radoslaw@korzeniewski.net) + * @author Radoslaw Korzeniewski (radoslaw@korzeniewski.net) * @brief This is a Bacula plugin for backup/restore Docker using native tools. * @version 1.2.1 * @date 2020-01-05 - * * @copyright Copyright (c) 2021 All rights reserved. IP transferred to Bacula Systems according to agreement. */ @@ -80,7 +79,7 @@ static pFuncs pluginFuncs = { pluginIO, createFile, setFileAttributes, - NULL, + NULL, /* No checkFile */ handleXACLdata }; @@ -1320,11 +1319,11 @@ bRC DOCKER::startBackupFile(bpContext *ctx, struct save_pkt *sp) switch (currdkinfo->type()){ case DOCKER_CONTAINER: Mmsg(fname, "%s%s/%s/%s.tar", PLUGINNAMESPACE, CONTAINERNAMESPACE, - currdkinfo->name(), (char*)currdkinfo->id()); + currdkinfo->name(), (char*)*currdkinfo->id()); break; case DOCKER_IMAGE: Mmsg(fname, "%s%s/%s/%s.tar", PLUGINNAMESPACE, IMAGENAMESPACE, - currdkinfo->name(), (char*)currdkinfo->id()); + currdkinfo->name(), (char*)*currdkinfo->id()); break; case DOCKER_VOLUME: Mmsg(fname, "%s%s/%s.tar", PLUGINNAMESPACE, VOLUMENAMESPACE, @@ -1343,7 +1342,7 @@ bRC DOCKER::startBackupFile(bpContext *ctx, struct save_pkt *sp) case DOCKER_LISTING_IMAGE: sp->statp.st_mode = S_IFBLK | 0640; // standard block device with 'brw-r----' permissions case DOCKER_LISTING_CONTAINER: - Mmsg(lname, "%s", param_notrunc?(char*)currdkinfo->id():currdkinfo->id()->digest_short()); + Mmsg(lname, "%s", param_notrunc?(char*)*currdkinfo->id():currdkinfo->id()->digest_short()); Mmsg(fname, "%s", currdkinfo->name()); sp->link = lname; sp->type = FT_LNK; diff --git a/bacula/src/plugins/fd/docker/docker-fd.h b/bacula/src/plugins/fd/docker/docker-fd.h index 2b7867208..fc8376826 100644 --- a/bacula/src/plugins/fd/docker/docker-fd.h +++ b/bacula/src/plugins/fd/docker/docker-fd.h @@ -18,14 +18,13 @@ */ /** * @file docker-fd.h - * @author Radosław Korzeniewski (radoslaw@korzeniewski.net) + * @author Radoslaw Korzeniewski (radoslaw@korzeniewski.net) * @brief This is a Bacula plugin for backup/restore Docker using native tools. * @version 1.2.1 * @date 2020-01-05 * * @copyright Copyright (c) 2021 All rights reserved. IP transferred to Bacula Systems according to agreement. */ - #ifndef _DOCKER_FD_H_ #define _DOCKER_FD_H_ @@ -100,7 +99,7 @@ class DOCKER: public SMARTALLOC { bRC pluginIO(bpContext *ctx, struct io_pkt *io); bRC createFile(bpContext *ctx, struct restore_pkt *rp); bRC setFileAttributes(bpContext *ctx, struct restore_pkt *rp); -// Not used! bRC checkFile(bpContext *ctx, char *fname); +// Not used! bRC checkFile(bpContext *ctx, char *fname); bRC handleXACLdata(bpContext *ctx, struct xacl_pkt *xacl); void setworkingdir(char *workdir); DOCKER(bpContext *bpctx); @@ -120,7 +119,7 @@ class DOCKER: public SMARTALLOC { bool accurate_warning; /* for sending accurate mode warning once */ bool local_restore; /* if where parameter is set to local path then make a local restore */ bool backup_finish; /* the hack to force finish backup list */ - bool unsupportedlevel; /* this flag show if plugin should report unsupported backup level */ + bool unsupportedlevel; /* this flag show if plugin should report unsupported backup level*/ bool param_notrunc; /* when "notrunc" option specified, used in listing mode only */ bool errortar; /* show if container tar for volume archive had errors */ bool volumewarning; /* when set then a warning about remote docker volume restore was sent to user */