| From f03969b952bc2aaf9f4445b6da28aebb0a9abde5 Mon Sep 17 00:00:00 2001 |
| From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> |
| Date: Sun, 4 Dec 2011 22:35:27 +0530 |
| Subject: [PATCH 03/25] hw/9pfs: Improve portability to older systems |
| |
| handle fs driver require a set of newly added syscalls. Don't |
| Compile handle FS driver if those syscalls are not available. |
| Instead of adding #ifdef for all those syscalls we check for |
| open by handle syscall. If that is available then rest of the |
| syscalls used by the driver should be available. |
| |
| Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> |
| |
| Makefile.objs | 4 ++-- |
| fsdev/qemu-fsdev.c | 2 ++ |
| hw/9pfs/virtio-9p-handle.c | 33 --------------------------------- |
| 3 files changed, 4 insertions(+), 35 deletions(-) |
| |
| diff --git a/Makefile.objs b/Makefile.objs |
| index d7a6539..3a699ee 100644 |
| |
| |
| @@ -310,8 +310,8 @@ hw-obj-$(CONFIG_SOUND) += $(sound-obj-y) |
| 9pfs-nested-$(CONFIG_VIRTFS) += virtio-9p-local.o virtio-9p-xattr.o |
| 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 |
| +9pfs-nested-$(CONFIG_VIRTFS) += coxattr.o virtio-9p-synth.o |
| +9pfs-nested-$(CONFIG_OPEN_BY_HANDLE) += virtio-9p-handle.o |
| |
| hw-obj-$(CONFIG_REALLY_VIRTFS) += $(addprefix 9pfs/, $(9pfs-nested-y)) |
| $(addprefix 9pfs/, $(9pfs-nested-y)): QEMU_CFLAGS+=$(GLIB_CFLAGS) |
| diff --git a/fsdev/qemu-fsdev.c b/fsdev/qemu-fsdev.c |
| index 7fd2aa7..6684f7e 100644 |
| |
| |
| @@ -23,7 +23,9 @@ static QTAILQ_HEAD(FsDriverEntry_head, FsDriverListEntry) fsdriver_entries = |
| |
| static FsDriverTable FsDrivers[] = { |
| { .name = "local", .ops = &local_ops}, |
| +#ifdef CONFIG_OPEN_BY_HANDLE |
| { .name = "handle", .ops = &handle_ops}, |
| +#endif |
| { .name = "synth", .ops = &synth_ops}, |
| }; |
| |
| diff --git a/hw/9pfs/virtio-9p-handle.c b/hw/9pfs/virtio-9p-handle.c |
| index 7644ae5..a62f690 100644 |
| |
| |
| @@ -45,7 +45,6 @@ struct handle_data { |
| int handle_bytes; |
| }; |
| |
| -#ifdef CONFIG_OPEN_BY_HANDLE |
| static inline int name_to_handle(int dirfd, const char *name, |
| struct file_handle *fh, int *mnt_id, int flags) |
| { |
| @@ -56,38 +55,6 @@ static inline int open_by_handle(int mountfd, const char *fh, int flags) |
| { |
| return open_by_handle_at(mountfd, (struct file_handle *)fh, flags); |
| } |
| -#else |
| - |
| -struct rpl_file_handle { |
| - unsigned int handle_bytes; |
| - int handle_type; |
| - unsigned char handle[0]; |
| -}; |
| -#define file_handle rpl_file_handle |
| - |
| -#ifndef AT_REMOVEDIR |
| -#define AT_REMOVEDIR 0x200 |
| -#endif |
| -#ifndef AT_EMPTY_PATH |
| -#define AT_EMPTY_PATH 0x1000 /* Allow empty relative pathname */ |
| -#endif |
| -#ifndef O_PATH |
| -#define O_PATH 010000000 |
| -#endif |
| - |
| -static inline int name_to_handle(int dirfd, const char *name, |
| - struct file_handle *fh, int *mnt_id, int flags) |
| -{ |
| - errno = ENOSYS; |
| - return -1; |
| -} |
| - |
| -static inline int open_by_handle(int mountfd, const char *fh, int flags) |
| -{ |
| - errno = ENOSYS; |
| - return -1; |
| -} |
| -#endif |
| |
| static int handle_update_file_cred(int dirfd, const char *name, FsCred *credp) |
| { |
| -- |
| 1.7.7.5 |
| |