]> git.decadent.org.uk Git - nfs-utils.git/log
nfs-utils.git
17 years agoChange default to use system rpcgen.
Neil Brown [Thu, 29 Mar 2007 03:20:20 +0000 (13:20 +1000)]
Change default to use system rpcgen.

If system-installed rpcgen if such exists.
If none is found, build our own.
Override with
   ./configure --with-rpcgen=internal
for internal rpcgen or
   ./configure --with-rpcgen=/local/rpcgen
for a non-standard location.

17 years agosm-notify: Try all addresses of a multihomed host.
Neil Brown [Thu, 29 Mar 2007 03:08:09 +0000 (13:08 +1000)]
sm-notify: Try all addresses of a multihomed host.

When sending an SM_NOTIFY to  multi-homed host, try all the addresses
in rotation.  After 4 failures on one address, try the next.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agostatd - use dnsname to ensure correct matching of NOTIFY requests.
Neil Brown [Thu, 29 Mar 2007 03:08:08 +0000 (13:08 +1000)]
statd - use dnsname to ensure correct matching of NOTIFY requests.

When lockd asks to monitor a host, we find the FQDN from the DNS
and remember that, both internally and in the /var/lib/nfs/sm/*
file.
When we receive an SM_NOTIFY request, we compare both the
mon_name and the source IP address against that DNS name to find
a match.

If a DNS name is not available, we fall back to the name provided by
lockd, which at least is known to map to an IP address via
gethostbyname.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agostatd - check for 'priv' when looking for duplicate registrations.
Neil Brown [Thu, 29 Mar 2007 03:08:07 +0000 (13:08 +1000)]
statd - check for 'priv' when looking for duplicate registrations.

From the point of view of the client (lockd), the 'priv' blob is probably
the most important key, so make sure to not throw away requests with
new 'priv' information.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agostatd - remove a pointless if
Neil Brown [Thu, 29 Mar 2007 03:08:06 +0000 (13:08 +1000)]
statd - remove a pointless if

The if contains a while with essentially the same condition.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs - nordirplus option
Steve Dickson [Thu, 29 Mar 2007 03:08:06 +0000 (13:08 +1000)]
mount.nfs - nordirplus option

From: Steve Dickson <steved@redhat.com>

Adds the -o nordirplus mount option that will disable
NFS clients from using the READDIRPLUS RPC.

Signed-off-by: Steve Dickson <steved@redhat.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs.man - Use nolocks for /, /usr, /var
Neil Brown [Thu, 29 Mar 2007 03:08:04 +0000 (13:08 +1000)]
mount.nfs.man - Use nolocks for /, /usr, /var

Make it clear in manpage for mount.nfs that using nolock is
appropriate for /, /usr and /var.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs - require statd to be running to mount without nolocks
Neil Brown [Thu, 29 Mar 2007 03:08:04 +0000 (13:08 +1000)]
mount.nfs - require statd to be running to mount without nolocks

If we are mounting nfsv2 or nfsv3 and statd isn't running and we
cannot start statd, then fail the mount request.

Also use an RPC ping to check on statd.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agostatd - only unregister/register once.
Neil Brown [Thu, 29 Mar 2007 03:08:03 +0000 (13:08 +1000)]
statd - only unregister/register once.

The for loop that restarts on SIGUSR or simu_reboot currently includes
several once-only things, that are probably best taken out of the loop.

We also take the unregister/register out of the loop as if statd does
drop privileges, then the second register won't use a privileged port
properly.

On the whole, cleaner code.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomountd - better response to failed attempts to export filesystems
Neil Brown [Thu, 29 Mar 2007 03:08:01 +0000 (13:08 +1000)]
mountd - better response to failed attempts to export filesystems

If the kernel rejects an attempt to export a filesystem - e.g. because
it is not exportable, we shouldn't just ignore the error, but rather
should tell the kernel that the relevant filehandle or path cannot be supported.

We should really print out some error messages too.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agosm-notify - fix bugs related to run-only-once.
Neil Brown [Thu, 29 Mar 2007 03:07:58 +0000 (13:07 +1000)]
sm-notify - fix bugs related to run-only-once.

Make sure that sm-notify really runs only once per reboot.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agostatd - keep persistent state in sm/* files.
Neil Brown [Thu, 29 Mar 2007 03:07:48 +0000 (13:07 +1000)]
statd - keep persistent state in sm/* files.

If statd dies and is restarted, it forgets what peers the kernel
is interested in monitoring, and so will not forward NOTIFY
requests properly.

With this patch the required information is recorded in the files
in /var/lib/nfs/sm/* so that a kill/restart does what you might
hope.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agostatd - fix bug so statd can talk to kernel again.
Neil Brown [Fri, 23 Mar 2007 01:36:36 +0000 (12:36 +1100)]
statd - fix bug so statd can talk to kernel again.

We need to call statd_get_socket before dropping privileges so that we
have a privileged port.  We use to do that when initialising
notification as the same socket was used for reboot notication as for
callbacks to the kernel.  Now it is a different socket..

17 years agosm-notify - Fix typos in Usage message.
Neil Brown [Thu, 22 Mar 2007 06:05:29 +0000 (17:05 +1100)]
sm-notify - Fix typos in Usage message.

17 years agomount.nfs: Fix issue with -o user,exec
Neil Brown [Thu, 22 Mar 2007 05:56:20 +0000 (16:56 +1100)]
mount.nfs: Fix issue with -o user,exec

It would seem to make sense for mount.nfs to impose the
  "-o user" => "-o noexec,nodev,nosuid"
rule.  However if you give "user,exec" to /sbin/mount,
it will pass down
    nodev,nosuid,user
with the 'exec' flag :-(

So we have to leave that handling of that particular rule to
/sbin/mount.

17 years agoFix errors in statd calling sm-notify.
Neil Brown [Thu, 22 Mar 2007 05:22:07 +0000 (16:22 +1100)]
Fix errors in statd calling sm-notify.

The option for set-source-address is '-v', not '-N'.

And only warn about -N if -N was actually used.

17 years agoNever set SO_REUSEADDR on a UDP socket.
Neil Brown [Thu, 22 Mar 2007 05:06:22 +0000 (16:06 +1100)]
Never set SO_REUSEADDR on a UDP socket.

The effect is quite different from TCP sockets.
For TCP, it allows you to listen for new connections even if there
are outstanding old connections with the same local address.
For UDP, it allows other people to steal your packets by
binding to the same address.

17 years agoFix a couple of problems that crept into mount
Kevin Coffman [Tue, 20 Mar 2007 22:52:17 +0000 (18:52 -0400)]
Fix a couple of problems that crept into mount

Commit 6facb22402a0bd8cd49be2ed1a0856b24fef42f4 changed the allocation
of len to no longer get 20 extra bytes.  It needs to get at least one
extra byte for a null character, otherwise a single extra option such
as "sec=krb5" is never copied in parse_opt() and is dropped.

Commit 44a3727a3243e674a1f1fdad5cbbc639aa25d01c added a typo when
checking the program name.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agostatd - remove try_to_resolve
Neil Brown [Tue, 20 Mar 2007 05:17:27 +0000 (16:17 +1100)]
statd - remove try_to_resolve

try_to_resolve is used to resolve a hostname when sending a notification.
But we now only send notifications to localhost, so name resolution is not
needed.

17 years agoumount should succeed even if we cannot contact the server.
Neil Brown [Tue, 20 Mar 2007 05:16:04 +0000 (16:16 +1100)]
umount should succeed even if we cannot contact the server.

Failure to tell mountd about the unmount should not be classes
and an error and DEFINTELY should not stop the filesystem
from being unmounted.

17 years agoAdd support for quoted mount options
Karel Zak [Mon, 19 Mar 2007 20:02:40 +0000 (21:02 +0100)]
Add support for quoted mount options

The patch avoid the collision between commas in security contexts and the
delimiter between mount options.

Try:
mount.nfs foo://mnt/bar /mnt/bar -o context=\"aaa,bbb,ccc\",ro

Signed-off-by: Cory Olmo <colmo@TrustedCS.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoBuild mount.nfs by default, and install setuid
Neil Brown [Tue, 20 Mar 2007 03:18:41 +0000 (14:18 +1100)]
Build mount.nfs by default, and install setuid

Also fix a few bugs that came up in initial testing.

17 years agomount.nfs - make sure program name in error message is correct.
Neil Brown [Tue, 20 Mar 2007 01:53:32 +0000 (12:53 +1100)]
mount.nfs - make sure program name in error message is correct.

getopt_long uses argv[0] in error messages.  So it it is given
argv+2 for example, we need to make sure that argv[2] has the
correct program name.

17 years agoumount.nfs - more strict checks on command line args.
Neil Brown [Tue, 20 Mar 2007 01:50:04 +0000 (12:50 +1100)]
umount.nfs - more strict checks on command line args.

Reject if there are non-flag args,
Reject if the filesystem is not an NFS filesystem.

17 years agomount.nfs - Tidy up option parsing.
Neil Brown [Tue, 20 Mar 2007 01:39:06 +0000 (12:39 +1100)]
mount.nfs - Tidy up option parsing.

Make sure all possible invalid arguments are discovered and reported.
Make sure nothing gets by for uid!=0 that doesn't perfectly match fstab.

17 years agosm-notify - use state directory provided via ./configure
Neil Brown [Tue, 20 Mar 2007 00:50:14 +0000 (11:50 +1100)]
sm-notify - use state directory provided via ./configure

17 years agoAllow disabling of libblkid usage.
Neil Brown [Tue, 20 Mar 2007 00:47:28 +0000 (11:47 +1100)]
Allow disabling of libblkid usage.

Some versions of libblkid have a terrible memory leak which makes
mounted grow toooo big.  So support
   --disable-uuid
to remove the uuid functionality and liblkid with it.

17 years agoAdd --with-rpcgen= for configure so that the system rpcgen can be used.
Neil Brown [Tue, 20 Mar 2007 00:15:29 +0000 (11:15 +1100)]
Add --with-rpcgen= for configure so that the system rpcgen can be used.

Ultimately it makes sense to remove remove rpcgen from the nfs-utils
release as it is already in the glibc release.  With this patch
you can use the system rpcgen to make sure it works.
It is not default yet, but it might be in a future release.

17 years agoHandle -o remount better
Neil Brown [Tue, 20 Mar 2007 00:13:42 +0000 (11:13 +1100)]
Handle -o remount better

On -o remount, we need to update the entry in mtab rather than
add a new one.  update_mtab does this so use that.
However it might free some strings that shouldn't be freed, so
stop it from calling free - the program will exit soon anyway
so no exit is needed.

17 years agostatd - delay drop-privs until sockets have been setup.
Neil Brown [Mon, 19 Mar 2007 23:14:44 +0000 (10:14 +1100)]
statd - delay drop-privs until sockets have been setup.

Registering sockets with portmap might require root privs,
so don't drop privs until that has been done.

17 years agoAllow rpc.statd to *not* run sm-notify.
Neil Brown [Mon, 19 Mar 2007 23:13:00 +0000 (10:13 +1100)]
Allow rpc.statd to *not* run sm-notify.

With -L (for Listen-only) or --no-notify, statd will not run
sm-notify.

17 years agoRemove notify functionality from statd in favour of sm-notify
Neil Brown [Mon, 19 Mar 2007 23:09:50 +0000 (10:09 +1100)]
Remove notify functionality from statd in favour of sm-notify

statd now execs sm-notify to notify peers and only listens to
monitor requests and remote notifications itself.

17 years agosm-notify - compile and install
Neil Brown [Mon, 19 Mar 2007 23:04:16 +0000 (10:04 +1100)]
sm-notify - compile and install

Add sm-notify to the compile/install scripts,
(and fix a compile warning).

17 years agosm-notify - drop privileges before receiving packets from network.
Neil Brown [Mon, 19 Mar 2007 23:03:28 +0000 (10:03 +1100)]
sm-notify - drop privileges before receiving packets from network.

If /var/lib/nfs/sm is owned by non-root, setuid to that uid
after opening sockets but before receiving answers.

17 years agoPrevent sm-notify from being run multiple times per reboot.
Neil Brown [Mon, 19 Mar 2007 22:50:33 +0000 (09:50 +1100)]
Prevent sm-notify from being run multiple times per reboot.

As "mount.nfs" can start statd, and as statd can start sm-notify,
the risk of sm-notify being run multiple times increases.
As this is not normally appropriate, sm-notify now creates a
file in /var/run which will stop future instances from being
run (though ofcourse this behaviour can be controlled by a
new command line option).

17 years agosm-notify - make the manpage a little more up-to-date
Neil Brown [Mon, 19 Mar 2007 22:48:21 +0000 (09:48 +1100)]
sm-notify - make the manpage a little more up-to-date

17 years agosm-notify: remove addr_parse
Neil Brown [Mon, 19 Mar 2007 22:41:00 +0000 (09:41 +1100)]
sm-notify: remove addr_parse

This functionality is alreday present in getaddrinfo so it isn't
needed explicitly.

17 years agosm-notify: Allow base path to be set by command line option.
Neil Brown [Mon, 19 Mar 2007 22:40:26 +0000 (09:40 +1100)]
sm-notify: Allow base path to be set by command line option.

for compat with statd.

17 years agoAdd sm-notify from SuSE
Neil Brown [Mon, 19 Mar 2007 22:36:28 +0000 (09:36 +1100)]
Add sm-notify from SuSE

Not included in build yet.

17 years agoCorrectly handle -f (fake) mount option.
Karel Zak [Mon, 19 Mar 2007 19:33:17 +0000 (20:33 +0100)]
Correctly handle -f (fake) mount option.

The fake option has to write to mtab like a normal mount. Read mount(8) man
page for more details.  It's very important for system init scripts that use
"-f" as a way how write info about mount points to /etc/mtab.

Signed-off-by: Karel Zak <kzak@redhat.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoWhen finding an export for an fsid, check submounts too.
Neil Brown [Mon, 19 Mar 2007 01:06:08 +0000 (12:06 +1100)]
When finding an export for an fsid, check submounts too.

When looking for the exportpoint to match a given fsid,
if an NFSEXP_CROSSMOUNT export is found, also check all filesystems
mounted below there.

17 years agoHandle 'crossmnt' when kernel asked for export options for a directory.
Neil Brown [Mon, 19 Mar 2007 00:52:30 +0000 (11:52 +1100)]
Handle 'crossmnt' when kernel asked for export options for a directory.

If the kernel finds a mountpoint below a 'crossmnt' export, it will ask
mounted what export options to use.  With this patch it will return
the same export options as for the top 'crossmnt' export unless
more specific options have been given.

17 years agoAllow exporting of a subfilesystem when 'crossmnt' is set.
Neil Brown [Mon, 19 Mar 2007 00:41:21 +0000 (11:41 +1100)]
Allow exporting of a subfilesystem when 'crossmnt' is set.

If we are asked to export a filesystem which is not explicitly
exported, but an ancestor is exported as 'crossmnt', export the
filesystems with the same options as the ancestor.

This is the first step to making 'crossmnt' effectively export
a tree of filesystems.

17 years agoWork around svc_getreqset in glibc 3
Neil Brown [Mon, 19 Mar 2007 00:12:34 +0000 (11:12 +1100)]
Work around svc_getreqset in glibc 3

Without this fix, mountd ignores sockets with filedescriptor > 31,
so if there are more than about 26 concurrent connections, mountd
starts spinning.

17 years agoClean up of some error messages.
Amit Gud [Sat, 24 Feb 2007 19:31:13 +0000 (14:31 -0500)]
Clean up of some error messages.

Signed-off-by: Steve Dickson <steved@redhat.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoMake warning about host matching multiple exports more helpful.
Neil Brown [Sun, 18 Mar 2007 23:22:22 +0000 (10:22 +1100)]
Make warning about host matching multiple exports more helpful.

1/ only warn once per export, as it could get too noisy.
2/ make it a little clearer why this might be a problem.

17 years agoCreate two separate paths for pipefs_dir and pipefs_nfsdir.
Kevin Coffman [Fri, 16 Mar 2007 14:27:48 +0000 (10:27 -0400)]
Create two separate paths for pipefs_dir and pipefs_nfsdir.

Future work needs access to the base pipefs directory rather than
the nfs subdirectory.  Create two separate paths called
pipefs_dir and pipefs_nfsdir with the name of each.

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoAllow any credential to be used for machine credentials
Kevin Coffman [Fri, 16 Mar 2007 14:27:46 +0000 (10:27 -0400)]
Allow any credential to be used for machine credentials

Don't restrict machine credentials to be "nfs/<machine.name>".
Use any usable credentials contained in the keytab file.
[We actually attempt to use the first entry found for each
realm, not every entry, in the keytab.]

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoAdd option to allow root to use credentials other than machine credentials
Kevin Coffman [Fri, 16 Mar 2007 14:27:44 +0000 (10:27 -0400)]
Add option to allow root to use credentials other than machine credentials

Add a new option ("-n") to rpc.gssd to indicate that accesses as root
(uid 0) should not use machine credentials, but should instead use
"normal" Kerberos credentials obtained by root.

This change was prompted by a suggestion and patch from Daniel
Muntz <Dan.Muntz@netapp.com>.  That patch suggested trying "normal"
credentials first and falling back to using machine creds for
uid 0 if normal creds failed.

This opens up the case where root may have credentials as "foo@REALM"
and begins accessing files.  Then the context using those credentials
expires and must be renewed.  If the credentials are now expired, then
root's new context would fall back and be created with the machine
credentials.

Instead, this patch insists that the administrator choose to use either
machine credentials for accesses by uid 0 (the default behavior, as
it was before) or "normal" credentials.  In the latter case, arrangements
must be made to obtain credentials before attempting a mount.  There
should be no doubts which credentials are used for uid 0.

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoDon't leak keytab entries
Kevin Coffman [Fri, 16 Mar 2007 14:27:41 +0000 (10:27 -0400)]
Don't leak keytab entries

Free keytab entries while processing keytab file.

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoFix another warning: error -> nfs_error
Neil Brown [Fri, 16 Mar 2007 07:34:08 +0000 (18:34 +1100)]
Fix another warning: error -> nfs_error

17 years agoFix a 'const' misuse warning.
Neil Brown [Fri, 16 Mar 2007 07:31:11 +0000 (18:31 +1100)]
Fix a 'const' misuse warning.

17 years agoSupport unmount by not privileged users
Neil Brown [Fri, 16 Mar 2007 07:29:39 +0000 (18:29 +1100)]
Support unmount by not privileged users

Providing user=username or users is listed in mtab.

17 years agoRemove nfs_mntent_t in favour of struct mntent
Neil Brown [Fri, 16 Mar 2007 07:26:37 +0000 (18:26 +1100)]
Remove nfs_mntent_t in favour of struct mntent

They are identical and the later allows us to use hasmntent.

17 years agoCorrectly handle "user" and "users" mount options.
Neil Brown [Fri, 16 Mar 2007 07:07:41 +0000 (18:07 +1100)]
Correctly handle "user" and "users" mount options.

If "user" or "users" is given, then allow mount.nfs to be run
by a non-root user providing that the mountpoint, filesystem, and options
exactly match what is found in fstab.

For "user", record the user name in mtab so they can unmount the
filesystem later.

Also alwasys ignore auto, owner, group and their negations as well
as "_netdev", "comment" and "loop".

17 years agoRemove some incorrect version matching code.
Neil Brown [Fri, 16 Mar 2007 06:13:52 +0000 (17:13 +1100)]
Remove some incorrect version matching code.

The version of the interface to the kernel for requesting a mount
it entirely different to the version of NFS that is being mounted.

17 years agoReturn the correct exit status on failed mounts
Steve Dickson [Fri, 16 Mar 2007 06:08:04 +0000 (17:08 +1100)]
Return the correct exit status on failed mounts

Signed-off-by: Steve Dickson <steved@redhat.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoSupport -s option to ignore unknown options (sloppy)
Neil Brown [Fri, 16 Mar 2007 06:02:42 +0000 (17:02 +1100)]
Support -s option to ignore unknown options (sloppy)

17 years agoOn "umount --lazy", don't tell the server we have unmounted.
Neil Brown [Fri, 16 Mar 2007 05:50:11 +0000 (16:50 +1100)]
On "umount --lazy", don't tell the server we have unmounted.

Because, ofcourse, we haven't.
When we do finally let-go of the mount, the server won't get told,
but the same would happen on a crash, and the server just has to cope.

17 years agoReturn correct exit status for umount.nfs.
Neil Brown [Fri, 16 Mar 2007 05:46:27 +0000 (16:46 +1100)]
Return correct exit status for umount.nfs.

nfsumount() returns 1 for success and 0 for failure.
Take proper account of this when producing an exit
status.

17 years agoUpdate the nfs.5 manpage
Neil Brown [Fri, 16 Mar 2007 05:26:51 +0000 (16:26 +1100)]
Update the nfs.5 manpage

Defaults are now tcp/v3.
Several bugs have been fixed.

17 years agoAdd nfs.5 man page
Neil Brown [Fri, 16 Mar 2007 05:25:55 +0000 (16:25 +1100)]
Add nfs.5 man page

17 years agoRemove tools/getiversion
Neil Brown [Fri, 16 Mar 2007 04:56:14 +0000 (15:56 +1100)]
Remove tools/getiversion

We don't need it (any more).
Also add AM_PROG_CC_C_O as we seem to need it..

17 years agoUse AC_SYS_LARGEFILE to enable largefile support
Neil Brown [Fri, 16 Mar 2007 04:49:23 +0000 (15:49 +1100)]
Use AC_SYS_LARGEFILE to enable largefile support

rather than explicit -D_FILE_OFFSET_BITS=64

Taken from Redhat -5 sources.

17 years agoLook in lib64 for gss libs aswell.
Neil Brown [Fri, 16 Mar 2007 04:10:08 +0000 (15:10 +1100)]
Look in lib64 for gss libs aswell.

On distros that support 32 and 64bit userspace, we need to look
a bit more broadly for libraries
(taken from Redhat sources for RHEL5 - thanks).

17 years agoAllow 'make install' to be run as non-root.
Neil Brown [Fri, 16 Mar 2007 03:32:32 +0000 (14:32 +1100)]
Allow 'make install' to be run as non-root.

Providing write access to the DESTDIR is ok, we shouldn't
fail the install just because 'chown' fails.

17 years agoUse lstat rather than stat in gssd_find_existing_krb5_ccache
Neil Brown [Fri, 16 Mar 2007 03:23:02 +0000 (14:23 +1100)]
Use lstat rather than stat in gssd_find_existing_krb5_ccache

As this is a file in /tmp, a symlink could take us anywhere...
If it was a NFS filesystem with a dead server, we could block for a long time..

17 years agoFurther tidyup of nfs_umount.
Neil Brown [Fri, 16 Mar 2007 02:56:25 +0000 (13:56 +1100)]
Further tidyup of nfs_umount.

- remove non-used arguments from del_mtab.
- Don't try to pass a "host:/path" string to umount.
  It used to be possible to umount("/dev/whatever"). It has never
  been possible to umount("host:/path").
- Don't try to read /proc/mounts first.  Some mount options (mount_vers)
  are only stored in /etc/mtab, not in /proc/mounts.  So we have to
  prefer /etc/mtab as getmntXbackwards do.
- Only every call one of getmnt{dir,dev}backwards, depending on whether
  'spec' looks like a path name or a host:/path.
- Don't call _nfsumount unless we have a host:/path, or del_mtab unless we
  have a path name.

17 years agoMake mtab_head static
Neil Brown [Fri, 16 Mar 2007 02:51:12 +0000 (13:51 +1100)]
Make mtab_head static

It is only used in one place.

17 years agoRename add_mtab2() to del_mtab()
Wei Yongjun [Wed, 14 Mar 2007 06:46:59 +0000 (14:46 +0800)]
Rename add_mtab2() to del_mtab()

add_mtab2 is used to remove an entry from mtab, rename it to del_mtab.

Signed-off-by: Wei Yongjun <yjwei@nanjing-fnst.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoUse correct UMNT protocol to do umount
Wei Yongjun [Wed, 14 Mar 2007 07:56:58 +0000 (15:56 +0800)]
Use correct UMNT protocol to do umount

This patch do following things:

1. When unmounting, we should try /proc/mounts first. Only then in
   /etc/mtab if it wasn't found.
2. Reject name passed to us which is not starts with a '/' or not
   contains a ':'
3. Fix the method to get UMNT protocol

Signed-off-by: Wei Yongjun <yjwei@nanjing-fnst.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoFix nfs4 umount to not used umount procedure
Wei Yongjun [Wed, 14 Mar 2007 08:07:09 +0000 (16:07 +0800)]
Fix nfs4 umount to not used umount procedure

This fix umount.nfs4's BUG, patch cleanup some useless code.

1. Combine nfs3_umount() and nfs2_umount() to nfs_umount()
2. If it is a nfs4 remote file system or unkown mount version, do not
   probe remote mount port and not send UMNT request wich is not necessary

Signed-off-by: Wei Yongjun <yjwei@nanjing-fnst.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoUse correct UMNT version to do umount
Wei Yongjun [Wed, 14 Mar 2007 07:51:38 +0000 (15:51 +0800)]
Use correct UMNT version to do umount

This patch lets umount to use correct UMNT version to do umount.
In latest kernel, the version format is "vers=3" etc., and in old kernel
the version format is "v3","v4" etc.

Signed-off-by: Wei Yongjun <yjwei@nanjing-fnst.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoDon't complain if two exports of different types match the same IP address.
Neil Brown [Fri, 16 Mar 2007 00:58:39 +0000 (11:58 +1100)]
Don't complain if two exports of different types match the same IP address.

As nfs-utils as an ordering of client types (hostname, netmask,
wildcard, netgroup), it is expected that sometimes the one IP will
match two or more of these and the first will over-ride.  So
don't both complaining when that happens.

17 years agoInstall mount.nfs* in /sbin instead of /usr/sbin
Neil Brown [Fri, 16 Mar 2007 00:56:59 +0000 (11:56 +1100)]
Install mount.nfs* in /sbin instead of /usr/sbin

This patch is now hard-coded in the Makefile.am and cannot
be changed by configure. But as it needs to match what
util-linux does, that is probably a good thing.

17 years agoFix memory leak in mountd.
Steinar H. Gunderson [Fri, 16 Mar 2007 00:26:35 +0000 (11:26 +1100)]
Fix memory leak in mountd.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoAutomatically start statd when mounting an nfs filesystem.
Neil Brown [Fri, 16 Mar 2007 00:24:15 +0000 (11:24 +1100)]
Automatically start statd when mounting an nfs filesystem.

If statd is not running (/var/run/rpc.statd.pid) when an nfs filesystem
is mounted (v2 or v3, with remote locking enabled), and if
/usr/sbin/start-statd (or other program specified at config time) is
present, then run that program to start statd.

This means that statd does not need to be running "just in case".
It only needs to be started at boot time if the nfs server is
started.

17 years agoMake --enable-secure-statd the default.
Neil Brown [Thu, 15 Mar 2007 04:38:35 +0000 (15:38 +1100)]
Make --enable-secure-statd the default.

i.e. you now need --disable-secure-statd if you want any client
other than lockd to talk to statd.

Also relax the RESTRICTED_STATD checks so that a recent kernel
with /proc/sys/fs/nfs/nsm_use_hostnames set can still talk to
statd.

Finally, restrict access to simulate_crash so that only privileged
processes on localhost can call it.  Having it accessible by the
whole world is probably not much more than a minor inconvenience,
but it really should be kept closed.

17 years agoRemove uid-mapping text from exports.man
Neil Brown [Wed, 14 Mar 2007 22:51:50 +0000 (09:51 +1100)]
Remove uid-mapping text from exports.man

It was already commented out, and it will never be wanted.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoRemove "maptype" support
J. Bruce Fields [Tue, 13 Mar 2007 17:05:05 +0000 (13:05 -0400)]
Remove "maptype" support

It appears that this is used only by unfsd, and is obscure enough that
we should be able to just rip it out with no special precautions.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoIf -o sec= is not specified for mount, allow either AUTH_SYS or AUTH_NONE.
Neil Brown [Wed, 14 Mar 2007 22:46:33 +0000 (09:46 +1100)]
If -o sec= is not specified for mount, allow either AUTH_SYS or AUTH_NONE.

Solaris servers, when asked to share a filesystem with an anon-uid, will
report the only available authentication style as AUTH_NONE in the
reply from mountd (even though they actually accept AUTH_SYS and simply
ignore the credentiuals).
So if no sec= is specified we should really accept anything that can easily
be handled.  ie. AUTH_SYS or AUTH_NONE.

17 years agoUse very long timeout for information in the filehandle->path cache.
Simon Peter [Tue, 13 Mar 2007 04:19:24 +0000 (15:19 +1100)]
Use very long timeout for information in the filehandle->path cache.

/* The fsid -> path lookup can be quite expensive as it
 * potentially stats and reads lots of devices, and some of those
 * might have spun-down.  The Answer is not likely to
 * change underneath us, and an 'exportfs -f' can always
 * remove this from the kernel, so use a really log
 * timeout.  Maybe this should be configurable on the command
 * line.
 */

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agonfs-utils patch for mount-reserved-port
Talpey, Thomas [Mon, 12 Mar 2007 15:55:17 +0000 (11:55 -0400)]
nfs-utils patch for mount-reserved-port

