Commit d0b13460 authored by Ziye Yang's avatar Ziye Yang Committed by Jim Harris
Browse files

blobfs: refactor the I/O device free functions.



Some functions should be executed togther, so
group it into a single function which will avoid
the potential issues.

Change-Id: Ie57be20aa76d9bece82b5534c3c5fc6c9faeebad
Signed-off-by: default avatarZiye Yang <optimistyzy@gmail.com>
Reviewed-on: https://review.gerrithub.io/420233


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 967ca457
Loading
Loading
Loading
Loading
+22 −13
Original line number Diff line number Diff line
@@ -673,6 +673,24 @@ load_cb(void *ctx, struct spdk_blob_store *bs, int bserrno)
	fs_load_done(req, 0);
}

static void
spdk_fs_io_device_unregister(struct spdk_filesystem *fs)
{
	assert(fs != NULL);
	spdk_io_device_unregister(&fs->md_target, NULL);
	spdk_io_device_unregister(&fs->sync_target, NULL);
	spdk_io_device_unregister(&fs->io_target, NULL);
	free(fs);
}

static void
spdk_fs_free_io_channels(struct spdk_filesystem *fs)
{
	assert(fs != NULL);
	spdk_fs_free_io_channel(fs->md_target.md_io_channel);
	spdk_fs_free_io_channel(fs->sync_target.sync_io_channel);
}

void
spdk_fs_load(struct spdk_bs_dev *dev, fs_send_request_fn send_request_fn,
	     spdk_fs_op_with_handle_complete cb_fn, void *cb_arg)
@@ -692,12 +710,8 @@ spdk_fs_load(struct spdk_bs_dev *dev, fs_send_request_fn send_request_fn,

	req = alloc_fs_request(fs->md_target.md_fs_channel);
	if (req == NULL) {
		spdk_put_io_channel(fs->md_target.md_io_channel);
		spdk_io_device_unregister(&fs->md_target, NULL);
		spdk_put_io_channel(fs->sync_target.sync_io_channel);
		spdk_io_device_unregister(&fs->sync_target, NULL);
		spdk_io_device_unregister(&fs->io_target, NULL);
		free(fs);
		spdk_fs_free_io_channels(fs);
		spdk_fs_io_device_unregister(fs);
		cb_fn(cb_arg, NULL, -ENOMEM);
		return;
	}
@@ -730,11 +744,7 @@ unload_cb(void *ctx, int bserrno)
	args->fn.fs_op(args->arg, bserrno);
	free(req);

	spdk_io_device_unregister(&fs->io_target, NULL);
	spdk_io_device_unregister(&fs->sync_target, NULL);
	spdk_io_device_unregister(&fs->md_target, NULL);

	free(fs);
	spdk_fs_io_device_unregister(fs);
}

void
@@ -758,8 +768,7 @@ spdk_fs_unload(struct spdk_filesystem *fs, spdk_fs_op_complete cb_fn, void *cb_a
	args->arg = cb_arg;
	args->fs = fs;

	spdk_fs_free_io_channel(fs->md_target.md_io_channel);
	spdk_fs_free_io_channel(fs->sync_target.sync_io_channel);
	spdk_fs_free_io_channels(fs);
	spdk_bs_unload(fs->bs, unload_cb, req);
}