hw/9pfs: Add init callback to fs driver
This call back can be used to do fs driver specific initialization. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
This commit is contained in:
parent
2289be19ae
commit
0174fe73e6
@ -19,6 +19,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <sys/uio.h>
|
||||
#include <sys/vfs.h>
|
||||
|
||||
#define SM_LOCAL_MODE_BITS 0600
|
||||
#define SM_LOCAL_DIR_MODE_BITS 0700
|
||||
|
||||
@ -66,6 +67,7 @@ void cred_init(FsCred *);
|
||||
|
||||
typedef struct FileOperations
|
||||
{
|
||||
int (*init)(struct FsContext *);
|
||||
int (*lstat)(FsContext *, V9fsPath *, struct stat *);
|
||||
ssize_t (*readlink)(FsContext *, V9fsPath *, char *, size_t);
|
||||
int (*chmod)(FsContext *, V9fsPath *, FsCred *);
|
||||
|
@ -45,7 +45,7 @@ static void virtio_9p_get_config(VirtIODevice *vdev, uint8_t *config)
|
||||
}
|
||||
|
||||
VirtIODevice *virtio_9p_init(DeviceState *dev, V9fsConf *conf)
|
||||
{
|
||||
{
|
||||
V9fsState *s;
|
||||
int i, len;
|
||||
struct stat stat;
|
||||
@ -133,6 +133,11 @@ VirtIODevice *virtio_9p_init(DeviceState *dev, V9fsConf *conf)
|
||||
s->fid_list = NULL;
|
||||
qemu_co_rwlock_init(&s->rename_lock);
|
||||
|
||||
if (s->ops->init(&s->ctx) < 0) {
|
||||
fprintf(stderr, "Virtio-9p Failed to initialize fs-driver with id:%s"
|
||||
" and export path:%s\n", conf->fsdev_id, s->ctx.fs_root);
|
||||
exit(1);
|
||||
}
|
||||
if (v9fs_init_worker_threads() < 0) {
|
||||
fprintf(stderr, "worker thread initialization failed\n");
|
||||
exit(1);
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include <sys/un.h>
|
||||
#include <attr/xattr.h>
|
||||
|
||||
|
||||
static int local_lstat(FsContext *fs_ctx, V9fsPath *fs_path, struct stat *stbuf)
|
||||
{
|
||||
int err;
|
||||
@ -646,7 +645,13 @@ static int local_unlinkat(FsContext *ctx, V9fsPath *dir,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int local_init(FsContext *ctx)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
FileOperations local_ops = {
|
||||
.init = local_init,
|
||||
.lstat = local_lstat,
|
||||
.readlink = local_readlink,
|
||||
.close = local_close,
|
||||
|
Loading…
Reference in New Issue
Block a user