Re: mkdir on read-only NFS is broken in 2.6.18

From: Trond Myklebust
Date: Mon Oct 23 2006 - 06:34:59 EST


On Mon, 2006-10-23 at 11:23 +0200, Thomas Zeitlhofer wrote:
> Hello,
>
> there is a problem in 2.6.18/.1 when mkdir is called for an existing
> directory on a read-only mounted NFS filesystem.
>
> Lets consider a server that exports the directory /export which contains
> the directory-tree a/b/c:
>
> 1) If /export is mounted ro and the first access to a, b, or c is
> mkdir, then this directory and all directories underneath become
> inaccessible:
>
> client:# mount server:/export /mnt -o ro
> client:# mkdir /mnt/a/b
> mkdir: cannot create directory `/mnt/a/b': Read-only file system
> client:# find /mnt
> /mnt
> /mnt/a
> find: /mnt/a/b: No such file or directory
>
> 2) If /export is mounted ro and the first access to a, b, or c is _not_
> by calling mkdir, then a following mkdir does not destroy the directory
> structure (and mkdir now returns EEXIST):
>
> client:# mount server:/export /mnt -o ro
> client:# find /mnt
> /mnt
> /mnt/a
> /mnt/a/b
> /mnt/a/b/c
> client:# mkdir /mnt/a/b
> mkdir: cannot create directory `/mnt/a/b': File exists
> client:# find /mnt
> /mnt
> /mnt/a
> /mnt/a/b
> /mnt/a/b/c
>
> 3) If /export is mounted rw (although exported ro), then mkdir does not
> destroy the directory structure:
>
> client:# mount server:/export /mnt -o rw
> client:# mkdir /mnt/a/b
> mkdir: cannot create directory `/mnt/a/b': Read-only file system
> client:# find /mnt
> /mnt
> /mnt/a
> /mnt/a/b
> /mnt/a/b/c
>
> As a consequence of 1), autofs does not work with mountpoints on NFS
> (ro) because the automount daemon calls mkdir for all directories in the
> path to the mountpoint. This seems related to the discussion [1], and,
> as suggested in [1], the issue is fixed by reverting the patch:

There should already be a fix for this issue in 2.6.19-rc1. See

http://kernel.org/git/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=fd6840714d9cf6e93f1d42b904860a94df316b85

Note, though, that the autofs behaviour that you describe above is
seriously broken (mkdir as root on an NFS partition is _not_
acceptable).

Cheers,
Trond

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/