bdev: remove public usage of bdev_part_base.ref

Change-Id: Ifed1cbdc2624ae1861f94f06b718d6b04f862496
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/417781
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Seth Howell 2018-07-03 09:57:23 -07:00 committed by Jim Harris
parent 6b7609b639
commit 4265138722
4 changed files with 14 additions and 25 deletions

View File

@ -724,15 +724,6 @@ struct bdev_part_tailq *spdk_bdev_part_base_get_tailq(struct spdk_bdev_part_base
*/ */
void *spdk_bdev_part_base_get_ctx(struct spdk_bdev_part_base *part_base); void *spdk_bdev_part_base_get_ctx(struct spdk_bdev_part_base *part_base);
/**
* Returns the reference number associated with an spdk_bdev_part_base
*
* \param part_base A pointer to an spdk_bdev_part_base object.
*
* \return The base's reference number.
*/
uint32_t spdk_bdev_part_base_get_ref(struct spdk_bdev_part_base *part_base);
typedef void (*spdk_bdev_part_base_free_fn)(void *ctx); typedef void (*spdk_bdev_part_base_free_fn)(void *ctx);
struct spdk_bdev_part { struct spdk_bdev_part {

View File

@ -228,6 +228,7 @@ vbdev_gpt_create_bdevs(struct gpt_base *gpt_base)
{ {
uint32_t num_partition_entries; uint32_t num_partition_entries;
uint64_t i, head_lba_start, head_lba_end; uint64_t i, head_lba_start, head_lba_end;
uint32_t num_partitions;
struct spdk_gpt_partition_entry *p; struct spdk_gpt_partition_entry *p;
struct gpt_disk *d; struct gpt_disk *d;
struct spdk_gpt *gpt; struct spdk_gpt *gpt;
@ -239,6 +240,7 @@ vbdev_gpt_create_bdevs(struct gpt_base *gpt_base)
num_partition_entries = from_le32(&gpt->header->num_partition_entries); num_partition_entries = from_le32(&gpt->header->num_partition_entries);
head_lba_start = from_le64(&gpt->header->first_usable_lba); head_lba_start = from_le64(&gpt->header->first_usable_lba);
head_lba_end = from_le64(&gpt->header->last_usable_lba); head_lba_end = from_le64(&gpt->header->last_usable_lba);
num_partitions = 0;
for (i = 0; i < num_partition_entries; i++) { for (i = 0; i < num_partition_entries; i++) {
p = &gpt->partitions[i]; p = &gpt->partitions[i];
@ -277,11 +279,11 @@ vbdev_gpt_create_bdevs(struct gpt_base *gpt_base)
free(d); free(d);
return -1; return -1;
} }
num_partitions++;
d->partition_index = i; d->partition_index = i;
} }
return 0; return num_partitions;
} }
static void static void
@ -289,8 +291,7 @@ spdk_gpt_bdev_complete(struct spdk_bdev_io *bdev_io, bool status, void *arg)
{ {
struct gpt_base *gpt_base = (struct gpt_base *)arg; struct gpt_base *gpt_base = (struct gpt_base *)arg;
struct spdk_bdev *bdev = spdk_bdev_part_base_get_bdev(gpt_base->part_base); struct spdk_bdev *bdev = spdk_bdev_part_base_get_bdev(gpt_base->part_base);
uint32_t part_base_ref; int rc, num_partitions = 0;
int rc;
spdk_bdev_free_io(bdev_io); spdk_bdev_free_io(bdev_io);
spdk_put_io_channel(gpt_base->ch); spdk_put_io_channel(gpt_base->ch);
@ -308,8 +309,8 @@ spdk_gpt_bdev_complete(struct spdk_bdev_io *bdev_io, bool status, void *arg)
goto end; goto end;
} }
rc = vbdev_gpt_create_bdevs(gpt_base); num_partitions = vbdev_gpt_create_bdevs(gpt_base);
if (rc < 0) { if (num_partitions < 0) {
SPDK_DEBUGLOG(SPDK_LOG_VBDEV_GPT, "Failed to split dev=%s by gpt table\n", SPDK_DEBUGLOG(SPDK_LOG_VBDEV_GPT, "Failed to split dev=%s by gpt table\n",
spdk_bdev_get_name(bdev)); spdk_bdev_get_name(bdev));
} }
@ -320,9 +321,12 @@ end:
* callback are now completed. * callback are now completed.
*/ */
spdk_bdev_module_examine_done(&gpt_if); spdk_bdev_module_examine_done(&gpt_if);
part_base_ref = spdk_bdev_part_base_get_ref(gpt_base->part_base);
if (part_base_ref == 0) { /*
* vbdev_gpt_create_bdevs returns the number of bdevs created upon success.
* We can branch on this value.
*/
if (num_partitions <= 0) {
/* If no gpt_disk instances were created, free the base context */ /* If no gpt_disk instances were created, free the base context */
spdk_bdev_part_base_free(gpt_base->part_base); spdk_bdev_part_base_free(gpt_base->part_base);
} }

View File

@ -79,12 +79,6 @@ spdk_bdev_part_base_get_ctx(struct spdk_bdev_part_base *part_base)
return part_base->ctx; return part_base->ctx;
} }
uint32_t
spdk_bdev_part_base_get_ref(struct spdk_bdev_part_base *part_base)
{
return part_base->ref;
}
void void
spdk_bdev_part_base_free(struct spdk_bdev_part_base *base) spdk_bdev_part_base_free(struct spdk_bdev_part_base *base)
{ {

View File

@ -263,7 +263,7 @@ vbdev_split_destruct_config(struct spdk_vbdev_split_config *cfg)
struct bdev_part_tailq *split_base_tailq; struct bdev_part_tailq *split_base_tailq;
cfg->removed = true; cfg->removed = true;
if (cfg->split_base != NULL && spdk_bdev_part_base_get_ref(cfg->split_base)) { if (cfg->split_base != NULL) {
split_base_bdev = spdk_bdev_part_base_get_bdev(cfg->split_base); split_base_bdev = spdk_bdev_part_base_get_bdev(cfg->split_base);
split_base_tailq = spdk_bdev_part_base_get_tailq(cfg->split_base); split_base_tailq = spdk_bdev_part_base_get_tailq(cfg->split_base);
spdk_bdev_part_base_hotremove(split_base_bdev, split_base_tailq); spdk_bdev_part_base_hotremove(split_base_bdev, split_base_tailq);
@ -420,7 +420,7 @@ vbdev_split_examine(struct spdk_bdev *bdev)
struct spdk_vbdev_split_config *cfg = vbdev_split_config_find_by_base_name(bdev->name); struct spdk_vbdev_split_config *cfg = vbdev_split_config_find_by_base_name(bdev->name);
if (cfg != NULL && cfg->removed == false) { if (cfg != NULL && cfg->removed == false) {
assert(cfg->split_base == NULL || spdk_bdev_part_base_get_ref(cfg->split_base) == 0); assert(cfg->split_base == NULL);
if (vbdev_split_create(cfg)) { if (vbdev_split_create(cfg)) {
SPDK_ERRLOG("could not split bdev %s\n", bdev->name); SPDK_ERRLOG("could not split bdev %s\n", bdev->name);