From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>, qemu-devel@nongnu.org
Cc: zwu.kernel@gmail.com, stefanha@linux.vnet.ibm.com,
kvm@vger.kernel.org, jvrao@us.ibm.com
Subject: Re: [Qemu-devel] [PATCH] virtio-9p: fix QEMU build break
Date: Mon, 10 Oct 2011 22:19:31 +0530 [thread overview]
Message-ID: <87obxon65g.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <87r52kn6t2.fsf@linux.vnet.ibm.com>
On Mon, 10 Oct 2011 22:05:21 +0530, "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> wrote:
> On Mon, 10 Oct 2011 18:30:28 +0800, Zhi Yong Wu <wuzhy@linux.vnet.ibm.com> wrote:
> > qemu build break due to the redefinition of struct file_handle. My qemu.git/HEAD is 8acbc9b21d757a6be4f8492e547b8159703a0547
> >
> > Below is the log:
> > [root@f15 qemu]# make
> > CC qapi-generated/qga-qapi-types.o
> > LINK qemu-ga
> > CC libhw64/9pfs/virtio-9p-handle.o
> > /home/zwu/work/virt/qemu/hw/9pfs/virtio-9p-handle.c:31:8: error: redefinition of "struct file_handle"
> > /usr/include/bits/fcntl.h:254:8: note: originally defined here
> > make[1]: *** [9pfs/virtio-9p-handle.o] Error 1
> > make: *** [subdir-libhw64] Error 2
> >
> > [root@f15 qemu]# rpm -qf /usr/include/bits/fcntl.h
> > glibc-headers-2.13.90-9.x86_64
> >
>
> Is this a backported glibc ? On my ubuntu system glibc 2.13 doesn't
> provide struct file_handle. I also checked glib repo at
> http://repo.or.cz/w/glibc.git. The commit introducing struct file_handle
> is
>
> $ git describe --contains 158648c0bdda281e252a27c0200dd0ea6f4e0215
> glibc-2.14~200
>
>
How about the below patch. This means that handle driver will only work
with latest glibc. Even if i have latest kernel, with an older glibc
handle fs driver backed will be disabled.
diff --git a/configure b/configure
index 24b8df4..0216c53 100755
--- a/configure
+++ b/configure
@@ -2551,6 +2551,18 @@ EOF
fi
##########################################
+# check if we have open_by_handle_at
+
+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); }
+EOF
+if compile_prog "" "" ; then
+ open_by_handle_at=yes
+fi
+
+##########################################
# End of CC checks
# After here, no more $cc or $ld runs
@@ -3029,6 +3041,10 @@ if test "$ucontext_coroutine" = "yes" ; then
echo "CONFIG_UCONTEXT_COROUTINE=y" >> $config_host_mak
fi
+if test "$open_by_handle_at" = "yes" ; then
+ echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
+fi
+
# USB host support
case "$usb" in
linux)
diff --git a/hw/9pfs/virtio-9p-handle.c b/hw/9pfs/virtio-9p-handle.c
index 68e1d9b..bd73d31 100644
--- a/hw/9pfs/virtio-9p-handle.c
+++ b/hw/9pfs/virtio-9p-handle.c
@@ -30,13 +30,24 @@ struct handle_data {
int handle_bytes;
};
-#if __GLIBC__ <= 2 && __GLIBC_MINOR__ < 14
+#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)
+{
+ return name_to_handle_at(dirfd, name, fh, mnt_id, flags);
+}
+
+static inline int open_by_handle(int mountfd, const char *fh, int flags)
+{
+ return open_by_handle_at(mountfd, fh, flags);
+}
+#else
+
struct file_handle {
- unsigned int handle_bytes;
- int handle_type;
- unsigned char handle[0];
+ unsigned int handle_bytes;
+ int handle_type;
+ unsigned char handle[0];
};
-#endif
#ifndef AT_EMPTY_PATH
#define AT_EMPTY_PATH 0x1000 /* Allow empty relative pathname */
@@ -45,28 +56,6 @@ struct file_handle {
#define O_PATH 010000000
#endif
-#ifndef __NR_name_to_handle_at
-#if defined(__i386__)
-#define __NR_name_to_handle_at 341
-#define __NR_open_by_handle_at 342
-#elif defined(__x86_64__)
-#define __NR_name_to_handle_at 303
-#define __NR_open_by_handle_at 304
-#endif
-#endif
-
-#ifdef __NR_name_to_handle_at
-static inline int name_to_handle(int dirfd, const char *name,
- struct file_handle *fh, int *mnt_id, int flags)
-{
- return syscall(__NR_name_to_handle_at, dirfd, name, fh, mnt_id, flags);
-}
-
-static inline int open_by_handle(int mountfd, const char *fh, int flags)
-{
- return syscall(__NR_open_by_handle_at, mountfd, fh, flags);
-}
-#else
static inline int name_to_handle(int dirfd, const char *name,
struct file_handle *fh, int *mnt_id, int flags)
{
next prev parent reply other threads:[~2011-10-10 16:50 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-10 10:30 [Qemu-devel] [PATCH] virtio-9p: fix QEMU build break Zhi Yong Wu
2011-10-10 16:35 ` Aneesh Kumar K.V
2011-10-10 16:49 ` Aneesh Kumar K.V [this message]
2011-10-11 6:09 ` Zhi Yong Wu
2011-10-18 3:46 ` David Gibson
2011-10-18 4:59 ` Aneesh Kumar K.V
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87obxon65g.fsf@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=jvrao@us.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@linux.vnet.ibm.com \
--cc=wuzhy@linux.vnet.ibm.com \
--cc=zwu.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).