Commit 4794c791 authored by Jim Harris's avatar Jim Harris
Browse files

bdev: add pointer to module structure



Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: Ic3051b63942770e45be22af0ae03a78a7c543f81

Reviewed-on: https://review.gerrithub.io/368597


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 0bb3618a
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -186,6 +186,11 @@ struct spdk_bdev {
	 */
	int need_aligned_buffer;

	/**
	 * Pointer to the bdev module that registered this bdev.
	 */
	struct spdk_bdev_module_if *module;

	/** function table for all LUN ops */
	const struct spdk_bdev_fn_table *fn_table;

@@ -450,4 +455,13 @@ spdk_bdev_io_from_ctx(void *ctx)
	    spdk_vbdev_module_list_add(&_name ## _if);                  			\
	}

#define SPDK_GET_BDEV_MODULE(name) &name ## _if

/*
 * Modules are not required to use this macro.  It allows modules to reference the module with
 * SPDK_GET_BDEV_MODULE() before it is defined by SPDK_BDEV_MODULE_REGISTER or its VBDEV variant.
 */
#define SPDK_DECLARE_BDEV_MODULE(name)								\
	static struct spdk_bdev_module_if name ## _if;

#endif /* SPDK_INTERNAL_BDEV_H */
+1 −0
Original line number Diff line number Diff line
@@ -361,6 +361,7 @@ create_aio_disk(const char *name, const char *fname)
		goto error_return;
	}
	fdisk->disk.product_name = "AIO disk";
	fdisk->disk.module = SPDK_GET_BDEV_MODULE(aio);

	fdisk->disk.need_aligned_buffer = 1;
	fdisk->disk.write_cache = 1;
+2 −0
Original line number Diff line number Diff line
@@ -1360,6 +1360,8 @@ _spdk_bdev_register(struct spdk_bdev *bdev)
{
	struct spdk_bdev_module_if *vbdev_module;

	assert(bdev->module != NULL);

	bdev->status = SPDK_BDEV_STATUS_READY;

	/* initialize the reset generation value to zero */
+3 −0
Original line number Diff line number Diff line
@@ -48,6 +48,8 @@

#include "vbdev_error.h"

SPDK_DECLARE_BDEV_MODULE(error);

struct vbdev_error_info {
	bool				enabled;
	uint32_t			error_type;
@@ -267,6 +269,7 @@ spdk_vbdev_error_create(struct spdk_bdev *base_bdev)
	disk->disk.product_name = "Error Injection Disk";
	disk->disk.ctxt = disk;
	disk->disk.fn_table = &vbdev_error_fn_table;
	disk->disk.module = SPDK_GET_BDEV_MODULE(error);
	spdk_vbdev_register(&disk->disk, &base_bdev, 1);
	TAILQ_INIT(&disk->pending_ios);
	TAILQ_INSERT_TAIL(&g_vbdev_error_disks, disk, tailq);
+3 −0
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@

#include "gpt.h"

SPDK_DECLARE_BDEV_MODULE(gpt);

/* Base block device gpt context */
struct spdk_gpt_bdev {
	struct spdk_bdev_desc *bdev_desc;
@@ -385,6 +387,7 @@ vbdev_gpt_create_bdevs(struct spdk_gpt_bdev *gpt_bdev)
		d->disk.blockcnt = lba_end - lba_start;
		d->disk.ctxt = d;
		d->disk.fn_table = &vbdev_gpt_fn_table;
		d->disk.module = SPDK_GET_BDEV_MODULE(gpt);

		SPDK_TRACELOG(SPDK_TRACE_VBDEV_GPT, "gpt vbdev %s: base bdev: %s offset_bytes: "
			      "%" PRIu64 " offset_blocks: %" PRIu64 "\n",
Loading