[ENBD] enbd_ioctl 2.6.9 kernel fails to modprobe enbd - seg fault
scunacc
scunacc at yahoo.com
Wed Mar 1 19:33:33 MST 2006
Dear Peter et al.
Thank you for your reply.
> > I am having a problem with building ebnd and a 2.6.9 kernel.
> It shouldn't fail - I compile against 2.6.8 and 2.6.12 (for example)
> with no problems. Is there something special about 2.6.9 that would
> cause a problem?
I have read elsewhere over the last few weeks of multiple kernel
building (of 2.6.9) that 2.6.9 has a few odd problems. Yes.
However, I am stuck with it because of the bproc patches out of
Clustermatic 5 at the moment.
The stock kernel on the system is 2.6.11, and I'd much rather use that
or later, but that's how it is I'm afraid. I have looked at patching the
bproc stuff onto a later kernel, but it's hours that I can't commit to
it on the project right now.
> > The compiler rev there is: gcc version 4.0.0 20050519 (Red Hat 4.0.0-8)
> I wouldn't trust that an inch, but that said, it's probably just
> complaining about something I don't notice. Can you show meteh compile
> problem?
Yes, I will - as I can - tomorrow hopefully.
> > which led me to move a couple of the static function definitions from
> > their placement inside functions to just before them. gcc 4 is picky
> > that way.
>
> Can you let me see the error? There's nothing wrong with a local static
> fn.
No, I know, - but gcc 4 thinks there is! :-|
Same with forward declarations that use [] instead of * (not in your
code, but others I've had to mangle to make work with this particular
gcc 4.0
Again, it's a case of having committed to a particular solution that I
can't now easily back out of (not for some months anyway).
> > Noting a couple of changes mentioned by others, I also put the
> >
> > > #ifdef __KERNEL_STRICT_NAMES
> > >
> > > #ifdef __CHECKER__
> > > #define __bitwise __attribute__((bitwise))
> > > #else
> > > #define __bitwise
> > > #endif
>
> I've no idea about that. Never heard of it!
>
> > > typedef __u16 __bitwise __le16;
> > > typedef __u16 __bitwise __be16;
> > > typedef __u32 __bitwise __le32;
> > > typedef __u32 __bitwise __be32;
> > > typedef __u64 __bitwise __le64;
> > > typedef __u64 __bitwise __be64;
>
> Uh ... none of those are used aywhere, are they?
These are used inside something (can't recall w/o checking) that's
included by cdrom.h which you include in ioctl.c
I saw this answer posted by someone else - whether on enbd list as I
searched it or somewhere else on the web. Anyhow, I added that and it
did indeed fix the (identical) problem.
> It sounds to me
> like you have some RH adaptations in the kernel ...
Not RH, but certainly some, - the bproc ones for example.
Also, this *particular* build is running in vmware, so the vmware
drivers are also loaded, but, the same kernel will be net booted across
a bproc cluster, on "real" hardware. (It has to work on both).
> check the compile
> against a non-RH kernel to make sure.
Hmmm. That might be tricky on that system. May be able to on my own home
system running Mandriva 2006 with a 2.6.12 kernel. I'll have to see if I
can arrange that.
> And confirm that 2.6.8.1 compiles
> OK ... I have that. We might as well check that we agree. And compile
> with -O1 for luck.
Now that latter tip is interesting. Yes. I've seen other posts about
2.6.9 (or it might have been gcc 4) on *occasion* being unhappy with a
-O2 compile. Hmmm. I'll look at that as a possibility too.
Many thanks.
(I'll try and post a few more details tomorrow. It's kinda late here now
and I've just replied after getting home this evening.)
Kind regards
Derek Jones.
More information about the ENBD
mailing list