Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 06 Sep 2001 23:50:17 -0700
From:      Peter Wemm <peter@wemm.org>
To:        Poul-Henning Kamp <phk@critter.freebsd.dk>
Cc:        "John W. De Boskey" <jwd@FreeBSD.ORG>, Current List <freebsd-current@FreeBSD.ORG>
Subject:   Re: __getcwd & errno 20 (Not a directory) vfs_cache.c 
Message-ID:  <20010907065017.A22A6380C@overcee.netplex.com.au>
In-Reply-To: <86509.999840257@critter> 

next in thread | previous in thread | raw e-mail | index | archive | help
Poul-Henning Kamp wrote:
> 
> You are not supposed to call __getcwd() directly.

Yes, but it would be an excellent junior-kernel-hacker task to make it work
in all cases, ie: manually searching parent directories.  netbsd does this,
as does linux, and if we're going to emulate the linux getcwd(2) syscall
then we need it.  The NetBSD code is probably a good place to start for
pointers, but it wont be directly usable due to name-cache differences.

> Poul-Henning
> 
> In message <20010906211532.A52687@FreeBSD.org>, "John W. De Boskey" writes:
> >Hi,
> >
> >   I'm in the middle of trying to debug a java problem
> >and have found something I don't quite understand.
> >
> >   Basically, __getcwd() is returning errno 20, Not
> >a directory.  man getcwd doesn't list ENOTDIR so I
> >started looking in the sources and found kern/vfs_cache.c:
> >
> >                if (vp->v_dd->v_id != vp->v_ddid) {
> >                        numcwdfail1++;
> >                        free(buf, M_TEMP);
> >                        return (ENOTDIR);
> >                }
> >
> >
> >   Could someone who is more familiar with the vfs
> >layers provide some pointers as to what is being
> >done here? The code is instrumented, and sysctl
> >has the following to say:
> >
> >% sysctl -a | grep cwd
> >vfs.cache.numcwdcalls: 225014
> >vfs.cache.numcwdfail1: 845           1 -> ENOTDIR
> >vfs.cache.numcwdfail2: 6775          2 -> ENOENT
> >vfs.cache.numcwdfail3: 0
> >vfs.cache.numcwdfail4: 0
> >vfs.cache.numcwdfound: 217394
> >
> >   The really annoying aspect to this is that it doesn't
> >happen everytime, and happens more often when in a nfs
> >mounted directory vs. a local directory.
> >
> >Thanks!
> >John
> >
> >
> >To Unsubscribe: send mail to majordomo@FreeBSD.org
> >with "unsubscribe freebsd-current" in the body of the message
> >
> 
> -- 
> Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
> phk@FreeBSD.ORG         | TCP/IP since RFC 956
> FreeBSD committer       | BSD since 4.3-tahoe    
> Never attribute to malice what can adequately be explained by incompetence.
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-current" in the body of the message
> 
> 

Cheers,
-Peter
--
Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au
"All of this is for nothing if we don't go to the stars" - JMS/B5


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010907065017.A22A6380C>