Date: Fri, 6 Nov 2009 17:08:53 +0100 From: Gary Jennejohn <garyj@denx.de> To: Alexander Best <alexbestms@math.uni-muenster.de> Cc: freebsd-hackers@FreeBSD.org, Alexander Best <alexbestms@math.uni-muenster.de>, Alex Dupre <ale@FreeBSD.org> Subject: Re: rmdir(2) and mkdir(2) both return EISDIR for argument "/" Message-ID: <20091106170853.7d0b0b6f@ernst.jennejohn.org> In-Reply-To: <permail-2009110615322280e26a0b00003ff9-a_best01@message-id.uni-muenster.de> References: <4AF42D61.6050403@FreeBSD.org> <permail-2009110615322280e26a0b00003ff9-a_best01@message-id.uni-muenster.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 06 Nov 2009 16:32:22 +0100 (CET) Alexander Best <alexbestms@math.uni-muenster.de> wrote: > Alex Dupre schrieb am 2009-11-06: > > Alexander Best ha scritto: > > > i dug up this old pr > > > http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/59739 > > > I think the EISDIR error is coming from kern/vfs_lookup.c, lookup() > > function with cn_nameptr = "": > > > > /* > > * Check for degenerate name (e.g. / or "") > > * which is a way of talking about a directory, > > * e.g. like "/." or ".". > > */ > > if (cnp->cn_nameptr[0] == '\0') { > > ... > > if (cnp->cn_nameiop != LOOKUP) { > > error = EISDIR; > > goto bad; > > } > > ... > > thanks a lot for finding the problem in the src. what do you think of the > patch attached to this message? after applying it the example code i posted in > my previous message returns the following output (instead of EISDIR): > > rmdir errno: 16 (which is EBUSY) > mkdir errno: 17 (which is EEXIST) > > i don't know if these really are the correct return values, but it's what the > originator of the PR requested. > What if cn_nameiop is != LOOKUP but also neither DELETE nor CREATE, assuming that case is possible? I'd leave the original if-clause at the end to catch that. --- Gary Jennejohn
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20091106170853.7d0b0b6f>