SPDK Filesystem. More...
Data Structures | |
struct | spdk_blobfs_opts |
struct | spdk_file_stat |
Typedefs | |
typedef struct spdk_file * | spdk_fs_iter |
typedef void(* | spdk_fs_op_with_handle_complete) (void *ctx, struct spdk_filesystem *fs, int fserrno) |
Filesystem operation completion callback with handle. | |
typedef void(* | spdk_file_op_with_handle_complete) (void *ctx, struct spdk_file *f, int fserrno) |
File operation completion callback with handle. | |
typedef spdk_bs_op_complete | spdk_fs_op_complete |
typedef void(* | spdk_file_op_complete) (void *ctx, int fserrno) |
File operation completion callback. | |
typedef void(* | spdk_file_stat_op_complete) (void *ctx, struct spdk_file_stat *stat, int fserrno) |
File stat operation completion callback. | |
typedef void(* | fs_request_fn) (void *arg) |
Function for a request of file system. | |
typedef void(* | fs_send_request_fn) (fs_request_fn fn, void *arg) |
Function for sending request. | |
Functions | |
void | spdk_fs_opts_init (struct spdk_blobfs_opts *opts) |
Initialize a spdk_blobfs_opts structure to the default option values. | |
void | spdk_fs_init (struct spdk_bs_dev *dev, struct spdk_blobfs_opts *opt, fs_send_request_fn send_request_fn, spdk_fs_op_with_handle_complete cb_fn, void *cb_arg) |
Initialize blobstore filesystem. | |
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) |
Load blobstore filesystem from the given blobstore block device. | |
void | spdk_fs_unload (struct spdk_filesystem *fs, spdk_fs_op_complete cb_fn, void *cb_arg) |
Unload blobstore filesystem. | |
struct spdk_io_channel * | spdk_fs_alloc_io_channel (struct spdk_filesystem *fs) |
Allocate an I/O channel for asynchronous operations. | |
void | spdk_fs_free_io_channel (struct spdk_io_channel *channel) |
Free I/O channel. | |
struct spdk_fs_thread_ctx * | spdk_fs_alloc_thread_ctx (struct spdk_filesystem *fs) |
Allocate a context for synchronous operations. | |
void | spdk_fs_free_thread_ctx (struct spdk_fs_thread_ctx *ctx) |
Free thread context. | |
int | spdk_fs_file_stat (struct spdk_filesystem *fs, struct spdk_fs_thread_ctx *ctx, const char *name, struct spdk_file_stat *stat) |
Get statistics about the file including the underlying blob id and the file size. | |
int | spdk_fs_create_file (struct spdk_filesystem *fs, struct spdk_fs_thread_ctx *ctx, const char *name) |
Create a new file on the given blobstore filesystem. | |
int | spdk_fs_open_file (struct spdk_filesystem *fs, struct spdk_fs_thread_ctx *ctx, const char *name, uint32_t flags, struct spdk_file **file) |
Open the file. | |
int | spdk_file_close (struct spdk_file *file, struct spdk_fs_thread_ctx *ctx) |
Close the file. | |
int | spdk_fs_rename_file (struct spdk_filesystem *fs, struct spdk_fs_thread_ctx *ctx, const char *old_name, const char *new_name) |
Change the file name. | |
int | spdk_fs_delete_file (struct spdk_filesystem *fs, struct spdk_fs_thread_ctx *ctx, const char *name) |
Delete the file. | |
spdk_fs_iter | spdk_fs_iter_first (struct spdk_filesystem *fs) |
Get the first file in the blobstore filesystem. | |
spdk_fs_iter | spdk_fs_iter_next (spdk_fs_iter iter) |
Get the next file in the blobstore filesystem by using the input iterator. | |
int | spdk_file_truncate (struct spdk_file *file, struct spdk_fs_thread_ctx *ctx, uint64_t length) |
Truncate the file. | |
const char * | spdk_file_get_name (struct spdk_file *file) |
Get file name. | |
uint64_t | spdk_file_get_length (struct spdk_file *file) |
Obtain the size of the file. | |
int | spdk_file_write (struct spdk_file *file, struct spdk_fs_thread_ctx *ctx, void *payload, uint64_t offset, uint64_t length) |
Write data to the given file. | |
int64_t | spdk_file_read (struct spdk_file *file, struct spdk_fs_thread_ctx *ctx, void *payload, uint64_t offset, uint64_t length) |
Read data to user buffer from the given file. | |
int | spdk_fs_set_cache_size (uint64_t size_in_mb) |
Set cache size for the blobstore filesystem. | |
uint64_t | spdk_fs_get_cache_size (void) |
Obtain the cache size. | |
void | spdk_file_set_priority (struct spdk_file *file, uint32_t priority) |
Set priority for the file. | |
int | spdk_file_sync (struct spdk_file *file, struct spdk_fs_thread_ctx *ctx) |
Synchronize the data from the cache to the disk. | |
int | spdk_file_get_id (struct spdk_file *file, void *id, size_t size) |
Get the unique ID for the file. | |
void | spdk_file_readv_async (struct spdk_file *file, struct spdk_io_channel *channel, struct iovec *iovs, uint32_t iovcnt, uint64_t offset, uint64_t length, spdk_file_op_complete cb_fn, void *cb_arg) |
Read data to user buffer from the given file. | |
void | spdk_file_writev_async (struct spdk_file *file, struct spdk_io_channel *channel, struct iovec *iovs, uint32_t iovcnt, uint64_t offset, uint64_t length, spdk_file_op_complete cb_fn, void *cb_arg) |
Write data to the given file. | |
void | spdk_fs_file_stat_async (struct spdk_filesystem *fs, const char *name, spdk_file_stat_op_complete cb_fn, void *cb_arg) |
Get statistics about the file including the underlying blob id and the file size. | |
void | spdk_fs_create_file_async (struct spdk_filesystem *fs, const char *name, spdk_file_op_complete cb_fn, void *cb_arg) |
Create a new file on the given blobstore filesystem. | |
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) |
Open the file. | |
void | spdk_file_close_async (struct spdk_file *file, spdk_file_op_complete cb_fn, void *cb_arg) |
Close the file. | |
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) |
Change the file name. | |
void | spdk_fs_delete_file_async (struct spdk_filesystem *fs, const char *name, spdk_file_op_complete cb_fn, void *cb_arg) |
Delete the file. | |
void | spdk_file_truncate_async (struct spdk_file *file, uint64_t length, spdk_file_op_complete cb_fn, void *cb_arg) |
Truncate the file. | |
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) |
Write data to the given file. | |
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) |
Read data to user buffer from the given file. | |
void | spdk_file_sync_async (struct spdk_file *file, struct spdk_io_channel *channel, spdk_file_op_complete cb_fn, void *cb_arg) |
Sync all dirty cache buffers to the backing block device. | |
SPDK Filesystem.
typedef void(* fs_request_fn) (void *arg) |
Function for a request of file system.
arg | Argument to the request function. |
typedef void(* fs_send_request_fn) (fs_request_fn fn, void *arg) |
Function for sending request.
This function will be invoked any time when the filesystem wants to pass a message to the main dispatch thread.
fn | A pointer to the request function. |
arg | Argument to the request function. |
typedef void(* spdk_file_op_complete) (void *ctx, int fserrno) |
File operation completion callback.
ctx | Context for the operation. |
fserrno | 0 if it completed successfully, or negative errno if it failed. |
typedef void(* spdk_file_op_with_handle_complete) (void *ctx, struct spdk_file *f, int fserrno) |
File operation completion callback with handle.
ctx | Context for the operation. |
f | Handle to a file. |
fserrno | 0 if it completed successfully, or negative errno if it failed. |
typedef void(* spdk_file_stat_op_complete) (void *ctx, struct spdk_file_stat *stat, int fserrno) |
File stat operation completion callback.
ctx | Context for the operation. |
stat | Handle to the stat about the file. |
fserrno | 0 if it completed successfully, or negative errno if it failed. |
typedef void(* spdk_fs_op_with_handle_complete) (void *ctx, struct spdk_filesystem *fs, int fserrno) |
Filesystem operation completion callback with handle.
ctx | Context for the operation. |
fs | Handle to a blobfs. |
fserrno | 0 if it completed successfully, or negative errno if it failed. |
int spdk_file_close | ( | struct spdk_file * | file, |
struct spdk_fs_thread_ctx * | ctx ) |
Close the file.
file | File to close. |
ctx | The thread context for this operation |
void spdk_file_close_async | ( | struct spdk_file * | file, |
spdk_file_op_complete | cb_fn, | ||
void * | cb_arg ) |
Close the file.
file | File to close. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
int spdk_file_get_id | ( | struct spdk_file * | file, |
void * | id, | ||
size_t | size ) |
Get the unique ID for the file.
file | File to get the ID. |
id | ID buffer. |
size | Size of the ID buffer. |
uint64_t spdk_file_get_length | ( | struct spdk_file * | file | ) |
Obtain the size of the file.
file | File to query. |
const char * spdk_file_get_name | ( | struct spdk_file * | file | ) |
Get file name.
file | File to query. |
int64_t spdk_file_read | ( | struct spdk_file * | file, |
struct spdk_fs_thread_ctx * | ctx, | ||
void * | payload, | ||
uint64_t | offset, | ||
uint64_t | length ) |
Read data to user buffer from the given file.
file | File to read. |
ctx | The thread context for this operation |
payload | The specified buffer which will store the obtained data. |
offset | The beginning position to read. |
length | The size in bytes of data to read. |
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 ) |
Read data to user buffer from the given file.
file | File to write. |
channel | I/O channel for asynchronous operations. |
payload | The specified buffer which will store the obtained data. |
offset | The beginning position to read. |
length | The size in bytes of data to read. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
void spdk_file_readv_async | ( | struct spdk_file * | file, |
struct spdk_io_channel * | channel, | ||
struct iovec * | iovs, | ||
uint32_t | iovcnt, | ||
uint64_t | offset, | ||
uint64_t | length, | ||
spdk_file_op_complete | cb_fn, | ||
void * | cb_arg ) |
Read data to user buffer from the given file.
file | File to read. |
channel | I/O channel for asynchronous operations. |
iovs | A scatter gather list of buffers to be read into. |
iovcnt | The number of elements in iov. |
offset | The beginning position to read. |
length | The size in bytes of data to read. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
void spdk_file_set_priority | ( | struct spdk_file * | file, |
uint32_t | priority ) |
Set priority for the file.
file | File to set priority. |
priority | Priority level (SPDK_FILE_PRIORITY_LOW or SPDK_FILE_PRIORITY_HIGH). |
int spdk_file_sync | ( | struct spdk_file * | file, |
struct spdk_fs_thread_ctx * | ctx ) |
Synchronize the data from the cache to the disk.
file | File to sync. |
ctx | The thread context for this operation |
void spdk_file_sync_async | ( | struct spdk_file * | file, |
struct spdk_io_channel * | channel, | ||
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.
file | File to write. |
channel | I/O channel for asynchronous operations. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
int spdk_file_truncate | ( | struct spdk_file * | file, |
struct spdk_fs_thread_ctx * | ctx, | ||
uint64_t | length ) |
Truncate the file.
file | File to truncate. |
ctx | The thread context for this operation |
length | New size in bytes of the file. |
void spdk_file_truncate_async | ( | struct spdk_file * | file, |
uint64_t | length, | ||
spdk_file_op_complete | cb_fn, | ||
void * | cb_arg ) |
Truncate the file.
file | File to truncate. |
length | New size in bytes of the file. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
int spdk_file_write | ( | struct spdk_file * | file, |
struct spdk_fs_thread_ctx * | ctx, | ||
void * | payload, | ||
uint64_t | offset, | ||
uint64_t | length ) |
Write data to the given file.
file | File to write. |
ctx | The thread context for this operation |
payload | The specified buffer which should contain the data to be transmitted. |
offset | The beginning position to write data. |
length | The size in bytes of data to write. |
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 ) |
Write data to the given file.
file | File to write. |
channel | I/O channel for asynchronous operations. |
payload | The specified buffer which should contain the data to be transmitted. |
offset | The beginning position to write data. |
length | The size in bytes of data to write. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
void spdk_file_writev_async | ( | struct spdk_file * | file, |
struct spdk_io_channel * | channel, | ||
struct iovec * | iovs, | ||
uint32_t | iovcnt, | ||
uint64_t | offset, | ||
uint64_t | length, | ||
spdk_file_op_complete | cb_fn, | ||
void * | cb_arg ) |
Write data to the given file.
file | File to write. |
channel | I/O channel for asynchronous operations. |
iovs | A scatter gather list of buffers to be written from. |
iovcnt | The number of elements in iov. |
offset | The beginning position to write. |
length | The size in bytes of data to write. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
struct spdk_io_channel * spdk_fs_alloc_io_channel | ( | struct spdk_filesystem * | fs | ) |
Allocate an I/O channel for asynchronous operations.
fs | Blobstore filesystem to allocate I/O channel. |
struct spdk_fs_thread_ctx * spdk_fs_alloc_thread_ctx | ( | struct spdk_filesystem * | fs | ) |
Allocate a context for synchronous operations.
fs | Blobstore filesystem for this context. |
int spdk_fs_create_file | ( | struct spdk_filesystem * | fs, |
struct spdk_fs_thread_ctx * | ctx, | ||
const char * | name ) |
Create a new file on the given blobstore filesystem.
fs | Blobstore filesystem. |
ctx | The thread context for this operation |
name | The file name for this new file. |
void spdk_fs_create_file_async | ( | struct spdk_filesystem * | fs, |
const char * | name, | ||
spdk_file_op_complete | cb_fn, | ||
void * | cb_arg ) |
Create a new file on the given blobstore filesystem.
fs | Blobstore filesystem. |
name | The file name for this new file. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
int spdk_fs_delete_file | ( | struct spdk_filesystem * | fs, |
struct spdk_fs_thread_ctx * | ctx, | ||
const char * | name ) |
Delete the file.
fs | Blobstore filesystem. |
ctx | The thread context for this operation |
name | The name of the file to be deleted. |
void spdk_fs_delete_file_async | ( | struct spdk_filesystem * | fs, |
const char * | name, | ||
spdk_file_op_complete | cb_fn, | ||
void * | cb_arg ) |
Delete the file.
fs | Blobstore filesystem. |
name | The name of the file to be deleted. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
int spdk_fs_file_stat | ( | struct spdk_filesystem * | fs, |
struct spdk_fs_thread_ctx * | ctx, | ||
const char * | name, | ||
struct spdk_file_stat * | stat ) |
Get statistics about the file including the underlying blob id and the file size.
fs | Blobstore filesystem. |
ctx | The thread context for this operation |
name | The file name used to look up the matched file in the blobstore filesystem. |
stat | Caller allocated structure to store the obtained information about this file. |
void spdk_fs_file_stat_async | ( | struct spdk_filesystem * | fs, |
const char * | name, | ||
spdk_file_stat_op_complete | cb_fn, | ||
void * | cb_arg ) |
Get statistics about the file including the underlying blob id and the file size.
fs | Blobstore filesystem. |
name | The file name used to look up the matched file in the blobstore filesystem. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
void spdk_fs_free_io_channel | ( | struct spdk_io_channel * | channel | ) |
Free I/O channel.
This function will decrease the references of this I/O channel. If the reference is reduced to 0, the I/O channel will be freed.
channel | I/O channel to free. |
void spdk_fs_free_thread_ctx | ( | struct spdk_fs_thread_ctx * | ctx | ) |
Free thread context.
ctx | Thread context to free. |
uint64_t spdk_fs_get_cache_size | ( | void | ) |
Obtain the cache size.
void spdk_fs_init | ( | struct spdk_bs_dev * | dev, |
struct spdk_blobfs_opts * | opt, | ||
fs_send_request_fn | send_request_fn, | ||
spdk_fs_op_with_handle_complete | cb_fn, | ||
void * | cb_arg ) |
Initialize blobstore filesystem.
Initialize the blobstore filesystem on the blobstore block device which has been created by the function spdk_bdev_create_bs_dev() in the blob_bdev.h. The obtained blobstore filesystem will be passed to the callback function.
dev | Blobstore block device used by this blobstore filesystem. |
opt | Initialization options used for this blobstore filesystem. |
send_request_fn | The function for sending request. This function will be invoked any time when the blobstore filesystem wants to pass a message to the main dispatch thread. |
cb_fn | Called when the initialization is complete. |
cb_arg | Argument passed to function cb_fn. |
spdk_fs_iter spdk_fs_iter_first | ( | struct spdk_filesystem * | fs | ) |
Get the first file in the blobstore filesystem.
fs | Blobstore filesystem to traverse. |
spdk_fs_iter spdk_fs_iter_next | ( | spdk_fs_iter | iter | ) |
Get the next file in the blobstore filesystem by using the input iterator.
iter | The iterator which points to the current file struct. |
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 ) |
Load blobstore filesystem from the given blobstore block device.
The obtained blobstore filesystem will be passed to the callback function.
dev | Blobstore block device used by this blobstore filesystem. |
send_request_fn | The function for sending request. This function will be invoked any time when the blobstore filesystem wants to pass a message to the main dispatch thread. |
cb_fn | Called when the loading is complete. |
cb_arg | Argument passed to function cb_fn. |
int spdk_fs_open_file | ( | struct spdk_filesystem * | fs, |
struct spdk_fs_thread_ctx * | ctx, | ||
const char * | name, | ||
uint32_t | flags, | ||
struct spdk_file ** | file ) |
Open the file.
fs | Blobstore filesystem. |
ctx | The thread context for this operation |
name | The file name used to look up the matched file in the blobstore filesystem. |
flags | This flags will be used to control the open mode. |
file | It will point to the open file if successful or NULL otherwise. |
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 ) |
Open the file.
fs | Blobstore filesystem. |
name | The file name used to look up the matched file in the blobstore filesystem. |
flags | This flags will be used to control the open mode. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
void spdk_fs_opts_init | ( | struct spdk_blobfs_opts * | opts | ) |
Initialize a spdk_blobfs_opts structure to the default option values.
opts | spdk_blobf_opts structure to initialize. |
int spdk_fs_rename_file | ( | struct spdk_filesystem * | fs, |
struct spdk_fs_thread_ctx * | ctx, | ||
const char * | old_name, | ||
const char * | new_name ) |
Change the file name.
This operation will overwrite an existing file if there is a file with the same name.
fs | Blobstore filesystem. |
ctx | The thread context for this operation |
old_name | Old name of the file. |
new_name | New name of the file. |
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 ) |
Change the file name.
This operation will overwrite an existing file if there is a file with the same name.
fs | Blobstore filesystem. |
old_name | Old name of the file. |
new_name | New name of the file. |
cb_fn | Called when the request is complete. |
cb_arg | Argument passed to cb_fn. |
int spdk_fs_set_cache_size | ( | uint64_t | size_in_mb | ) |
Set cache size for the blobstore filesystem.
size_in_mb | Cache size in megabytes. |
void spdk_fs_unload | ( | struct spdk_filesystem * | fs, |
spdk_fs_op_complete | cb_fn, | ||
void * | cb_arg ) |
Unload blobstore filesystem.
fs | Blobstore filesystem to unload. |
cb_fn | Called when the unloading is complete. |
cb_arg | Argument passed to function cb_fn. |