strcmp(VolHdr.Id, OldBaculaId) != 0 &&
strcmp(VolHdr.Id, BaculaMetaDataId) != 0 &&
strcmp(VolHdr.Id, BaculaAlignedDataId) != 0 &&
+ strcmp(VolHdr.Id, BaculaDedupMetaDataId) != 0 &&
strcmp(VolHdr.Id, BaculaS3CloudId) != 0) {
Mmsg(jcr->errmsg, _("Volume Header Id bad: %s\n"), VolHdr.Id);
Dmsg1(dbglvl, "%s", jcr->errmsg);
*/
if (VolHdr.VerNum != BaculaTapeVersion &&
VolHdr.VerNum != BaculaMetaDataVersion &&
+ VolHdr.VerNum != BaculaDedupMetaDataVersion &&
VolHdr.VerNum != BaculaS3CloudVersion &&
VolHdr.VerNum != OldCompatibleBaculaTapeVersion1 &&
VolHdr.VerNum != OldCompatibleBaculaTapeVersion2) {
/* Compare VolType to Device Type */
switch (dev_type) {
+ case B_DEDUP_DEV:
+ if (strcmp(VolHdr.Id, BaculaDedupMetaDataId) != 0) {
+ Mmsg(jcr->errmsg, _("Wrong Volume Type. Wanted a Dedup Volume %s on device %s, but got: %s\n"),
+ VolHdr.VolumeName, print_name(), VolHdr.Id);
+ stat = VOL_TYPE_ERROR;
+ goto bail_out;
+ }
+ break;
case B_FILE_DEV:
if (strcmp(VolHdr.Id, BaculaId) != 0) {
Mmsg(jcr->errmsg, _("Wrong Volume Type. Wanted a File or Tape Volume %s on device %s, but got: %s\n"),
dev->VolHdr.FileAlignment = dev->file_alignment;
dev->VolHdr.PaddingSize = dev->padding_size;
dev->VolHdr.BlockSize = dev->adata_size;
+ } else if (dev->is_dedup()) {
+ bstrncpy(dev->VolHdr.Id, BaculaDedupMetaDataId, sizeof(dev->VolHdr.Id));
+ dev->VolHdr.VerNum = BaculaDedupMetaDataVersion;
+ dev->VolHdr.BlockSize = dev->max_block_size;
} else if (dev->is_cloud()) {
bstrncpy(dev->VolHdr.Id, BaculaS3CloudId, sizeof(dev->VolHdr.Id));
dev->VolHdr.VerNum = BaculaS3CloudVersion;