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:
Changpeng Liu 2019-06-10 20:59:22 -04:00 committed by Ben Walker
parent 485a2dcfa9
commit 6c9b6abf5e
5 changed files with 154 additions and 71 deletions

View File

@ -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.

View File

@ -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

View File

@ -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"

View File

@ -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_ */

View File

@ -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"