Re: [GIT BISECT] first bad commit: 1f36f774 Switch !O_CREAT case to use of do_last()

Al Viro
2010-03-24T16:39:51Z

On Wed, Mar 24, 2010 at 06:10:52PM +0200, Boaz Harrosh wrote:
> On 03/24/2010 06:07 PM, Al Viro wrote:
> > On Wed, Mar 24, 2010 at 06:04:56PM +0200, Boaz Harrosh wrote:
> >>> Bloody impressive... Does that happen to underlying fs or to what you
> >>> are seeing via NFS?
> >>
> >> Only via NFS. All local access is fine.
> >>
> >> After the corruption above I can cd to the local mount cp a fresh copy
> >> of .git/index file and play around just fine.
> >> Once I return to the NFS mounted directory, a git status will do it.
> >> It does not matter if caches are cold (Takes a long time) or hot it happens
> >> every time.
> >>
> >> Weird I know, I'm playing some more with it as we speak
> >
> > What happens if you export to box running older kernel *or* from box
> > running older kernel? IOW, is that nfsd or nfs client getting unhappy?
> > I'd suspect the latter, but...
>
>
> Good question, I'm just getting to that because currently it's all
> over localhost (same kernel, BTW inside a UML)
>
> I will try what you said. Please through any other tests on me, if needed.

Very interesting... Just to see which path we are hitting: add
if (IS_ERR(nd->intent.open.file))
printk("foo: %s", pathname);
right after
error = do_lookup(nd, &nd->last, path);
if (error)
goto exit;
in fs/namei.c:do_last() and see whether we are hitting it or not on objects
that get corrupted.