Date: Thu, 9 Dec 2004 16:18:55 +0100 From: =?ISO-8859-1?Q?Bj=F6rn_Gr=F6nvall?= <bg@sics.se> To: Bruce M Simpson <bms@spc.org>, alfred@FreeBSD.org Cc: dnelson@allantgroup.com Subject: Re: Linux compatible rpc.lockd Message-ID: <20041209161855.30952220@manian.sics.se> In-Reply-To: <20041125215225.GF733@empiric.icir.org> References: <20041125201812.609e50f9@manian.sics.se> <20041125215225.GF733@empiric.icir.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 25 Nov 2004 13:52:25 -0800 Bruce M Simpson <bms@spc.org> wrote: Hi all, > On Thu, Nov 25, 2004 at 08:18:12PM +0100, Björn Grönvall wrote: > > I have made a patch to address PR kern/56461, in short the patch > > provides two different options to be compatible with Linux lockd > > implementations. It can also serve as a basis for a future more robust > > rpc.lockd. > > Thank you for this. I looked at this around 8 months ago but abandoned > further work on it because the approach I was taking required that > nfs be refactored to use the nmount() API, and because I am not currently > using NFS. It looks as though the two options implemented here helps to > address the problems I was having with making sure Linux servers got > the right lock cookie response. > > Have you tested this in production and does it work well? If so I believe > it should be committed, but I'd defer to Alfred for further review. I now believe that the patch has been tested enough. Its been running on a rather busy fileserver for almost 3 weeks now and we have observed no problems this far. To ensure that rpc.lockd works correctly on 64 bit machines I think this patch should also be applied. Cheers, Björn --- kern.c~ Thu Nov 25 19:43:44 2004 +++ kern.c Fri Nov 26 14:16:17 2004 @@ -44,6 +44,7 @@ #include <pwd.h> #include <stdio.h> #include <stdlib.h> +#include <assert.h> #include <string.h> #include <syslog.h> #include <unistd.h> @@ -290,6 +291,12 @@ } res; int cookie_len; + /* union XXX */ + assert((void *)&res.res.cookie == &res.res4.cookie); + assert((void *)&res.res.stat.stat == &res.res4.stat.stat); + assert((void *)&res.res.stat.nlm_testrply_u.holder.svid == + &res.res4.stat.nlm4_testrply_u.holder.svid); + if (asynchronous_client_rpc) cookie_len = client_cookie_len; /* Long cookies */ else @@ -388,6 +395,10 @@ } res; int cookie_len; + /* union XXX */ + assert((void *)&res.res.cookie == &res.res4.cookie); + assert((void *)&res.res.stat.stat == &res.res4.stat.stat); + if (asynchronous_client_rpc) cookie_len = client_cookie_len; /* Long cookies */ else @@ -493,6 +504,10 @@ } res; int cookie_len; + /* union XXX */ + assert((void *)&res.res.cookie == &res.res4.cookie); + assert((void *)&res.res.stat.stat == &res.res4.stat.stat); + if (asynchronous_client_rpc) cookie_len = client_cookie_len; /* Long cookies */ else @@ -560,7 +575,7 @@ } else { touch_client(cli); lock_answer(msg->lm_msg_ident.pid, - &res.res.cookie, + &res.res.cookie, /* union XXX */ res.res.stat.stat, NULL, nlm_version); -- _ _ ,_______________. Bjorn Gronvall (Björn Grönvall) /_______________/| Swedish Institute of Computer Science | || PO Box 1263, S-164 29 Kista, Sweden | Schroedingers || Email: bg@sics.se, Phone +46 -8 633 15 25 | Cat |/ Cellular +46 -70 768 06 35, Fax +46 -8 751 72 30 '---------------'
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041209161855.30952220>