2007-11-30 17:16:51

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [RFC,PATCH 0/8] RDMA Transport Provider

On Fri, Nov 30, 2007 at 09:59:28AM -0600, Tom Tucker wrote:
>=20
> On Thu, 2007-11-29 at 23:45 -0500, J. Bruce Fields wrote:
> > On Thu, Nov 29, 2007 at 04:44:12PM -0600, Tom Tucker wrote:
> > > This patchset implements the RDMA Transport Driver for the=20
> [...snip...]
>=20
> I resent the two offending patches with fixes as required.

Thanks! Applied and pushed out.

>=20
> > I still need the following to get it to compile. Also, I'm getting
> > these warnings:
> >=20
> > net/sunrpc/svc_rdma_transport.c: In function =E2=80=98dto_tasklet_f=
unc=E2=80=99:
> > net/sunrpc/svc_rdma_transport.c:232: warning: passing argument 2 of=
=E2=80=98test_and_clear_bit=E2=80=99 from incompatible pointer type
> > net/sunrpc/svc_rdma_transport.c:241: warning: passing argument 2 of=
=E2=80=98constant_test_bit=E2=80=99 from incompatible pointer type
> > net/sunrpc/svc_rdma_transport.c:241: warning: passing argument 2 of=
=E2=80=98variable_test_bit=E2=80=99 from incompatible pointer type
> > net/sunrpc/svc_rdma_transport.c:245: warning: passing argument 2 of=
=E2=80=98test_and_clear_bit=E2=80=99 from incompatible pointer type
> > net/sunrpc/svc_rdma_transport.c: In function =E2=80=98rq_comp_handl=
er=E2=80=99:
> > net/sunrpc/svc_rdma_transport.c:271: warning: passing argument 2 of=
=E2=80=98set_bit=E2=80=99 from incompatible pointer type
> > net/sunrpc/svc_rdma_transport.c: In function =E2=80=98sq_comp_handl=
er=E2=80=99:
> > net/sunrpc/svc_rdma_transport.c:382: warning: passing argument 2 of=
=E2=80=98set_bit=E2=80=99 from incompatible pointer type
> > net/sunrpc/svc_rdma_transport.c: In function =E2=80=98rdma_cma_hand=
ler=E2=80=99:
> > net/sunrpc/svc_rdma_transport.c:617: warning: passing argument 2 of=
=E2=80=98clear_bit=E2=80=99 from incompatible pointer type
> > net/sunrpc/svc_rdma_transport.c: In function =E2=80=98svc_rdma_acce=
pt=E2=80=99:
> > net/sunrpc/svc_rdma_transport.c:848: warning: passing argument 2 of=
=E2=80=98set_bit=E2=80=99 from incompatible pointer type
> >=20
>=20
> I'm mystified as to why I didn't get these warnings. I built on a 64 =
bit
> machine. It seems like that would give the warning since unsigned lon=
g
> isn't even the same size as int.

Yeah, I can't see how any compiler could miss that. How do you usually
build?

--b.


2007-11-30 19:37:29

by Tom Tucker

[permalink] [raw]
Subject: Re: [RFC,PATCH 0/8] RDMA Transport Provider


On Fri, 2007-11-30 at 12:16 -0500, J. Bruce Fields wrote:
> On Fri, Nov 30, 2007 at 09:59:28AM -0600, Tom Tucker wrote:
> >
[...snip...]
> >
> > I'm mystified as to why I didn't get these warnings. I built on a 64 bit
> > machine. It seems like that would give the warning since unsigned long
> > isn't even the same size as int.
>
> Yeah, I can't see how any compiler could miss that. How do you usually
> build?

>From emacs on my desktop...

ssh root@victim "cd /home/tom/src/linux-2.6 && ntpdate <servername> && make && make modules_install && make install"

The target system is an AMD64. Here's uname -a...

Linux demo1 2.6.24-rc3-merged-svc #12 SMP Fri Nov 30 08:51:15 CST 2007 x86_64 x86_64 x86_64 GNU/Linux

The compiler version..

gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)

The output after changing the type back to int ...

