Commit 41f2d0e4 authored by Tomasz Zawadzki's avatar Tomasz Zawadzki Committed by Jim Harris
Browse files

lib/blob: serialize extents in new function



This change moves the code related to serializing
extents into serparate function, in order to allow
more clear changes in further patches.

There are no functional changes in this patch.

Signed-off-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: If8d7c90a5b01f1608d20fd00c3e4ff6a340ce305
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/466919


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent fcaabb48
Loading
Loading
Loading
Loading
+32 −20
Original line number Diff line number Diff line
@@ -732,6 +732,36 @@ _spdk_blob_serialize_extent(const struct spdk_blob *blob,
	return;
}

static int
_spdk_blob_serialize_extents(const struct spdk_blob *blob,
			     struct spdk_blob_md_page **pages,
			     struct spdk_blob_md_page *cur_page,
			     uint32_t *page_count, uint8_t **buf,
			     size_t *remaining_sz)
{
	uint64_t				last_cluster;
	int					rc;

	last_cluster = 0;
	while (last_cluster < blob->active.num_clusters) {
		_spdk_blob_serialize_extent(blob, last_cluster, &last_cluster, *buf, *remaining_sz);

		if (last_cluster == blob->active.num_clusters) {
			break;
		}

		rc = _spdk_blob_serialize_add_page(blob, pages, page_count, &cur_page);
		if (rc < 0) {
			return rc;
		}

		*buf = (uint8_t *)cur_page->descriptors;
		*remaining_sz = sizeof(cur_page->descriptors);
	}

	return 0;
}

static void
_spdk_blob_serialize_flags(const struct spdk_blob *blob,
			   uint8_t *buf, size_t *buf_sz)
@@ -814,7 +844,6 @@ _spdk_blob_serialize(const struct spdk_blob *blob, struct spdk_blob_md_page **pa
	int					rc;
	uint8_t					*buf;
	size_t					remaining_sz;
	uint64_t				last_cluster;

	assert(pages != NULL);
	assert(page_count != NULL);
@@ -852,28 +881,11 @@ _spdk_blob_serialize(const struct spdk_blob *blob, struct spdk_blob_md_page **pa
	}

	/* Serialize extents */
	last_cluster = 0;
	while (last_cluster < blob->active.num_clusters) {
		_spdk_blob_serialize_extent(blob, last_cluster, &last_cluster,
					    buf, remaining_sz);

		if (last_cluster == blob->active.num_clusters) {
			break;
		}
	rc = _spdk_blob_serialize_extents(blob, pages, cur_page, page_count, &buf, &remaining_sz);

		rc = _spdk_blob_serialize_add_page(blob, pages, page_count,
						   &cur_page);
		if (rc < 0) {
	return rc;
}

		buf = (uint8_t *)cur_page->descriptors;
		remaining_sz = sizeof(cur_page->descriptors);
	}

	return 0;
}

struct spdk_blob_load_ctx {
	struct spdk_blob		*blob;