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: Ziye Yang <optimistyzy@gmail.com> Reviewed-on: https://review.gerrithub.io/420233 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: 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
967ca457d0
commit
d0b134606b
@ -673,6 +673,24 @@ load_cb(void *ctx, struct spdk_blob_store *bs, int bserrno)
|
|||||||
fs_load_done(req, 0);
|
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
|
void
|
||||||
spdk_fs_load(struct spdk_bs_dev *dev, fs_send_request_fn send_request_fn,
|
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)
|
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);
|
req = alloc_fs_request(fs->md_target.md_fs_channel);
|
||||||
if (req == NULL) {
|
if (req == NULL) {
|
||||||
spdk_put_io_channel(fs->md_target.md_io_channel);
|
spdk_fs_free_io_channels(fs);
|
||||||
spdk_io_device_unregister(&fs->md_target, NULL);
|
spdk_fs_io_device_unregister(fs);
|
||||||
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);
|
|
||||||
cb_fn(cb_arg, NULL, -ENOMEM);
|
cb_fn(cb_arg, NULL, -ENOMEM);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -730,11 +744,7 @@ unload_cb(void *ctx, int bserrno)
|
|||||||
args->fn.fs_op(args->arg, bserrno);
|
args->fn.fs_op(args->arg, bserrno);
|
||||||
free(req);
|
free(req);
|
||||||
|
|
||||||
spdk_io_device_unregister(&fs->io_target, NULL);
|
spdk_fs_io_device_unregister(fs);
|
||||||
spdk_io_device_unregister(&fs->sync_target, NULL);
|
|
||||||
spdk_io_device_unregister(&fs->md_target, NULL);
|
|
||||||
|
|
||||||
free(fs);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
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->arg = cb_arg;
|
||||||
args->fs = fs;
|
args->fs = fs;
|
||||||
|
|
||||||
spdk_fs_free_io_channel(fs->md_target.md_io_channel);
|
spdk_fs_free_io_channels(fs);
|
||||||
spdk_fs_free_io_channel(fs->sync_target.sync_io_channel);
|
|
||||||
spdk_bs_unload(fs->bs, unload_cb, req);
|
spdk_bs_unload(fs->bs, unload_cb, req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user