ssh root@demo1 "cd /home/tom/src/linux-2.6 && ntpdate dell3 && make"
30 Nov 11:21:38 ntpdate[4155]: step time server 10.10.0.102 offset -1.150670 sec
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/linux/compile.h
CC [M] net/sunrpc/svc_rdma.o
CC [M] net/sunrpc/svc_rdma_transport.o
CC [M] net/sunrpc/svc_rdma_marshal.o
CC [M] net/sunrpc/svc_rdma_sendto.o
CC [M] net/sunrpc/svc_rdma_recvfrom.o
LD [M] net/sunrpc/sunrpc.o
LD [M] net/sunrpc/svcrdma.o
Kernel: arch/x86/boot/bzImage is ready (#12)
Building modules, stage 2.
MODPOST 1294 modules
LD [M] net/sunrpc/sunrpc.ko
LD [M] net/sunrpc/svcrdma.ko

No warning...

>
> --b.


2007-11-30 20:45:58

by Tom Tucker

[permalink] [raw]
Subject: Re: [RFC,PATCH 0/8] RDMA Transport Provider


On Fri, 2007-11-30 at 12:16 -0500, J. Bruce Fields wrote:
> On Fri, Nov 30, 2007 at 09:59:28AM -0600, Tom Tucker wrote:
> >=20

[...snip...]

> Thanks! Applied and pushed out.
>=20

thank you too.

> >=20
> > > I still need the following to get it to compile. Also, I'm getti=
ng
> > > these warnings:
> > >=20

So here's an irony for you... if you're on a 32 bit x86 platform you ge=
t
this definition for test_and_clear_bit:

*** include/asm-x86/bitops_32.h:
test_and_clear_bit[222] static inline int test_and_clear_bit(int=
nr, volatile unsigned long * addr)

which will give you an error if you use &int, but if you're on a 64b x8=
6 platform,
you get this definition:

*** include/asm-x86/bitops_64.h:
test_and_clear_bit[211] static inline int test_and_clear_bit(int=
nr, volatile void *addr)

That's why I didn't see the warning, because the parameter type on a 64=
b
system is void *. This looks like a bug to me, but maybe someone can
explain the reasoning?

> > > net/sunrpc/svc_rdma_transport.c: In function =E2=80=98dto_tasklet=
_func=E2=80=99:
> > > net/sunrpc/svc_rdma_transport.c:232: warning: passing argument 2 =
of =E2=80=98test_and_clear_bit=E2=80=99 from incompatible pointer type
> > > net/sunrpc/svc_rdma_transport.c:241: warning: passing argument 2 =
of =E2=80=98constant_test_bit=E2=80=99 from incompatible pointer type
> > > net/sunrpc/svc_rdma_transport.c:241: warning: passing argument 2 =
of =E2=80=98variable_test_bit=E2=80=99 from incompatible pointer type
> > > net/sunrpc/svc_rdma_transport.c:245: warning: passing argument 2 =
of =E2=80=98test_and_clear_bit=E2=80=99 from incompatible pointer type
> > > net/sunrpc/svc_rdma_transport.c: In function =E2=80=98rq_comp_han=
dler=E2=80=99:
> > > net/sunrpc/svc_rdma_transport.c:271: warning: passing argument 2 =
of =E2=80=98set_bit=E2=80=99 from incompatible pointer type
> > > net/sunrpc/svc_rdma_transport.c: In function =E2=80=98sq_comp_han=
dler=E2=80=99:
> > > net/sunrpc/svc_rdma_transport.c:382: warning: passing argument 2 =
of =E2=80=98set_bit=E2=80=99 from incompatible pointer type
> > > net/sunrpc/svc_rdma_transport.c: In function =E2=80=98rdma_cma_ha=
ndler=E2=80=99:
> > > net/sunrpc/svc_rdma_transport.c:617: warning: passing argument 2 =
of =E2=80=98clear_bit=E2=80=99 from incompatible pointer type
> > > net/sunrpc/svc_rdma_transport.c: In function =E2=80=98svc_rdma_ac=
cept=E2=80=99:
> > > net/sunrpc/svc_rdma_transport.c:848: warning: passing argument 2 =
of =E2=80=98set_bit=E2=80=99 from incompatible pointer type
> > >=20
> >=20
> > I'm mystified as to why I didn't get these warnings. I built on a 6=
4 bit
> > machine. It seems like that would give the warning since unsigned l=
ong
> > isn't even the same size as int.
>=20
> Yeah, I can't see how any compiler could miss that. How do you usual=
ly
> build?
>=20
> --b.
> -
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" =
in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html