blobfs: make internal asynchronous APIs as public APIs
SPDK blobfs has asynchronous APIs defined in blobfs_internal.h file, as users may want to use them, so we remove them to the public .h file. Change-Id: I1835d97060101f6315a73cb8638b15ff7e13ba54 Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/457547 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
485a2dcfa9
commit
6c9b6abf5e
@ -2,6 +2,10 @@
|
||||
|
||||
## v19.07: (Upcoming Release)
|
||||
|
||||
### blobfs
|
||||
|
||||
Blobfs file asynchronous operations were added to public APIs.
|
||||
|
||||
### util
|
||||
|
||||
A new file API `spdk_posix_file_load` was added to load file content into a data buffer.
|
||||
|
@ -442,6 +442,154 @@ void spdk_file_writev_async(struct spdk_file *file, struct spdk_io_channel *chan
|
||||
struct iovec *iovs, uint32_t iovcnt, uint64_t offset, uint64_t length,
|
||||
spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
|
||||
/**
|
||||
* Get statistics about the file including the underlying blob id and the file size.
|
||||
*
|
||||
* \param fs Blobstore filesystem.
|
||||
* \param name The file name used to look up the matched file in the blobstore filesystem.
|
||||
* \param cb_fn Called when the request is complete.
|
||||
* \param cb_arg Argument passed to cb_fn.
|
||||
*
|
||||
* return None.
|
||||
*/
|
||||
void spdk_fs_file_stat_async(struct spdk_filesystem *fs, const char *name,
|
||||
spdk_file_stat_op_complete cb_fn, void *cb_arg);
|
||||
|
||||
/**
|
||||
* Create a new file on the given blobstore filesystem.
|
||||
*
|
||||
* \param fs Blobstore filesystem.
|
||||
* \param name The file name for this new file.
|
||||
* \param cb_fn Called when the request is complete.
|
||||
* \param cb_arg Argument passed to cb_fn.
|
||||
*
|
||||
* return None.
|
||||
*/
|
||||
void spdk_fs_create_file_async(struct spdk_filesystem *fs, const char *name,
|
||||
spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
|
||||
/**
|
||||
* Open the file.
|
||||
*
|
||||
* \param fs Blobstore filesystem.
|
||||
* \param name The file name used to look up the matched file in the blobstore filesystem.
|
||||
* \param flags This flags will be used to control the open mode.
|
||||
* \param cb_fn Called when the request is complete.
|
||||
* \param cb_arg Argument passed to cb_fn.
|
||||
*
|
||||
* return None.
|
||||
*/
|
||||
void spdk_fs_open_file_async(struct spdk_filesystem *fs, const char *name, uint32_t flags,
|
||||
spdk_file_op_with_handle_complete cb_fn, void *cb_arg);
|
||||
|
||||
/**
|
||||
* Close the file.
|
||||
*
|
||||
* \param file File to close.
|
||||
* \param cb_fn Called when the request is complete.
|
||||
* \param cb_arg Argument passed to cb_fn.
|
||||
*
|
||||
* return None.
|
||||
*/
|
||||
void spdk_file_close_async(struct spdk_file *file, spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
|
||||
|
||||
/**
|
||||
* Change the file name.
|
||||
*
|
||||
* This operation will overwrite an existing file if there is a file with the
|
||||
* same name.
|
||||
*
|
||||
* \param fs Blobstore filesystem.
|
||||
* \param old_name Old name of the file.
|
||||
* \param new_name New name of the file.
|
||||
* \param cb_fn Called when the request is complete.
|
||||
* \param cb_arg Argument passed to cb_fn.
|
||||
*
|
||||
* return None.
|
||||
*/
|
||||
void spdk_fs_rename_file_async(struct spdk_filesystem *fs, const char *old_name,
|
||||
const char *new_name, spdk_fs_op_complete cb_fn,
|
||||
void *cb_arg);
|
||||
|
||||
/**
|
||||
* Delete the file.
|
||||
*
|
||||
* \param fs Blobstore filesystem.
|
||||
* \param name The name of the file to be deleted.
|
||||
* \param cb_fn Called when the request is complete.
|
||||
* \param cb_arg Argument passed to cb_fn.
|
||||
*
|
||||
* return None.
|
||||
*
|
||||
*/
|
||||
void spdk_fs_delete_file_async(struct spdk_filesystem *fs, const char *name,
|
||||
spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
|
||||
/**
|
||||
* Truncate the file.
|
||||
*
|
||||
* \param file File to truncate.
|
||||
* \param length New size in bytes of the file.
|
||||
* \param cb_fn Called when the request is complete.
|
||||
* \param cb_arg Argument passed to cb_fn.
|
||||
*
|
||||
* return None.
|
||||
*/
|
||||
void spdk_file_truncate_async(struct spdk_file *file, uint64_t length,
|
||||
spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
|
||||
/**
|
||||
* Write data to the given file.
|
||||
*
|
||||
* \param file File to write.
|
||||
* \param channel I/O channel for asynchronous operations.
|
||||
* \param payload The specified buffer which should contain the data to be transmitted.
|
||||
* \param offset The beginning position to write data.
|
||||
* \param length The size in bytes of data to write.
|
||||
* \param cb_fn Called when the request is complete.
|
||||
* \param cb_arg Argument passed to cb_fn.
|
||||
*
|
||||
* return None.
|
||||
*/
|
||||
void spdk_file_write_async(struct spdk_file *file, struct spdk_io_channel *channel,
|
||||
void *payload, uint64_t offset, uint64_t length,
|
||||
spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
|
||||
/**
|
||||
* Read data to user buffer from the given file.
|
||||
*
|
||||
* \param file File to write.
|
||||
* \param channel I/O channel for asynchronous operations.
|
||||
* \param payload The specified buffer which will store the obtained data.
|
||||
* \param offset The beginning position to read.
|
||||
* \param length The size in bytes of data to read.
|
||||
* \param cb_fn Called when the request is complete.
|
||||
* \param cb_arg Argument passed to cb_fn.
|
||||
*
|
||||
* return None.
|
||||
*/
|
||||
void spdk_file_read_async(struct spdk_file *file, struct spdk_io_channel *channel,
|
||||
void *payload, uint64_t offset, uint64_t length,
|
||||
spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
|
||||
/**
|
||||
* Sync all dirty cache buffers to the backing block device. For async
|
||||
* usage models, completion of the sync indicates only that data written
|
||||
* when the sync command was issued have been flushed to disk - it does
|
||||
* not guarantee any writes submitted after the sync have been flushed,
|
||||
* even if those writes are completed before the sync.
|
||||
*
|
||||
* \param file File to write.
|
||||
* \param channel I/O channel for asynchronous operations.
|
||||
* \param cb_fn Called when the request is complete.
|
||||
* \param cb_arg Argument passed to cb_fn.
|
||||
*
|
||||
* return None.
|
||||
*/
|
||||
void spdk_file_sync_async(struct spdk_file *file, struct spdk_io_channel *channel,
|
||||
spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -35,7 +35,7 @@
|
||||
|
||||
#include "spdk/blobfs.h"
|
||||
#include "spdk/conf.h"
|
||||
#include "blobfs_internal.h"
|
||||
#include "tree.h"
|
||||
|
||||
#include "spdk/queue.h"
|
||||
#include "spdk/thread.h"
|
||||
|
@ -1,69 +0,0 @@
|
||||
/*-
|
||||
* BSD LICENSE
|
||||
*
|
||||
* Copyright (c) Intel Corporation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* * Neither the name of Intel Corporation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef SPDK_BLOBFS_INTERNAL_H
|
||||
#define SPDK_BLOBFS_INTERNAL_H
|
||||
|
||||
#include "tree.h"
|
||||
|
||||
void spdk_fs_file_stat_async(struct spdk_filesystem *fs, const char *name,
|
||||
spdk_file_stat_op_complete cb_fn, void *cb_arg);
|
||||
void spdk_fs_create_file_async(struct spdk_filesystem *fs, const char *name,
|
||||
spdk_file_op_complete cb_fn, void *cb_args);
|
||||
void spdk_fs_open_file_async(struct spdk_filesystem *fs, const char *name, uint32_t flags,
|
||||
spdk_file_op_with_handle_complete cb_fn, void *cb_arg);
|
||||
void spdk_file_close_async(struct spdk_file *file, spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
void spdk_fs_rename_file_async(struct spdk_filesystem *fs, const char *old_name,
|
||||
const char *new_name, spdk_fs_op_complete cb_fn,
|
||||
void *cb_arg);
|
||||
void spdk_fs_delete_file_async(struct spdk_filesystem *fs, const char *name,
|
||||
spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
void spdk_file_truncate_async(struct spdk_file *file, uint64_t length,
|
||||
spdk_file_op_complete cb_fn, void *arg);
|
||||
void spdk_file_write_async(struct spdk_file *file, struct spdk_io_channel *channel,
|
||||
void *payload, uint64_t offset, uint64_t length,
|
||||
spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
void spdk_file_read_async(struct spdk_file *file, struct spdk_io_channel *channel,
|
||||
void *payload, uint64_t offset, uint64_t length,
|
||||
spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
|
||||
/* Sync all dirty cache buffers to the backing block device. For async
|
||||
* usage models, completion of the sync indicates only that data written
|
||||
* when the sync command was issued have been flushed to disk - it does
|
||||
* not guarantee any writes submitted after the sync have been flushed,
|
||||
* even if those writes are completed before the sync.
|
||||
*/
|
||||
void spdk_file_sync_async(struct spdk_file *file, struct spdk_io_channel *channel,
|
||||
spdk_file_op_complete cb_fn, void *cb_arg);
|
||||
|
||||
#endif /* SPDK_BLOBFS_INTERNAL_H_ */
|
@ -34,7 +34,7 @@
|
||||
#include "spdk/stdinc.h"
|
||||
|
||||
#include "spdk/blobfs.h"
|
||||
#include "blobfs_internal.h"
|
||||
#include "tree.h"
|
||||
|
||||
#include "spdk/queue.h"
|
||||
#include "spdk/assert.h"
|
||||
|
Loading…
Reference in New Issue
Block a user