Re: nfs weirdness
Neil Brown (neilb@cse.unsw.edu.au)
Tue, 24 Jul 2001 20:54:14 +1000 (EST)
On Monday July 23, roel@grobbebol.xs4all.nl wrote:
>
> yesterday cleanly installed a system that is known to export three dirs
> without problems with NFS on 2.2.16.
>
> The system is at 2.4.4 (SuSE) and while the same exports file is used, I
> get a problem that is identified with exportfs.
>
> using knfsd, exports looks like :
>
> /cdrom 192.168.1.2(ro)
> /windows 192.168.1.2(ro)
> /udf 192.168.1.2(ro)
>
> exportfs -av with :
>
> /dev/hdd on /udf type udf; /dev/hdc on /media/cdrom type iso9660 and
> /windows is NOT mounted.
>
> exporting 192.168.1.2:/media/cdrom
> exporting 192.168.1.2:/windows
> exporting 192.168.1.2:/udf
> reexporting 192.168.1.2:/media/cdrom to kernel
> reexporting 192.168.1.2:/windows to kernel
> reexporting 192.168.1.2:/udf to kernel
>
> looks good. remote mounts als shows no error :
>
> toshiba:/cdrom 575506 575506 0 100% /tcdrom
> toshiba:/windows 976216 895820 30804 97% /windows
> toshiba:/udf 545984 530948 15036 98% /udf
>
> except that /windows was NOT mounted so should be empty. it in fact
> reflects the fs size, free etc of the root FS of toshiba. ls /windows on
> 192.168.1.2 shows no files.
>
> now, if I mount /windows on toshiba, there are files. all ok, however,
> exporting it causes :
>
> reexporting 192.168.1.2:/windows to kernel
> 192.168.1.2:/windows: Invalid argument
>
> (/dev/hda1 on /windows type vfat)
>
> and mounting via nfs :
>
> mount: toshiba:/windows failed, reason given by server: Permission
> denied
>
> /v/l/m shows :
>
> rpc.mountd: authenticated mount request from 192.168.1.2:670 for /windows (/windows)
> rpc.mountd: getfh failed: Operation not permitted
>
> I'm lost, completely now. it worked with the old kernel/setup, now it
> doesn't.
What you describe is exactly what I would expect. It might work
differently with unfsd - the user space nfs server, but this is all
correct for knfsd.
knfsd exports filesystems, or parts there-of. It doesn't export
'parts of the visible namespace'.
If you ask to export "/windows" and nothing is mounted on "/windows",
then you are asking to export part of the root filesystem starting at
"/windows". If you subsequently mount something on /windows, then you
haven't asked for that to be exported so it won't be, and mountd will
get confused.
You should always mount filesystems before trying to export them.
Now I appreciate that this could all be a bit more transparent, but
unfortunately it isn't and probably won't be for a while.
Possible changes to reduce the confusion:
1/ Don't allow a directory that is exported to be mounted on.
2/ Have a "mountpoint" export option which means "only export this
directory if it is a mountpoint".
Patches welcome.....
NeilBrown
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/