Only create a mount-time reserved port socket for kernels
which require it (pre-2.1.32/nfs_mount_version 1).

Signed-off-by: Tom Talpey <tmt@netapp.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoRestore use of un-connected socket for UDP mount requests.
Neil Brown [Tue, 13 Mar 2007 03:39:49 +0000 (14:39 +1100)]
Restore use of un-connected socket for UDP mount requests.

When connecting to an NFSv4 server we need to find out IP address
as it would be seen by the server, to register an address for
callbacks.
This is most easily done by connecting the socket to the
servers address and then getting the address of our endpoint.

However with a connected UDP socket, replies that come from a
different IP address - as can happen with non-Linux multi-homed
servers - will be rejected.

So if we connected our UDP socket, we need to be sure to
disconnect it before using it.

This patch adds an option to get_socket to say if we want it
connected or not and, in the case where we do, we disconnect
a UDP socket after the connection information has been used.

Also clean up the error handling in clnt_ping which was getting
clumsy.

17 years agoAdd support for "mount -o sec=none"
Neil Brown [Tue, 13 Mar 2007 01:47:40 +0000 (12:47 +1100)]
Add support for "mount -o sec=none"

For completeness... and who knows, someone might want it.

17 years agoRemove unused variable from add_mtab
Neil Brown [Tue, 13 Mar 2007 01:44:22 +0000 (12:44 +1100)]
Remove unused variable from add_mtab

