Loading Makefile.objs +1 −0 Original line number Diff line number Diff line Loading @@ -310,6 +310,7 @@ hw-obj-$(CONFIG_SOUND) += $(sound-obj-y) 9pfs-nested-$(CONFIG_VIRTFS) += virtio-9p-xattr-user.o virtio-9p-posix-acl.o 9pfs-nested-$(CONFIG_VIRTFS) += virtio-9p-coth.o cofs.o codir.o cofile.o 9pfs-nested-$(CONFIG_VIRTFS) += coxattr.o virtio-9p-handle.o 9pfs-nested-$(CONFIG_VIRTFS) += virtio-9p-synth.o hw-obj-$(CONFIG_REALLY_VIRTFS) += $(addprefix 9pfs/, $(9pfs-nested-y)) $(addprefix 9pfs/, $(9pfs-nested-y)): QEMU_CFLAGS+=$(GLIB_CFLAGS) Loading configure +1 −1 Original line number Diff line number Diff line Loading @@ -2562,7 +2562,7 @@ fi open_by_hande_at=no cat > $TMPC << EOF #include <fcntl.h> int main(void) { struct file_handle *fh; open_by_handle_at(0, fh, 0); } int main(void) { struct file_handle fh; open_by_handle_at(0, &fh, 0); } EOF if compile_prog "" "" ; then open_by_handle_at=yes Loading fsdev/file-op-9p.h +22 −14 Original line number Diff line number Diff line Loading @@ -56,10 +56,12 @@ typedef struct extended_ops { * On failure ignore the error. */ #define V9FS_SM_NONE 0x00000010 #define V9FS_RDONLY 0x00000020 #define V9FS_SEC_MASK 0x0000001C typedef struct FsContext { uid_t uid; Loading @@ -76,6 +78,8 @@ typedef struct V9fsPath { char *data; } V9fsPath; typedef union V9fsFidOpenState V9fsFidOpenState; void cred_init(FsCred *); typedef struct FileOperations Loading @@ -92,22 +96,26 @@ typedef struct FileOperations const char *, FsCred *); int (*link)(FsContext *, V9fsPath *, V9fsPath *, const char *); int (*setuid)(FsContext *, uid_t); int (*close)(FsContext *, int); int (*closedir)(FsContext *, DIR *); DIR *(*opendir)(FsContext *, V9fsPath *); int (*open)(FsContext *, V9fsPath *, int); int (*open2)(FsContext *, V9fsPath *, const char *, int, FsCred *); void (*rewinddir)(FsContext *, DIR *); off_t (*telldir)(FsContext *, DIR *); int (*readdir_r)(FsContext *, DIR *, struct dirent *, struct dirent **); void (*seekdir)(FsContext *, DIR *, off_t); ssize_t (*preadv)(FsContext *, int, const struct iovec *, int, off_t); ssize_t (*pwritev)(FsContext *, int, const struct iovec *, int, off_t); int (*close)(FsContext *, V9fsFidOpenState *); int (*closedir)(FsContext *, V9fsFidOpenState *); int (*opendir)(FsContext *, V9fsPath *, V9fsFidOpenState *); int (*open)(FsContext *, V9fsPath *, int, V9fsFidOpenState *); int (*open2)(FsContext *, V9fsPath *, const char *, int, FsCred *, V9fsFidOpenState *); void (*rewinddir)(FsContext *, V9fsFidOpenState *); off_t (*telldir)(FsContext *, V9fsFidOpenState *); int (*readdir_r)(FsContext *, V9fsFidOpenState *, struct dirent *, struct dirent **); void (*seekdir)(FsContext *, V9fsFidOpenState *, off_t); ssize_t (*preadv)(FsContext *, V9fsFidOpenState *, const struct iovec *, int, off_t); ssize_t (*pwritev)(FsContext *, V9fsFidOpenState *, const struct iovec *, int, off_t); int (*mkdir)(FsContext *, V9fsPath *, const char *, FsCred *); int (*fstat)(FsContext *, int, struct stat *); int (*fstat)(FsContext *, V9fsFidOpenState *, struct stat *); int (*rename)(FsContext *, const char *, const char *); int (*truncate)(FsContext *, V9fsPath *, off_t); int (*fsync)(FsContext *, int, int); int (*fsync)(FsContext *, V9fsFidOpenState *, int); int (*statfs)(FsContext *s, V9fsPath *path, struct statfs *stbuf); ssize_t (*lgetxattr)(FsContext *, V9fsPath *, const char *, void *, size_t); Loading fsdev/qemu-fsdev.c +7 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ static QTAILQ_HEAD(FsDriverEntry_head, FsDriverListEntry) fsdriver_entries = static FsDriverTable FsDrivers[] = { { .name = "local", .ops = &local_ops}, { .name = "handle", .ops = &handle_ops}, { .name = "synth", .ops = &synth_ops}, }; int qemu_fsdev_add(QemuOpts *opts) Loading @@ -35,7 +36,7 @@ int qemu_fsdev_add(QemuOpts *opts) const char *path = qemu_opt_get(opts, "path"); const char *sec_model = qemu_opt_get(opts, "security_model"); const char *writeout = qemu_opt_get(opts, "writeout"); bool ro = qemu_opt_get_bool(opts, "readonly", 0); if (!fsdev_id) { fprintf(stderr, "fsdev: No id specified\n"); Loading Loading @@ -86,6 +87,11 @@ int qemu_fsdev_add(QemuOpts *opts) fsle->fse.export_flags |= V9FS_IMMEDIATE_WRITEOUT; } } if (ro) { fsle->fse.export_flags |= V9FS_RDONLY; } else { fsle->fse.export_flags &= ~V9FS_RDONLY; } if (strcmp(fsdriver, "local")) { goto done; Loading fsdev/qemu-fsdev.h +1 −0 Original line number Diff line number Diff line Loading @@ -53,4 +53,5 @@ int qemu_fsdev_add(QemuOpts *opts); FsDriverEntry *get_fsdev_fsentry(char *id); extern FileOperations local_ops; extern FileOperations handle_ops; extern FileOperations synth_ops; #endif Loading
Makefile.objs +1 −0 Original line number Diff line number Diff line Loading @@ -310,6 +310,7 @@ hw-obj-$(CONFIG_SOUND) += $(sound-obj-y) 9pfs-nested-$(CONFIG_VIRTFS) += virtio-9p-xattr-user.o virtio-9p-posix-acl.o 9pfs-nested-$(CONFIG_VIRTFS) += virtio-9p-coth.o cofs.o codir.o cofile.o 9pfs-nested-$(CONFIG_VIRTFS) += coxattr.o virtio-9p-handle.o 9pfs-nested-$(CONFIG_VIRTFS) += virtio-9p-synth.o hw-obj-$(CONFIG_REALLY_VIRTFS) += $(addprefix 9pfs/, $(9pfs-nested-y)) $(addprefix 9pfs/, $(9pfs-nested-y)): QEMU_CFLAGS+=$(GLIB_CFLAGS) Loading
configure +1 −1 Original line number Diff line number Diff line Loading @@ -2562,7 +2562,7 @@ fi open_by_hande_at=no cat > $TMPC << EOF #include <fcntl.h> int main(void) { struct file_handle *fh; open_by_handle_at(0, fh, 0); } int main(void) { struct file_handle fh; open_by_handle_at(0, &fh, 0); } EOF if compile_prog "" "" ; then open_by_handle_at=yes Loading
fsdev/file-op-9p.h +22 −14 Original line number Diff line number Diff line Loading @@ -56,10 +56,12 @@ typedef struct extended_ops { * On failure ignore the error. */ #define V9FS_SM_NONE 0x00000010 #define V9FS_RDONLY 0x00000020 #define V9FS_SEC_MASK 0x0000001C typedef struct FsContext { uid_t uid; Loading @@ -76,6 +78,8 @@ typedef struct V9fsPath { char *data; } V9fsPath; typedef union V9fsFidOpenState V9fsFidOpenState; void cred_init(FsCred *); typedef struct FileOperations Loading @@ -92,22 +96,26 @@ typedef struct FileOperations const char *, FsCred *); int (*link)(FsContext *, V9fsPath *, V9fsPath *, const char *); int (*setuid)(FsContext *, uid_t); int (*close)(FsContext *, int); int (*closedir)(FsContext *, DIR *); DIR *(*opendir)(FsContext *, V9fsPath *); int (*open)(FsContext *, V9fsPath *, int); int (*open2)(FsContext *, V9fsPath *, const char *, int, FsCred *); void (*rewinddir)(FsContext *, DIR *); off_t (*telldir)(FsContext *, DIR *); int (*readdir_r)(FsContext *, DIR *, struct dirent *, struct dirent **); void (*seekdir)(FsContext *, DIR *, off_t); ssize_t (*preadv)(FsContext *, int, const struct iovec *, int, off_t); ssize_t (*pwritev)(FsContext *, int, const struct iovec *, int, off_t); int (*close)(FsContext *, V9fsFidOpenState *); int (*closedir)(FsContext *, V9fsFidOpenState *); int (*opendir)(FsContext *, V9fsPath *, V9fsFidOpenState *); int (*open)(FsContext *, V9fsPath *, int, V9fsFidOpenState *); int (*open2)(FsContext *, V9fsPath *, const char *, int, FsCred *, V9fsFidOpenState *); void (*rewinddir)(FsContext *, V9fsFidOpenState *); off_t (*telldir)(FsContext *, V9fsFidOpenState *); int (*readdir_r)(FsContext *, V9fsFidOpenState *, struct dirent *, struct dirent **); void (*seekdir)(FsContext *, V9fsFidOpenState *, off_t); ssize_t (*preadv)(FsContext *, V9fsFidOpenState *, const struct iovec *, int, off_t); ssize_t (*pwritev)(FsContext *, V9fsFidOpenState *, const struct iovec *, int, off_t); int (*mkdir)(FsContext *, V9fsPath *, const char *, FsCred *); int (*fstat)(FsContext *, int, struct stat *); int (*fstat)(FsContext *, V9fsFidOpenState *, struct stat *); int (*rename)(FsContext *, const char *, const char *); int (*truncate)(FsContext *, V9fsPath *, off_t); int (*fsync)(FsContext *, int, int); int (*fsync)(FsContext *, V9fsFidOpenState *, int); int (*statfs)(FsContext *s, V9fsPath *path, struct statfs *stbuf); ssize_t (*lgetxattr)(FsContext *, V9fsPath *, const char *, void *, size_t); Loading
fsdev/qemu-fsdev.c +7 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ static QTAILQ_HEAD(FsDriverEntry_head, FsDriverListEntry) fsdriver_entries = static FsDriverTable FsDrivers[] = { { .name = "local", .ops = &local_ops}, { .name = "handle", .ops = &handle_ops}, { .name = "synth", .ops = &synth_ops}, }; int qemu_fsdev_add(QemuOpts *opts) Loading @@ -35,7 +36,7 @@ int qemu_fsdev_add(QemuOpts *opts) const char *path = qemu_opt_get(opts, "path"); const char *sec_model = qemu_opt_get(opts, "security_model"); const char *writeout = qemu_opt_get(opts, "writeout"); bool ro = qemu_opt_get_bool(opts, "readonly", 0); if (!fsdev_id) { fprintf(stderr, "fsdev: No id specified\n"); Loading Loading @@ -86,6 +87,11 @@ int qemu_fsdev_add(QemuOpts *opts) fsle->fse.export_flags |= V9FS_IMMEDIATE_WRITEOUT; } } if (ro) { fsle->fse.export_flags |= V9FS_RDONLY; } else { fsle->fse.export_flags &= ~V9FS_RDONLY; } if (strcmp(fsdriver, "local")) { goto done; Loading
fsdev/qemu-fsdev.h +1 −0 Original line number Diff line number Diff line Loading @@ -53,4 +53,5 @@ int qemu_fsdev_add(QemuOpts *opts); FsDriverEntry *get_fsdev_fsentry(char *id); extern FileOperations local_ops; extern FileOperations handle_ops; extern FileOperations synth_ops; #endif