Re: Re: LOCK Fixes/Break on FreeBSD 4.2-STABLE - Mailing list pgsql-hackers

From Alfred Perlstein
Subject Re: Re: LOCK Fixes/Break on FreeBSD 4.2-STABLE
Date
Msg-id 20001205020001.I8051@fw.wintelcom.net
Whole thread Raw
In response to Re: LOCK Fixes/Break on FreeBSD 4.2-STABLE  (Larry Rosenman <ler@lerctr.org>)
Responses Re: Re: LOCK Fixes/Break on FreeBSD 4.2-STABLE  (Larry Rosenman <ler@lerctr.org>)
Re: Re: LOCK Fixes/Break on FreeBSD 4.2-STABLE  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
* Larry Rosenman <ler@lerctr.org> [001128 20:44] wrote:
> * Tom Lane <tgl@sss.pgh.pa.us> [001128 22:31]:
> > Larry Rosenman <ler@lerctr.org> writes:
> > > The last batch of commits break on FreeBSD 4.2-STABLE. 
> > > /usr/include/machine/lock.h:148: conflicting types for `s_lock'
> > > ../../../src/include/storage/s_lock.h:402: previous declaration of `s_lock'
> > 
> > That's odd.  s_lock has been declared the same way right along in our
> > code; I didn't change it.  Can you see what's changed to cause a
> > conflict where there was none before?
> > 
> >             regards, tom lane
> Other things that may be an issue:
> 
> 1) BINUTILS 2.10.1
> 2) OPENSSL 0.9.6 
> 
> both just MFC'd into FreeBSD recently, but I believe we built until
> tonite. 
> 
> I can make you an account on the box if you'd like....

Grr, couldn't find the original message.  I think you thought
you solved your problem with building on FreeBSD, however I
think you just forgot to compile with perl support enabled.

When I compiled with perl support it broke.  This isn't a 
postgresql bug, nor a FreeBSD bug although the fault lies
mostly with FreeBSD for polluting the C namespace a _lot_
when sys/mount.h is included.

What happens is the the perl code brings in perl.h which brings
in sys/mount.h, sys/mount.h includes sys/lock.h because our
kernel structure "mount" has a VFS lock in it, VFS locks happen
to contain spinlocks (simplelocks) and one of our our functions
to manipulate the simplelocks is called s_lock().  This causes
a namespace conflict which causes the compile error.

Anyhow, to address the problem I've removed struct mount from
userland visibility in both FreeBSD 5.x (current) and FreeBSD 4.x
(stable).

Things should work now but let me know if you have any other
problems.

And thanks for pointing it out and offering to help track it
down.

here's the patch if you don't want to cvsup your machine all the
way.

Index: sys/sys/mount.h
===================================================================
RCS file: /home/ncvs/src/sys/sys/mount.h,v
retrieving revision 1.89
diff -u -r1.89 mount.h
--- sys/sys/mount.h    2000/01/19 06:07:34    1.89
+++ sys/sys/mount.h    2000/12/04 20:00:54
@@ -46,7 +46,9 @@#endif /* !_KERNEL */#include <sys/queue.h>
+#ifdef _KERNEL#include <sys/lock.h>
+#endiftypedef struct fsid { int32_t val[2]; } fsid_t;    /* file system id type */
@@ -99,6 +101,7 @@    long    f_spare[2];        /* unused spare */};
+#ifdef _KERNEL/* * Structure per mounted file system.  Each mounted file system has an * array of operations and an
instancerecord.  The file systems are
 
@@ -122,6 +125,7 @@    time_t        mnt_time;        /* last time written*/    u_int        mnt_iosize_max;        /*
maxIO request size */};
 
+#endif /* _KERNEL *//* * User specifiable flags.
Index: usr.bin/fstat/cd9660.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/fstat/cd9660.c,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 cd9660.c
--- usr.bin/fstat/cd9660.c    2000/07/02 10:20:24    1.1.2.1
+++ usr.bin/fstat/cd9660.c    2000/12/04 23:35:21
@@ -46,7 +46,9 @@#include <sys/stat.h>#include <sys/time.h>#include <sys/vnode.h>
+#define _KERNEL#include <sys/mount.h>
+#undef _KERNEL#include <isofs/cd9660/cd9660_node.h>
Index: usr.bin/fstat/fstat.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/fstat/fstat.c,v
retrieving revision 1.21.2.2
diff -u -r1.21.2.2 fstat.c
--- usr.bin/fstat/fstat.c    2000/07/02 10:28:38    1.21.2.2
+++ usr.bin/fstat/fstat.c    2000/12/04 20:01:08
@@ -66,8 +66,8 @@#include <sys/file.h>#include <ufs/ufs/quota.h>#include <ufs/ufs/inode.h>
-#undef _KERNEL#include <sys/mount.h>
+#undef _KERNEL#include <nfs/nfsproto.h>#include <nfs/rpcv2.h>#include <nfs/nfs.h>

-- 
-Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]
"I have the heart of a child; I keep it in a jar on my desk."


pgsql-hackers by date:

Previous
From: Zeugswetter Andreas SB
Date:
Subject: AW: beta testing version
Next
From: Larry Rosenman
Date:
Subject: Re: Re: LOCK Fixes/Break on FreeBSD 4.2-STABLE