17 years agoMerge branch 'branch-1-0'
Neil Brown [Tue, 27 Feb 2007 05:35:01 +0000 (16:35 +1100)]
Merge branch 'branch-1-0'

17 years agoFix silly bug with tcp-wrappers check nfs-utils-1-0-12
Neil Brown [Tue, 27 Feb 2007 04:55:40 +0000 (15:55 +1100)]
Fix silly bug with tcp-wrappers check

A stray '$'.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoFix silly bug with gid lookup
Neil Brown [Tue, 27 Feb 2007 04:54:55 +0000 (15:54 +1100)]
Fix silly bug with gid lookup

Wrong pointer test meant mountd would alway do gid lookups
instead of only if asked to with '-g'.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoExtend the exportfs/mountd interface to pass fslocations info into the kernel
Fred Isaman [Tue, 27 Feb 2007 04:31:04 +0000 (15:31 +1100)]
Extend the exportfs/mountd interface to pass fslocations info into the kernel

Fix up a few issues with the fsloc code.

Signed-off-by: Fred Isaman <iisaman@citi.umich.edu>
Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoFix reference error when writing fsloc data to cache
Kevin Coffman [Tue, 27 Feb 2007 04:26:44 +0000 (15:26 +1100)]
Fix reference error when writing fsloc data to cache

