public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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/

  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