Skip to content

Commit

Permalink
dird: defined slot_status_t and slot_type_t as enum class
Browse files Browse the repository at this point in the history
- reduce confusion between slot type and status
- corrected a switch condition on a false struct variable
  (has to be vol_list_t::slot_type, not vol_list_t::slot_status)
  in file dird/sd_cmds.cc:473
- the names of the enum classes should be adapted to our
  coding style guide upon next refactoring and are left
  to the old style to enable easier comparison with old code
  • Loading branch information
franku committed May 24, 2019
1 parent 725eb98 commit 6dce739
Show file tree
Hide file tree
Showing 11 changed files with 280 additions and 237 deletions.
28 changes: 14 additions & 14 deletions core/src/dird/dird.h
Expand Up @@ -115,21 +115,21 @@ typedef enum
VOL_LIST_PARTIAL VOL_LIST_PARTIAL
} vol_list_type; } vol_list_type;


typedef enum enum class slot_type_t
{ {
kSlotTypeUnknown, /**< Unknown slot type */ kSlotTypeUnknown,
kSlotTypeDrive, /**< Drive slot */ kSlotTypeDrive,
kSlotTypeStorage, /**< Storage slot */ kSlotTypeStorage,
kSlotTypeImport, /**< Import/export slot */ kSlotTypeImport, /**< Import/export slot */
kSlotTypePicker /**< Robotics */ kSlotTypePicker /**< Robotics */
} slot_type_t; };


typedef enum enum class slot_status_t
{ {
slot_status_unknown, /**< Slot content is unknown */ kSlotStatusUnknown,
slot_status_empty, /**< Slot is empty */ kSlotStatusEmpty,
slot_status_full /**< Slot is full */ kSlotStatusFull
} slot_status_t; };


enum s_mapping_type enum s_mapping_type
{ {
Expand All @@ -145,8 +145,8 @@ struct vol_list_t {
dlink link; /**< Link for list */ dlink link; /**< Link for list */
slot_number_t element_address = kInvalidSlotNumber; /**< scsi element address */ slot_number_t element_address = kInvalidSlotNumber; /**< scsi element address */
slot_flags_t flags = 0; /**< Slot specific flags see e_slot_flag enum */ slot_flags_t flags = 0; /**< Slot specific flags see e_slot_flag enum */
slot_type_t slot_type = kSlotTypeUnknown; /**< See slot_type_* */ slot_type_t slot_type = slot_type_t::kSlotTypeUnknown;
slot_status_t slot_status = slot_status_unknown; /**< See slot_status_* */ slot_status_t slot_status = slot_status_t::kSlotStatusUnknown;
slot_number_t bareos_slot_number = kInvalidSlotNumber; /**< Drive number when slot_number_t bareos_slot_number = kInvalidSlotNumber; /**< Drive number when
kSlotTypeDrive or actual slot number */ kSlotTypeDrive or actual slot number */
slot_number_t currently_loaded_slot_number = kInvalidSlotNumber; /**< Volume loaded in drive when slot_number_t currently_loaded_slot_number = kInvalidSlotNumber; /**< Volume loaded in drive when
Expand Down
6 changes: 3 additions & 3 deletions core/src/dird/ndmp_dma_backup_NDMP_NATIVE.cc
Expand Up @@ -142,8 +142,8 @@ int NdmpLoadNext(struct ndm_session* sess)
} }


slot_number_t slotnumber = GetElementAddressByBareosSlotNumber( slot_number_t slotnumber = GetElementAddressByBareosSlotNumber(
&store->runtime_storage_status->storage_mapping, kSlotTypeStorage, &store->runtime_storage_status->storage_mapping,
mr.Slot); slot_type_t::kSlotTypeStorage, mr.Slot);
/* check for success */ /* check for success */
if (!IsSlotNumberValid(slotnumber)) { if (!IsSlotNumberValid(slotnumber)) {
Jmsg(jcr, M_FATAL, 0, _("GetElementAddressByBareosSlotNumber failed\n")); Jmsg(jcr, M_FATAL, 0, _("GetElementAddressByBareosSlotNumber failed\n"));
Expand Down Expand Up @@ -534,7 +534,7 @@ static inline bool extract_post_backup_stats_ndmp_native(


media->slot_addr = GetBareosSlotNumberByElementAddress( media->slot_addr = GetBareosSlotNumberByElementAddress(
&jcr->res.write_storage->runtime_storage_status->storage_mapping, &jcr->res.write_storage->runtime_storage_status->storage_mapping,
kSlotTypeStorage, media->slot_addr); slot_type_t::kSlotTypeStorage, media->slot_addr);
#if 0 #if 0
Jmsg(jcr, M_INFO, 0, _("Physical Slot is %d\n"), media->slot_addr); Jmsg(jcr, M_INFO, 0, _("Physical Slot is %d\n"), media->slot_addr);
Jmsg(jcr, M_INFO, 0, _("Logical slot is : %d\n"), media->slot_addr); Jmsg(jcr, M_INFO, 0, _("Logical slot is : %d\n"), media->slot_addr);
Expand Down
4 changes: 2 additions & 2 deletions core/src/dird/ndmp_dma_restore_NDMP_NATIVE.cc
Expand Up @@ -292,8 +292,8 @@ static bool DoNdmpNativeRestore(JobControlRecord* jcr)
Jmsg(jcr, M_INFO, 0, _("Logical slot for volume %s is %d\n"), media->label, Jmsg(jcr, M_INFO, 0, _("Logical slot for volume %s is %d\n"), media->label,
media->slot_addr); media->slot_addr);
ndmp_slot = GetElementAddressByBareosSlotNumber( ndmp_slot = GetElementAddressByBareosSlotNumber(
&store->runtime_storage_status->storage_mapping, kSlotTypeStorage, &store->runtime_storage_status->storage_mapping,
media->slot_addr); slot_type_t::kSlotTypeStorage, media->slot_addr);
media->slot_addr = ndmp_slot; media->slot_addr = ndmp_slot;
Jmsg(jcr, M_INFO, 0, _("Physical(NDMP) slot for volume %s is %d\n"), Jmsg(jcr, M_INFO, 0, _("Physical(NDMP) slot for volume %s is %d\n"),
media->label, media->slot_addr); media->label, media->slot_addr);
Expand Down
55 changes: 28 additions & 27 deletions core/src/dird/ndmp_dma_storage.cc
Expand Up @@ -471,12 +471,12 @@ dlist* ndmp_get_vol_list(UaContext* ua,
/* /*
* Normal slot * Normal slot
*/ */
vl->slot_type = kSlotTypeStorage; vl->slot_type = slot_type_t::kSlotTypeStorage;
if (edp->Full) { if (edp->Full) {
vl->slot_status = slot_status_full; vl->slot_status = slot_status_t::kSlotStatusFull;
FillVolumeName(vl, edp); FillVolumeName(vl, edp);
} else { } else {
vl->slot_status = slot_status_empty; vl->slot_status = slot_status_t::kSlotStatusEmpty;
} }
vl->element_address = edp->element_address; vl->element_address = edp->element_address;
break; break;
Expand All @@ -493,13 +493,13 @@ dlist* ndmp_get_vol_list(UaContext* ua,
/* /*
* Normal slot * Normal slot
*/ */
vl->slot_type = kSlotTypeStorage; vl->slot_type = slot_type_t::kSlotTypeStorage;
vl->element_address = edp->element_address; vl->element_address = edp->element_address;
if (!edp->Full) { if (!edp->Full) {
free(vl); free(vl);
continue; continue;
} else { } else {
vl->slot_status = slot_status_full; vl->slot_status = slot_status_t::kSlotStatusFull;
FillVolumeName(vl, edp); FillVolumeName(vl, edp);
} }
break; break;
Expand All @@ -522,26 +522,26 @@ dlist* ndmp_get_vol_list(UaContext* ua,
/* /*
* Normal slot * Normal slot
*/ */
vl->slot_type = kSlotTypeStorage; vl->slot_type = slot_type_t::kSlotTypeStorage;
vl->element_address = edp->element_address; vl->element_address = edp->element_address;
if (edp->Full) { if (edp->Full) {
vl->slot_status = slot_status_full; vl->slot_status = slot_status_t::kSlotStatusFull;
FillVolumeName(vl, edp); FillVolumeName(vl, edp);
} else { } else {
vl->slot_status = slot_status_empty; vl->slot_status = slot_status_t::kSlotStatusEmpty;
} }
break; break;
case SMC_ELEM_TYPE_IEE: case SMC_ELEM_TYPE_IEE:
/* /*
* Import/Export bareos_slot_number * Import/Export bareos_slot_number
*/ */
vl->slot_type = kSlotTypeImport; vl->slot_type = slot_type_t::kSlotTypeImport;
vl->element_address = edp->element_address; vl->element_address = edp->element_address;
if (edp->Full) { if (edp->Full) {
vl->slot_status = slot_status_full; vl->slot_status = slot_status_t::kSlotStatusFull;
FillVolumeName(vl, edp); FillVolumeName(vl, edp);
} else { } else {
vl->slot_status = slot_status_empty; vl->slot_status = slot_status_t::kSlotStatusEmpty;
} }
if (edp->InEnab) { vl->flags |= can_import; } if (edp->InEnab) { vl->flags |= can_import; }
if (edp->ExEnab) { vl->flags |= can_export; } if (edp->ExEnab) { vl->flags |= can_export; }
Expand All @@ -555,22 +555,22 @@ dlist* ndmp_get_vol_list(UaContext* ua,
/* /*
* Drive * Drive
*/ */
vl->slot_type = kSlotTypeDrive; vl->slot_type = slot_type_t::kSlotTypeDrive;
vl->element_address = edp->element_address; vl->element_address = edp->element_address;
if (edp->Full) { if (edp->Full) {
slot_number_t slot_mapping; slot_number_t slot_mapping;
vl->slot_status = slot_status_full; vl->slot_status = slot_status_t::kSlotStatusFull;
slot_mapping = GetBareosSlotNumberByElementAddress( slot_mapping = GetBareosSlotNumberByElementAddress(
&store->runtime_storage_status->storage_mapping, &store->runtime_storage_status->storage_mapping,
kSlotTypeStorage, edp->src_se_addr); slot_type_t::kSlotTypeStorage, edp->src_se_addr);
vl->currently_loaded_slot_number = slot_mapping; vl->currently_loaded_slot_number = slot_mapping;
FillVolumeName(vl, edp); FillVolumeName(vl, edp);
} else { } else {
vl->slot_status = slot_status_empty; vl->slot_status = slot_status_t::kSlotStatusEmpty;
} }
break; break;
default: default:
vl->slot_type = kSlotTypeUnknown; vl->slot_type = slot_type_t::kSlotTypeUnknown;
vl->element_address = edp->element_address; vl->element_address = edp->element_address;
break; break;
} }
Expand Down Expand Up @@ -706,8 +706,8 @@ bool NdmpTransferVolume(UaContext* ua,
* to physical slot numbers for the actual NDMP operation. * to physical slot numbers for the actual NDMP operation.
*/ */
from_addr = GetBareosSlotNumberByElementAddress( from_addr = GetBareosSlotNumberByElementAddress(
&store->runtime_storage_status->storage_mapping, kSlotTypeStorage, &store->runtime_storage_status->storage_mapping,
src_slot); slot_type_t::kSlotTypeStorage, src_slot);
if (from_addr == kInvalidSlotNumber) { if (from_addr == kInvalidSlotNumber) {
ua->ErrorMsg("No slot mapping for slot %hd\n", src_slot); ua->ErrorMsg("No slot mapping for slot %hd\n", src_slot);
return retval; return retval;
Expand All @@ -716,8 +716,8 @@ bool NdmpTransferVolume(UaContext* ua,
ndmp_job.from_addr_given = 1; ndmp_job.from_addr_given = 1;


to_addr = GetElementAddressByBareosSlotNumber( to_addr = GetElementAddressByBareosSlotNumber(
&store->runtime_storage_status->storage_mapping, kSlotTypeStorage, &store->runtime_storage_status->storage_mapping,
dst_slot); slot_type_t::kSlotTypeStorage, dst_slot);
if (to_addr == kInvalidSlotNumber) { if (to_addr == kInvalidSlotNumber) {
ua->ErrorMsg("No slot mapping for slot %hd\n", dst_slot); ua->ErrorMsg("No slot mapping for slot %hd\n", dst_slot);
return retval; return retval;
Expand Down Expand Up @@ -921,8 +921,8 @@ bool NdmpAutochangerVolumeOperation(UaContext* ua,
* Map the logical address to a physical one. * Map the logical address to a physical one.
*/ */
slot_mapping = GetElementAddressByBareosSlotNumber( slot_mapping = GetElementAddressByBareosSlotNumber(
&store->runtime_storage_status->storage_mapping, kSlotTypeStorage, &store->runtime_storage_status->storage_mapping,
slot); slot_type_t::kSlotTypeStorage, slot);
if (slot_mapping == kInvalidSlotNumber) { if (slot_mapping == kInvalidSlotNumber) {
ua->ErrorMsg("No slot mapping for slot %hd\n", slot); ua->ErrorMsg("No slot mapping for slot %hd\n", slot);
return retval; return retval;
Expand All @@ -935,7 +935,8 @@ bool NdmpAutochangerVolumeOperation(UaContext* ua,
* Map the logical address to a physical one. * Map the logical address to a physical one.
*/ */
drive_mapping = GetElementAddressByBareosSlotNumber( drive_mapping = GetElementAddressByBareosSlotNumber(
&store->runtime_storage_status->storage_mapping, kSlotTypeDrive, slot); &store->runtime_storage_status->storage_mapping,
slot_type_t::kSlotTypeDrive, slot);
if (drive_mapping == kInvalidSlotNumber) { if (drive_mapping == kInvalidSlotNumber) {
ua->ErrorMsg("No slot mapping for drive %hd\n", drive); ua->ErrorMsg("No slot mapping for drive %hd\n", drive);
return retval; return retval;
Expand Down Expand Up @@ -1039,8 +1040,8 @@ bool NdmpSendLabelRequest(UaContext* ua,
slot_number_t slot_mapping; slot_number_t slot_mapping;


slot_mapping = GetElementAddressByBareosSlotNumber( slot_mapping = GetElementAddressByBareosSlotNumber(
&store->runtime_storage_status->storage_mapping, kSlotTypeStorage, &store->runtime_storage_status->storage_mapping,
slot); slot_type_t::kSlotTypeStorage, slot);
if (slot_mapping == kInvalidSlotNumber) { if (slot_mapping == kInvalidSlotNumber) {
ua->ErrorMsg("No slot mapping for slot %hd\n", slot); ua->ErrorMsg("No slot mapping for slot %hd\n", slot);
return retval; return retval;
Expand Down Expand Up @@ -1125,8 +1126,8 @@ bool ndmp_native_setup_robot_and_tape_for_native_backup_job(
} }


driveaddress = GetElementAddressByBareosSlotNumber( driveaddress = GetElementAddressByBareosSlotNumber(
&store->runtime_storage_status->storage_mapping, kSlotTypeDrive, &store->runtime_storage_status->storage_mapping,
driveindex); slot_type_t::kSlotTypeDrive, driveindex);
if (driveaddress == kInvalidSlotNumber) { if (driveaddress == kInvalidSlotNumber) {
Jmsg(jcr, M_ERROR, 0, Jmsg(jcr, M_ERROR, 0,
_("Could not lookup driveaddress for driveindex %d\n"), driveaddress); _("Could not lookup driveaddress for driveindex %d\n"), driveaddress);
Expand Down
20 changes: 10 additions & 10 deletions core/src/dird/ndmp_slot2elemaddr.cc
Expand Up @@ -35,7 +35,7 @@ slot_number_t GetElementAddressByBareosSlotNumber(
slot_number_t calculated_slot; slot_number_t calculated_slot;


switch (slot_type) { switch (slot_type) {
case kSlotTypeStorage: case slot_type_t::kSlotTypeStorage:
if ((slotnumber > smc_elem_aa->se_count) || if ((slotnumber > smc_elem_aa->se_count) ||
!IsSlotNumberValid(slotnumber)) { !IsSlotNumberValid(slotnumber)) {
calculated_slot = kInvalidSlotNumber; calculated_slot = kInvalidSlotNumber;
Expand All @@ -45,7 +45,7 @@ slot_number_t GetElementAddressByBareosSlotNumber(
- 1; // normal slots count start from 1 - 1; // normal slots count start from 1
} }
break; break;
case kSlotTypeImport: case slot_type_t::kSlotTypeImport:
if ((slotnumber < (smc_elem_aa->se_count + 1)) || if ((slotnumber < (smc_elem_aa->se_count + 1)) ||
(slotnumber > (smc_elem_aa->se_count + smc_elem_aa->iee_count + 1))) { (slotnumber > (smc_elem_aa->se_count + smc_elem_aa->iee_count + 1))) {
calculated_slot = kInvalidSlotNumber; calculated_slot = kInvalidSlotNumber;
Expand All @@ -56,7 +56,7 @@ slot_number_t GetElementAddressByBareosSlotNumber(
- 1; // normal slots count start from 1 - 1; // normal slots count start from 1
} }
break; break;
case kSlotTypePicker: case slot_type_t::kSlotTypePicker:
if ((slotnumber == kInvalidSlotNumber) || if ((slotnumber == kInvalidSlotNumber) ||
slotnumber > (smc_elem_aa->mte_count - 1)) { slotnumber > (smc_elem_aa->mte_count - 1)) {
calculated_slot = kInvalidSlotNumber; calculated_slot = kInvalidSlotNumber;
Expand All @@ -65,7 +65,7 @@ slot_number_t GetElementAddressByBareosSlotNumber(
+ smc_elem_aa->mte_addr; + smc_elem_aa->mte_addr;
} }
break; break;
case kSlotTypeDrive: case slot_type_t::kSlotTypeDrive:
if ((slotnumber > (smc_elem_aa->dte_count) - 1) || if ((slotnumber > (smc_elem_aa->dte_count) - 1) ||
(slotnumber == kInvalidSlotNumber)) { (slotnumber == kInvalidSlotNumber)) {
calculated_slot = kInvalidSlotNumber; calculated_slot = kInvalidSlotNumber;
Expand All @@ -75,7 +75,7 @@ slot_number_t GetElementAddressByBareosSlotNumber(
} }
break; break;
default: default:
case kSlotTypeUnknown: case slot_type_t::kSlotTypeUnknown:
calculated_slot = kInvalidSlotNumber; calculated_slot = kInvalidSlotNumber;
break; break;
} }
Expand All @@ -93,7 +93,7 @@ slot_number_t GetBareosSlotNumberByElementAddress(
slot_number_t calculated_slot; slot_number_t calculated_slot;


switch (slot_type) { switch (slot_type) {
case kSlotTypeStorage: case slot_type_t::kSlotTypeStorage:
if (element_addr < smc_elem_aa->se_addr || if (element_addr < smc_elem_aa->se_addr ||
(element_addr > smc_elem_aa->se_addr + smc_elem_aa->se_count - 1)) { (element_addr > smc_elem_aa->se_addr + smc_elem_aa->se_count - 1)) {
calculated_slot = kInvalidSlotNumber; calculated_slot = kInvalidSlotNumber;
Expand All @@ -103,7 +103,7 @@ slot_number_t GetBareosSlotNumberByElementAddress(
+ 1; // slots count start from 1 + 1; // slots count start from 1
} }
break; break;
case kSlotTypeImport: case slot_type_t::kSlotTypeImport:
if ((element_addr < smc_elem_aa->iee_addr) || if ((element_addr < smc_elem_aa->iee_addr) ||
(element_addr > smc_elem_aa->iee_addr + smc_elem_aa->iee_count - 1)) { (element_addr > smc_elem_aa->iee_addr + smc_elem_aa->iee_count - 1)) {
calculated_slot = kInvalidSlotNumber; calculated_slot = kInvalidSlotNumber;
Expand All @@ -114,7 +114,7 @@ slot_number_t GetBareosSlotNumberByElementAddress(
+ 1; // slots count start from 1 + 1; // slots count start from 1
} }
break; break;
case kSlotTypeDrive: case slot_type_t::kSlotTypeDrive:
if ((element_addr < smc_elem_aa->dte_addr) || if ((element_addr < smc_elem_aa->dte_addr) ||
(element_addr > smc_elem_aa->dte_addr + smc_elem_aa->dte_count - 1)) { (element_addr > smc_elem_aa->dte_addr + smc_elem_aa->dte_count - 1)) {
calculated_slot = kInvalidSlotNumber; calculated_slot = kInvalidSlotNumber;
Expand All @@ -123,12 +123,12 @@ slot_number_t GetBareosSlotNumberByElementAddress(
- smc_elem_aa->dte_addr; - smc_elem_aa->dte_addr;
} }
break; break;
case kSlotTypePicker: case slot_type_t::kSlotTypePicker:
calculated_slot = element_addr calculated_slot = element_addr
- smc_elem_aa->mte_addr; - smc_elem_aa->mte_addr;
break; break;
default: default:
case kSlotTypeUnknown: case slot_type_t::kSlotTypeUnknown:
calculated_slot = kInvalidSlotNumber; calculated_slot = kInvalidSlotNumber;
break; break;
} }
Expand Down

0 comments on commit 6dce739

Please sign in to comment.