Use the correct pointer when writing fslocations data to the cache.
Also write the fsloc stuff before the uuid stuff so userland code
will work with or without the uuid kernel patches.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoAdd missing fsloc.[ch] files - oops. nfs-utils-1-0-11a
Neil Brown [Sun, 25 Feb 2007 19:42:02 +0000 (06:42 +1100)]
Add missing fsloc.[ch] files - oops.

17 years agoRemove rpc.lockd
Neil Brown [Thu, 22 Feb 2007 05:41:24 +0000 (16:41 +1100)]
Remove rpc.lockd

This was only needed for kernels 2.2.14 through 2.2.17.

These have long since been superceded, so remove some dead weight.

17 years agoChange default from subtree_check to no_subtree_check
Neil Brown [Thu, 22 Feb 2007 05:21:22 +0000 (16:21 +1100)]
Change default from subtree_check to no_subtree_check

subtree_check causes more problems than it is worth,
and it isn't worth much in the first place..

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoUpdate version to 1.0.11 nfs-utils-1-0-11
Neil Brown [Thu, 22 Feb 2007 04:50:03 +0000 (15:50 +1100)]
Update version to 1.0.11

17 years agoExtend the exportfs interface to pass fslocations info into the kernel.
Fred Isaman [Thu, 22 Feb 2007 04:48:53 +0000 (15:48 +1100)]
Extend the exportfs interface to pass fslocations info into the kernel.

