From: Andrea Arcangeli <andrea@suse.de>
To: Andries.Brouwer@cwi.nl
Cc: linux-kernel@vger.kernel.org, viro@math.psu.edu
Subject: Re: `rmdir .` doesn't work in 2.4
Date: Mon, 8 Jan 2001 22:34:45 +0100 [thread overview]
Message-ID: <20010108223445.V27646@athlon.random> (raw)
In-Reply-To: <UTC200101082056.VAA147872.aeb@texel.cwi.nl>
In-Reply-To: <UTC200101082056.VAA147872.aeb@texel.cwi.nl>; from Andries.Brouwer@cwi.nl on Mon, Jan 08, 2001 at 09:56:18PM +0100
On Mon, Jan 08, 2001 at 09:56:18PM +0100, Andries.Brouwer@cwi.nl wrote:
> You think that it fails with EBUSY. That would be allowed but not required:
>
> [EBUSY]: The directory to be removed is currently in use by
> the system or some process and the implementation
> considers this to be an error.
>
> Here we are free to consider this "in use" an error or not.
I think the above is to allow implementations without something like our dcache
to not be declared "broken" w.r.t. specs.
> But in fact it fails with EINVAL, and
>
> [EINVAL]: The path argument contains a last component that is dot.
I can't confirm. The specs I'm checking are here:
http://www.opengroup.org/onlinepubs/007908799/xsh/rmdir.html
They definitely don't say that `rmdir .` must return -EINVAL.
> Indeed, rmdir("P/D") does roughly the following:
> (i) check that P/D is a directory
> (ii) check that P/D does not have entries other than . and ..
> (iii) delete the names . and .. from P/D
> (iv) delete the name D from P
The definition of rmdir according to 2.2.19pre6 and the single unix
specification version 2 is this:
int rmdir(const char *path);
DESCRIPTION
The rmdir() function removes a directory whose name is given by
path. The directory is removed only if it is an empty
directory.
That is strightforward. It doesn't talk about (iv).
> In cases where hard links to directories are permitted,
> it is not even clear we can talk about "the parent directory".
Hardlinks have nothing to do with `rmdir .`. See rmdir . as the equivalent
pointed out by Alexander: "rmdir `pwd`". `pwd` returns the same thing
regardless the current directory has nlink > 1 or not (even if it has
nlink = 0 infact). The parent directory is still identified as "`pwd`/.." (or
in kernel terms read_lock(current->fs->lock); current->fs->pwd->d_parent).
hardlinks (of files or directories) only matters at the inode level, not at the
dentry level.
Andrea
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
next prev parent reply other threads:[~2001-01-08 21:34 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-01-08 20:56 `rmdir .` doesn't work in 2.4 Andries.Brouwer
2001-01-08 21:34 ` Andrea Arcangeli [this message]
2001-01-10 22:25 ` Matthias Andree
-- strict thread matches above, loose matches on Subject: below --
2001-01-09 14:38 Jesse Pollard
2001-01-09 13:41 Jesse Pollard
2001-01-09 14:06 ` Andrea Arcangeli
2001-01-10 14:47 ` Stephen C. Tweedie
2001-01-10 15:03 ` Andrea Arcangeli
2001-01-10 17:28 ` Alexander Viro
2001-01-10 17:38 ` Andrea Arcangeli
2001-01-09 14:23 ` Alexander Viro
2001-01-09 12:18 Andries.Brouwer
2001-01-08 22:50 Andries.Brouwer
2001-01-08 23:22 ` Andrea Arcangeli
2001-01-09 17:02 ` Kurt Roeckx
2001-01-08 17:08 Andrea Arcangeli
2001-01-08 17:31 ` Mohammad A. Haque
2001-01-08 17:55 ` Andrea Arcangeli
2001-01-08 18:04 ` Alexander Viro
2001-01-08 20:30 ` Andrea Arcangeli
2001-01-08 21:08 ` Alexander Viro
2001-01-08 21:56 ` Andrea Arcangeli
2001-01-08 23:28 ` Linus Torvalds
2001-01-09 8:09 ` Stefan Traby
2001-01-09 10:48 ` Eric Lammerts
2001-01-09 9:31 ` Albert D. Cahalan
2001-01-09 15:00 ` Alexander Viro
2001-01-09 20:59 ` Albert D. Cahalan
2001-01-09 21:42 ` Alexander Viro
2001-01-08 23:27 ` Linus Torvalds
2001-01-09 0:01 ` Andrea Arcangeli
2001-01-09 13:50 ` Stephen C. Tweedie
2001-01-08 17:58 ` Alexander Viro
2001-01-08 20:28 ` Andrea Arcangeli
2001-01-09 13:52 ` Stephen C. Tweedie
2001-01-08 21:54 ` Stefan Traby
2001-01-08 22:11 ` Benson Chow
2001-01-08 22:37 ` Andrea Arcangeli
2001-01-09 1:37 ` Wakko Warner
2001-01-09 1:55 ` Andrea Arcangeli
2001-01-09 4:56 ` Marc Lehmann
2001-01-11 18:57 ` Bernhard Rosenkraenzer
2001-01-09 13:39 ` Alexander Viro
2001-01-12 18:27 ` Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20010108223445.V27646@athlon.random \
--to=andrea@suse.de \
--cc=Andries.Brouwer@cwi.nl \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@math.psu.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox