lkml.org 
[lkml]   [2010]   [Nov]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: Regression, bisected: sqlite locking failure on nfs
From
Date
On Mon, 2010-11-01 at 14:30 -0400, Chuck Lever wrote:
> On Nov 1, 2010, at 2:19 PM, Nick Bowler wrote:
>
> > On 2010-11-01 14:07 -0400, Chuck Lever wrote:
> >> On Nov 1, 2010, at 1:58 PM, Nick Bowler wrote:
> >>> After installing 2.6.37-rc1, attempting to use sqlite in any capacity on
> >>> NFS gives a locking error:
> >>>
> >>> % echo 'select * from blah;' | sqlite3 blah.sqlite
> >>> Error: near line 1: database is locked
> >>>
> >>> % echo 'create table blargh(INT);' | sqlite3 blargh.sqlite
> >>> Error: near line 1: database is locked
> >>>
> >>> The result is that a lot of high-profile applications which make use of
> >>> sqlite fail mysteriously. Bisection reveals the following, and
> >>> reverting the implicated commit solves the issue:
> >>
> >> Nick, thanks for the report. Is 2.6.37-rc1 running on your clients or
> >> on your server?
> >
> > Sorry for not being clear: the client is running 2.6.37-rc1. The
> > server is running RHEL 5.5.
> >
> >> Does anything interesting appear in the kernel log when your test case
> >> fails?
> >
> > There are no unusual messages on the client... but I just logged into
> > the server and I see lots of messages of the following form:
> >
> > nfsd: request from insecure port (192.168.8.199:35766)!
> > nfsd: request from insecure port (192.168.8.199:35766)!
> > nfsd: request from insecure port (192.168.8.199:35766)!
> > nfsd: request from insecure port (192.168.8.199:35766)!
> > nfsd: request from insecure port (192.168.8.199:35766)!
> >
> > (192.168.8.199 is the address of the failing client). I can only assume
> > that these are a result of my recent issues, since I don't have access
> > to the system log (with timestamps) on that machine.
>
> That's the problem this patch is supposed to prevent. I'll investigate further.
>

I suspect nlmclnt_lookup_host() is to blame. It appears to be the _only_
thing in the kernel that actually sets this 'srcaddr' field, and it sets
it to

const struct sockaddr source = {
.sa_family = AF_UNSPEC,
};

You triggered the bug by removing the line

transport->srcaddr.ss_family = family;

from xs_create_sock().

Trond


\
 
 \ /
  Last update: 2010-11-01 20:27    [W:0.173 / U:0.192 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site