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:
parent
6b7609b639
commit
4265138722
@ -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 {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user