Re: Re: LOCK Fixes/Break on FreeBSD 4.2-STABLE

From: Larry Rosenman <ler(at)lerctr(dot)org>
To: Alfred Perlstein <bright(at)wintelcom(dot)net>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Hackers List <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Re: LOCK Fixes/Break on FreeBSD 4.2-STABLE
Date: 2000-12-05 10:10:58
Message-ID: 20001205041058.A28949@lerami.lerctr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

* Alfred Perlstein <bright(at)wintelcom(dot)net> [001205 04:00]:
> * Larry Rosenman <ler(at)lerctr(dot)org> [001128 20:44] wrote:
> > * Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> [001128 22:31]:
> > > Larry Rosenman <ler(at)lerctr(dot)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.
Actually, perl support was included, and Tom's fix in the
cvs DID fix it, but fixing FreeBSD doesn't hurt. Here is
what I've been configuring with:

./configure --prefix=/home/ler/pg-test --enable-syslog \
--with-CXX --with-perl --enable-multibyte --enable-cassert \
--with-openssl \
--with-includes="/usr/local/include/tcl8.3 /usr/local/include/tk8.3" \
--with-tcl \
--with-tclconfig=/usr/local/lib/tcl8.3 \
--with-tkconfig=/usr/local/lib/tk8.3

>
> 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>
> +#endif
>
> typedef 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 instance record. The file systems are
> @@ -122,6 +125,7 @@
> time_t mnt_time; /* last time written*/
> u_int mnt_iosize_max; /* max IO 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(at)wintelcom(dot)net|alfred(at)freebsd(dot)org]
> "I have the heart of a child; I keep it in a jar on my desk."
--
Larry Rosenman http://www.lerctr.org/~ler
Phone: +1 972-414-9812 E-Mail: ler(at)lerctr(dot)org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Edmar Wiggers 2000-12-05 13:31:29 RE: [HACKERS] Indexing for geographic objects?
Previous Message Alfred Perlstein 2000-12-05 10:00:02 Re: Re: LOCK Fixes/Break on FreeBSD 4.2-STABLE