Commit 6c9b6abf authored by Changpeng Liu's avatar Changpeng Liu Committed by Ben Walker
Browse files

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: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/457547


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 485a2dcf
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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.
+148 −0
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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"

lib/blobfs/blobfs_internal.h

deleted100644 → 0
+0 −69
Original line number Diff line number Diff line
/*-
 *   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_ */
+1 −1
Original line number Diff line number Diff line
@@ -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"