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>