Index: main.c =================================================================== RCS file: /cvs/plan9/src/cmd/9pfuse/main.c,v retrieving revision 1.14 diff -u -r1.14 main.c --- main.c 23 Nov 2007 21:28:33 -0000 1.14 +++ main.c 27 Mar 2008 02:47:39 -0000 @@ -24,11 +24,19 @@ #endif #ifndef O_LARGEFILE -# if defined(__linux__) -# define O_LARGEFILE 0100000 /* Sigh */ -# else -# define O_LARGEFILE 0 -# endif +# define O_LARGEFILE 0 +#endif + +/* Work around glibc's broken which defines + * O_LARGEFILE to 0 on 64 bit architectures. But, on those same + * architectures, linux _forces_ O_LARGEFILE (which is always + * 0100000 in the kernel) at each file open. FUSE is all too + * happy to pass the flag onto us, where we'd have no idea what + * to do with it if we trusted glibc. + */ +#if defined(__linux__) +# undef O_LARGEFILE +# define O_LARGEFILE 0100000 #endif #ifndef O_CLOEXEC