Extend exportfs interface to pass fslocations info into the kernel,
using syntax modelled after AIX.  Adds "refer=" and "replicas="
options to /etc/exports to enable use of the kernel fslocation code.

Signed-off-by: Fred Isaman <iisaman@citi.umich.edu>
Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoFix showmount bugs.
Neil Brown [Thu, 22 Feb 2007 04:34:45 +0000 (15:34 +1100)]
Fix showmount bugs.

When doing a nonblocked connect, we need to select for 'write', not 'read'.

Also, when a tcp socket has been connected, we should use clnttcp_create
to make a tcp client, not clntudp_bufcreate !!

17 years agoSupport group-id looks for kernels that ask for them.
Neil Brown [Mon, 12 Feb 2007 05:30:23 +0000 (16:30 +1100)]
Support group-id looks for kernels that ask for them.

With "-g" mountd will listen for uid -> gidlist requests
from the kernel and provide the required mapping.
This is specific to AUTH_USER (aka AUTH_SYS) and is designed
to overcome the 16-gid limit in the AUTH_UNIX protocol.

17 years agoUse UUIDs to identify filesystems if kernel supports it.
Neil Brown [Mon, 12 Feb 2007 01:25:03 +0000 (12:25 +1100)]
Use UUIDs to identify filesystems if kernel supports it.

This introduces a new dependancy on libblkid.
If a filesystem being exported has a UUID that libblkid
can extract, then that is passed to the kernel for use
in identifying the filesystem in filehandles.
This means that 'fsid=' is no longer needed to work around the
problem of device numbers changing.
fsid= is still needed for fielsystems that have no device,
and can now be given  16byute uuid instead of just a 32bit one.

17 years agoCorrect spelling error
Neil Brown [Mon, 12 Feb 2007 00:07:50 +0000 (11:07 +1100)]
Correct spelling error

 writting -> writing