]> git.decadent.org.uk Git - nfs-utils.git/log
nfs-utils.git
17 years agolibnfs.a: eliminate conn.c and conn.h
Chuck Lever [Sat, 28 Jul 2007 21:50:55 +0000 (17:50 -0400)]
libnfs.a: eliminate conn.c and conn.h

conn.[ch] are now no longer needed.  Clean them out and delete them.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: use nfs_error instead of fprintf in get_socket()
Chuck Lever [Sat, 28 Jul 2007 21:50:50 +0000 (17:50 -0400)]
mount.nfs: use nfs_error instead of fprintf in get_socket()

Use nfs_error() where appropriate.  I used "goto" here to reduce string
splitting and indenting past the point of readability.  Gee, it would be
nice if C had proper exception handling...

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agolibnfs.a: move get_socket() function to utils/mount/network.c
Chuck Lever [Sat, 28 Jul 2007 21:50:45 +0000 (17:50 -0400)]
libnfs.a: move get_socket() function to utils/mount/network.c

Now we can address the real problem: that get_socket() depends on the
global variable "verbose" which is only available in the mount command.

Move get_socket() into utils/mount/network.c, and make it static.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agolibnfs.a: move clnt_ping() to utils/mount
Chuck Lever [Sat, 28 Jul 2007 21:50:40 +0000 (17:50 -0400)]
libnfs.a: move clnt_ping() to utils/mount

Continue clean up of mount functionality in libnfs.a by moving clnt_ping()
to utils/mount/network.c.  Note that socklen_t is an unsigned int... the
i386 gcc compiler threw a signedness warning about the 3rd argument of
getsockname().

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agolibnfs.a: move more mount-only functions out of libnfs.a
Chuck Lever [Sat, 28 Jul 2007 21:50:35 +0000 (17:50 -0400)]
libnfs.a: move more mount-only functions out of libnfs.a

Continue clean-up with nfsvers_to_mnt() and mntvers_to_nfs().

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agolibnfs.a: move mnt_{open, close}clnt calls to utils/mount/network.c
Chuck Lever [Sat, 28 Jul 2007 21:50:30 +0000 (17:50 -0400)]
libnfs.a: move mnt_{open, close}clnt calls to utils/mount/network.c

It turns out that get_socket() accesses a global variable, "verbose," that
is only available in the mount command; yet it's in libnfs.a.  This creates
an undocumented API dependency that will bite someone someday.  This
mount-specific functionality doesn't really belong in libnfs.a anyway.

The simplest way to resolve this is to move all of the functions in
support/nfs/conn.c into utils/mount.  network.c seems like the logical
place to put these.  An added benefit is we eventually get to make
get_socket() static.

Let's start with the mnt_{open,close}clnt functions.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: clean up getport() function
Chuck Lever [Sat, 28 Jul 2007 21:50:24 +0000 (17:50 -0400)]
mount.nfs: clean up getport() function

Mostly comment clarification.  Also replace some naked undocumented
integers with macros, and make getport() static.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: fix hang when getport() uses TCP against unavailable servers
Chuck Lever [Sat, 28 Jul 2007 21:50:19 +0000 (17:50 -0400)]
mount.nfs: fix hang when getport() uses TCP against unavailable servers

If get_socket() can't get us an open TCP socket, we know the server is
down, so make  getport() exit early instead of hanging.  This logic is
copied from clnt_ping().

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoumount.nfs: eliminate a nearly empty header file.
Chuck Lever [Sat, 28 Jul 2007 21:50:14 +0000 (17:50 -0400)]
umount.nfs: eliminate a nearly empty header file.

Clean-up: move nfsumount() global declaration to nfs_mount.h, and remove
nfsumount.h.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoumount.nfs: Pass return codes from do_nfs_umount back
Chuck Lever [Sat, 28 Jul 2007 21:50:09 +0000 (17:50 -0400)]
umount.nfs: Pass return codes from do_nfs_umount back

Do we really care about these return codes?

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoumount.nfs: Make do_nfs_mount use conventional EX_ style return codes
Chuck Lever [Sat, 28 Jul 2007 21:50:04 +0000 (17:50 -0400)]
umount.nfs: Make do_nfs_mount use conventional EX_ style return codes

do_nfs_mount() should return EX_ style return codes and not 1 or 0 in order
to distinguish between usage errors and other problems (such as EX_FILEIO
or RPC errors).

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoumount.nfs: make _nfsumount() static
Chuck Lever [Sat, 28 Jul 2007 21:49:59 +0000 (17:49 -0400)]
umount.nfs: make _nfsumount() static

_nfsumount() is never called outside of nfsumount.c.  Also give it a more
conventional name.

Note that it's return code is ignored.  That will be addressed in a
subsequent patch.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoumount.nfs: make del_mtab() a static function
Chuck Lever [Sat, 28 Jul 2007 21:49:54 +0000 (17:49 -0400)]
umount.nfs: make del_mtab() a static function

Clean-up: del_mtab() isn't used outside of nfsumount.c.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoMake sure nfs_call_umount's callers are handling its return code correctly
Chuck Lever [Sat, 28 Jul 2007 21:49:49 +0000 (17:49 -0400)]
Make sure nfs_call_umount's callers are handling its return code correctly

umount.nfs is treating nfs_call_umount's return code like a standard mount
return code (EX_SOMETHING) when its really an RPC return code.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoumount.nfs: move nfs_call_umount to network.c
Chuck Lever [Sat, 28 Jul 2007 21:49:43 +0000 (17:49 -0400)]
umount.nfs: move nfs_call_umount to network.c

nfs_call_umount() is shared by nfsmount.c and nfsumount.c, and manages a
network function (building the RPC umount call to the server's MNT daemon).
So move it to network.c with other network-related functions.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoumount.nfs: make umount_usage() static
Chuck Lever [Sat, 28 Jul 2007 21:49:38 +0000 (17:49 -0400)]
umount.nfs: make umount_usage() static

No good reason to export umount_usage.  Make it static.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoumount.nfs: make umount.nfs use UDP by default
Chuck Lever [Sat, 28 Jul 2007 21:49:33 +0000 (17:49 -0400)]
umount.nfs: make umount.nfs use UDP by default

mount.nfs currently uses UDP by default when calling a MNT server.  Make
umount.nfs do the same.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoumount.nfs: some umount.nfs error return codes are confusing
Chuck Lever [Sat, 28 Jul 2007 21:49:28 +0000 (17:49 -0400)]
umount.nfs: some umount.nfs error return codes are confusing

umount.nfs should return the standard EX_ mount return codes.  At some
point in the past, it was returning 0 for failure and 1 for success, and
some of these have been changed and some haven't.  See if we can rectify
this.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: fix more nits with error messages
Chuck Lever [Sat, 28 Jul 2007 21:49:23 +0000 (17:49 -0400)]
mount.nfs: fix more nits with error messages

Catch-all.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoAdd -Wstrict-prototypes to compiler args, and fix warnings caused.
Neil Brown [Sun, 29 Jul 2007 07:20:10 +0000 (17:20 +1000)]
Add -Wstrict-prototypes to compiler args, and fix warnings caused.

17 years agoUse __fpurge to ensure single-line writes to cache files
J. Bruce Fields [Thu, 26 Jul 2007 20:30:46 +0000 (16:30 -0400)]
Use __fpurge to ensure single-line writes to cache files

On a recent Debian/Sid machine, I saw libc retrying stdio writes that
returned write errors.  The result is that if an export downcall returns
an error (which it can in normal operation, since it currently
(incorrectly) returns -ENOENT on any negative downcall), then subsequent
downcalls will write multiple lines (including the original line that
received the error).

The result is that the server fails to respond to any rpc call that
refers to an unexported mount point (such as a readdir of a directory
containing such a mountpoint), so client commands hang.

I don't know whether this libc behavior is correct or expected, but it
seems safest to add the __fpurge() (suggested by Neil) to ensure data is
thrown away.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agofix broken compile due to missing pseudoflavors.h
J. Bruce Fields [Mon, 16 Jul 2007 17:06:08 +0000 (13:06 -0400)]
fix broken compile due to missing pseudoflavors.h

Commit e9b0bed761bc77ba046f53be2ec324c4b61357ff should also have added
this file.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: White space clean up
Chuck Lever [Mon, 16 Jul 2007 20:29:32 +0000 (16:29 -0400)]
mount.nfs: White space clean up

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Use nfs_error in nfsmount.c, nfsumount.c, and nfs4mount.c
Chuck Lever [Mon, 16 Jul 2007 20:29:27 +0000 (16:29 -0400)]
mount.nfs: Use nfs_error in nfsmount.c, nfsumount.c, and nfs4mount.c

Clean up. - fprintf becomes nfs_error

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Error handling clean-up
Chuck Lever [Mon, 16 Jul 2007 20:29:22 +0000 (16:29 -0400)]
mount.nfs: Error handling clean-up

o  Use nfs_error( _() ) instead of fprintf(stderr,
o  Use the mount return code macros instead of bare integers
o  Free mount_point after it has been canonicalized

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: When -v is set and the mount succeeds, print the mount info
Chuck Lever [Mon, 16 Jul 2007 20:29:17 +0000 (16:29 -0400)]
mount.nfs: When -v is set and the mount succeeds, print the mount info

Add a bit of logic that appears to be in other mount helpers.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoRemove the running_bg parameter
Chuck Lever [Mon, 16 Jul 2007 20:29:12 +0000 (16:29 -0400)]
Remove the running_bg parameter

Clean up: when nfsmount and nfs4mount are called, running_bg is always set
to zero.  Remove the parameter from the call.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Change *flags to flags
Chuck Lever [Mon, 16 Jul 2007 20:29:06 +0000 (16:29 -0400)]
mount.nfs: Change *flags to flags

It's not necessary to treat the *flags parameter to nfsmount and nfs4mount
as an output parameter.  Nothing is passed back.  Replace it with a normal
call-by-value.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: No need to return nfs_mount_data structs
Chuck Lever [Mon, 16 Jul 2007 20:29:01 +0000 (16:29 -0400)]
mount.nfs: No need to return nfs_mount_data structs

Refactor mount processing slightly to remove an output parameter and an
unnecessary type cast.  The mount syscall is now made from inside
nfs_mount or nfs4mount, rather than in common code after those are called.

Code review suggests that EX_BG was never returned by mount.nfs because the
logic I just replaced was always returning EX_FAIL.  The new logic should
properly return EX_BG when appropriate.

However, it is unclear whether /bin/mount handles backgrounding the mount
request, or whether mount.nfs should.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Move MS_DUMMY and friends to header file
Chuck Lever [Mon, 16 Jul 2007 20:28:56 +0000 (16:28 -0400)]
mount.nfs: Move MS_DUMMY and friends to header file

We move the definitions of MS_USER and friends to our local copy of
mount_constants.h.  These will need to be available in nfsmount.c and
nfs4mount.c when we move the mount system call out of mount.c.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Move start_statd into nfs_mount
Chuck Lever [Mon, 16 Jul 2007 20:28:51 +0000 (16:28 -0400)]
mount.nfs: Move start_statd into nfs_mount

Move start_startd into network.c, and move the call inside of
nfs_mount, instead of immediately after - conceptually a better place
for it.

Also fix a minor nit:  Since the mount actually fails if start_statd
doesn't work, cause mount.nfs to exit with a status of EX_FAIL.

Still need to do something about "running_bg" in nfsmount.c:nfsmount().

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Move network functions into a common source module
Chuck Lever [Mon, 16 Jul 2007 20:28:46 +0000 (16:28 -0400)]
mount.nfs: Move network functions into a common source module

Separate network oriented functions from filesystem oriented
functions, for general cleanliness.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Eliminate some C macros that use implicit arguments
Chuck Lever [Mon, 16 Jul 2007 20:28:41 +0000 (16:28 -0400)]
mount.nfs: Eliminate some C macros that use implicit arguments

Get rid of nfs_probelist, mnt_probelist, and proto_probelist in order to
remove the use of HAVE_RELIABLE_TCP, MAX_NFSPROT, and MAX_MNTPROT.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Always preset nfs_mount_version
Chuck Lever [Mon, 16 Jul 2007 20:28:36 +0000 (16:28 -0400)]
mount.nfs: Always preset nfs_mount_version

nfs_mount_version is a global integer that is set based on a guess
about which nfs_mount_data version is appropriate for the kernel we're
running on.

Make it always available and have the correct value before calling mount
and unmount so they don't have to worry about setting it themselves.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Create a common source module for reporting mount errors
Chuck Lever [Mon, 16 Jul 2007 20:28:31 +0000 (16:28 -0400)]
mount.nfs: Create a common source module for reporting mount errors

Clean up, and pre-requisite for subsequent fixes.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: clean-up add_mtab
Chuck Lever [Mon, 16 Jul 2007 20:28:26 +0000 (16:28 -0400)]
mount.nfs: clean-up add_mtab

Clean up add_mtab(), and make /sbin/mount.nfs[4] return a proper error if
it fails.

Also include an unbalanced unlock_mtab() noticed by Steve D.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: /bin/mount already handles --bind & friends
Chuck Lever [Mon, 16 Jul 2007 20:28:20 +0000 (16:28 -0400)]
mount.nfs: /bin/mount already handles --bind & friends

Clean-up: remove logic to handle --bind and other such command-line
options from mount.nfs[4].

These options are already handled in /bin/mount, and the logic for handling
them in the NFS helper is currently disabled.  Other helpers such as
mount.ocfs2 appear not to support --bind (ie. they rely on /bin/mount to
do it).

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Remove support for "-t" option
Chuck Lever [Mon, 16 Jul 2007 20:28:15 +0000 (16:28 -0400)]
mount.nfs: Remove support for "-t" option

/bin/mount will never pass "-t" to a mount helper, since it passes the
fs-type in the name of the program it is executing.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Simplify generation of progname
Chuck Lever [Mon, 16 Jul 2007 20:28:10 +0000 (16:28 -0400)]
mount.nfs: Simplify generation of progname

Use basename() instead of our own majick.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agorpcdebug: Update 'rpcdebug' tool with recently added debugging flags
Chuck Lever [Mon, 16 Jul 2007 20:28:05 +0000 (16:28 -0400)]
rpcdebug: Update 'rpcdebug' tool with recently added debugging flags

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoFix umount.nfs exit status
Steinar H. Gunderson [Sat, 14 Jul 2007 09:18:48 +0000 (11:18 +0200)]
Fix umount.nfs exit status

Hi,

As per a bug report from a user:

mount.c seems to assume that nfsumount() uses standard C true/false
return values, and inverts them for the exit status (where 0 is
traditionally considered success). However, nfsumount() consistently
seems to use 0 for success, and thus a success gets returned as exit
status 1 and a failure as exit status 0. This confuses at least
the GNOME drive manager applet, and probably others as well.

Signed-off-by: Steinar H. Gunderson <sesse@debian.org>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoAdded missing unlock_mtab() call in the add_mtab()
Steve Dickson [Thu, 10 May 2007 20:02:15 +0000 (16:02 -0400)]
Added missing unlock_mtab() call in the add_mtab()
routine.

Signed-off-by: Steve Dickson <steved@redhat.com>
17 years agoThe wrong bit field is being passed to NFSCTL_TCPISSET()
Steve Dickson [Thu, 10 May 2007 19:04:07 +0000 (15:04 -0400)]
The wrong bit field is being passed to NFSCTL_TCPISSET()
during one of the sanity checks in rpc.nfsd.

Signed-off-by: Steve Dickson <steved@redhat.com>
17 years agodocument the sec= option
J. Bruce Fields [Thu, 5 Jul 2007 17:45:54 +0000 (13:45 -0400)]
document the sec= option

Document the sec= option in the exports man page.

Not done: it would be nice to have an example or two here (and not just
in the final "EXAMPLE" section, though that would be nice too).  I was
just too lazy to figure out the formatting.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoSupport sec= option to specify export security
J. Bruce Fields [Thu, 5 Jul 2007 17:45:53 +0000 (13:45 -0400)]
Support sec= option to specify export security

This adds support for reading sec= option and sending security data
through cache via "... secinfo n flavor1 flag1 ... flavorN flagN".

If sec= is missing, no secinfo option will be passed down.

Signed-off-by: Fred Isaman <iisaman@citi.umich.edu>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomove pseudoflavor information to common code
J. Bruce Fields [Thu, 5 Jul 2007 17:45:52 +0000 (13:45 -0400)]
move pseudoflavor information to common code

I'd like to be able to use the same pseudoflavor data in exportfs and
mountd; so move it to nfslib and a common include.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agofix warnings in mount.c
J. Bruce Fields [Thu, 5 Jul 2007 17:45:51 +0000 (13:45 -0400)]
fix warnings in mount.c

The compiler is warning because we aren't properly specifying the type
of the chk_mountpoint argument.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agogitignore updates
J. Bruce Fields [Thu, 5 Jul 2007 17:45:50 +0000 (13:45 -0400)]
gitignore updates

Update gitignore to ignore some generated files.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Fix retry= to handle lack of reserved port situation
Flavio Leitner [Tue, 10 Jul 2007 00:23:27 +0000 (10:23 +1000)]
mount.nfs: Fix retry= to handle lack of reserved port situation

In the case of several (>500) mounts running at the same time
with -o tcp, the number of attempts that succeed is about 300-500
because it run out of priviledged port (they are busy in TIME_WAIT
state).

Signed-off-by: Flavio Leitner <flavio.leitner@gmail.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoconfigure changed to corrently report the default for --enable-mount
Neil Brown [Tue, 10 Jul 2007 00:07:25 +0000 (10:07 +1000)]
configure changed to corrently report the default for --enable-mount

The default for "--enable-mount" was changed to 'yes' sometime ago,
but the help message in ./configure wasn't updated to match this.

Thanks to Chuck Level for pointing this out.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs: Add the mount option "nosharecache"
Trond Myklebust [Tue, 10 Jul 2007 00:03:22 +0000 (10:03 +1000)]
mount.nfs: Add the mount option "nosharecache"

Prior to David Howell's mount changes in 2.6.18, users who mounted
different directories which happened to be from the same filesystem on the
server would get different super blocks, and hence could choose different
mount options. As long as there were no hard linked files that crossed from
one subtree to another, this was quite safe.
Post the changes, if the two directories are on the same filesystem (have
the same 'fsid'), they will share the same super block, and hence the same
mount options.

Add a flag to allow users to elect not to share the NFS super block with
another mount point, even if the fsids are the same. This will allow
users to set different mount options for the two different super blocks, as
was previously possible. It is still up to the user to ensure that there
are no cache coherency issues when doing this, however the default
behaviour will be to share super blocks whenever two paths result in
the same fsid.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomount.nfs - NFSv4 mounts give wrong error message when server denies the mount
Steve Dickson [Thu, 17 May 2007 00:04:19 +0000 (10:04 +1000)]
mount.nfs - NFSv4 mounts give wrong error message when server denies the mount

When nfs4 mount fail because the exported directory does
not exist, the mount command claims the local mount point
does not exist which is wrong. This patch fixes that problem
as well as  makes the v4 mount failures look like v3/v2 failures.

Signed-off-by: Steve Dickson <steved@redhat.com>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoMemory leak in mountd
Steinar H. Gunderson [Fri, 11 May 2007 11:02:09 +0000 (21:02 +1000)]
Memory leak in mountd

In client_compose(), free() the hostent structure returned before
exiting. Normally, gethostbyaddr() returns a pointer to a static
struct, but this hostent comes from either get_reliable_hostbyaddr() or
get_hostent(), both which return a pointer they privately xmalloc()ed,
which thus can and should be free()d.

Signed-Off-By: Steinar H. Gunderson <sesse@debian.org>
17 years agoRelease 1.1.0 nfs-utils-1-1-0
Neil Brown [Fri, 11 May 2007 03:40:57 +0000 (13:40 +1000)]
Release 1.1.0

Update verison numbers(s) and make sure NEWS is uptodate.

17 years agonfs-utils: have mountd hold open etab file to force inode number to change
Jeff Layton [Wed, 9 May 2007 14:19:33 +0000 (10:19 -0400)]
nfs-utils: have mountd hold open etab file to force inode number to change

This patch changes mountd to hold the etab file open so that when it's
changed by exportfs, the inode number should change. We then change
auth_reload to reload the file based on whether st_ino is different
from the last time it was checked. It also changes auth_reload to
maintain a static counter value and return it instead of a timestamp
and fixes up get_exportlist accordingly. Finally, it adds some
comments to xtab_write to warn people about editing the etab in place.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
17 years agomount.nfs4: Remove checks for idmapd and gssd running.
Neil Brown [Fri, 11 May 2007 03:28:53 +0000 (13:28 +1000)]
mount.nfs4: Remove checks for idmapd and gssd running.

While it is nice to have the checks, nothing in this package
creates the files that are checked, so we shouldn't check them
yet.

17 years agoRemove rquotad
Neil Brown [Tue, 8 May 2007 04:43:28 +0000 (14:43 +1000)]
Remove rquotad

rquotad isn't really used by anyone - as you can tell by the fact that
it only works for ext2 and ext3 (if those).
The 'quota' package contains a working and maintained rquota and all
distros appear to use that one.  So remove rquotad from this package
to avoid confusion.

17 years agoupdate manpages for showmount and mountd
Jeff Layton [Mon, 7 May 2007 11:53:32 +0000 (07:53 -0400)]
update manpages for showmount and mountd

This patch updates the manpages for showmount and mountd. It adds a
description of the new mountd -r option, and a caveat about the unreliability
of showmount -a.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
17 years agoDetect version of libblkid and act accordingly.
Neil Brown [Thu, 3 May 2007 00:46:02 +0000 (10:46 +1000)]
Detect version of libblkid and act accordingly.

libblkid earlier than 1.40 has a memory leak bug that make it unsuitable
for use in mountd.
So detect the version and default to not using it if too old.  Give appropriate
warnings in various cases.

17 years agoAlways get addressless tickets
Kevin Coffman [Tue, 24 Apr 2007 16:26:55 +0000 (12:26 -0400)]
Always get addressless tickets

Make sure we get addressless tickets so we can function behind a NAT.
(Must use a different function to accomplish this with Heimdal.)

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agostatd - the files created are named for dns_name, so use that when unlinking.
Neil Brown [Wed, 2 May 2007 23:33:20 +0000 (09:33 +1000)]
statd - the files created are named for dns_name, so use that when unlinking.

Also free dns_name when freeing an 'nlist', so do the unlink before the free.

17 years agoChange version to 1.1.0-rc2 nfs-utils-1-1-0-rc2
Neil Brown [Fri, 20 Apr 2007 05:15:50 +0000 (15:15 +1000)]
Change version to 1.1.0-rc2

17 years agoDon't hide my_name in statd.
Neil Brown [Fri, 20 Apr 2007 05:14:35 +0000 (15:14 +1000)]
Don't hide my_name in statd.

statd now passes the 'my_name' from the SM_MON call faithfully to the
ha-callout and records it in the sm/ files.

17 years agoRelease notes updates: portmap and kerberos versions.
Neil Brown [Fri, 20 Apr 2007 04:41:51 +0000 (14:41 +1000)]
Release notes updates: portmap and kerberos versions.

17 years agoUpdate libgssapi requirements
Kevin Coffman [Thu, 19 Apr 2007 21:39:27 +0000 (17:39 -0400)]
Update libgssapi requirements

Update the required version of libgssapi from 0.9 to 0.11.
(Working with Heimdal requires 0.11.  Symbol versioning was
introduced in 0.10 and should be used everywhere, although
not absolutely required.)

17 years agoFactor out error message printing differences between MIT and Heimdal
Kevin Coffman [Thu, 19 Apr 2007 18:45:19 +0000 (14:45 -0400)]
Factor out error message printing differences between MIT and Heimdal

Use a common function that factors out differences between MIT
and Heimdal in getting the right error message printed.

Add an autoconf check to see if the newer error message function
is available.

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
17 years agoTell Heimdal gss code the correct credential to use
Kevin Coffman [Wed, 18 Apr 2007 23:01:59 +0000 (19:01 -0400)]
Tell Heimdal gss code the correct credential to use

Always use the gss_krb5_ccache_name() function to tell Heimdal
which credentials to use.

17 years agoMake that last patch compile...
Neil Brown [Mon, 16 Apr 2007 01:20:24 +0000 (11:20 +1000)]
Make that last patch compile...

17 years agoBe more cautious about use for privilege ports (<1024).
Neil Brown [Mon, 16 Apr 2007 01:15:40 +0000 (11:15 +1000)]
Be more cautious about use for privilege ports (<1024).

Ports < 1024 are a scarce resource and should not be used
carelessly.  Technically they should be not used at all without
registration with IANA, but sometimes we need them despite that.

So: for the socket that RPC services listen on, don't use a <1024 port
by default.  There is no need.

For sockets that we send messages on, that are long-lived, and that might
need to appear 'privileged', avoid using a number that is registered in
/etc/services if possible.

17 years agoREADME - updates to daemon start order.
Kevin Coffman [Wed, 4 Apr 2007 02:57:21 +0000 (12:57 +1000)]
README - updates to daemon start order.

17 years agoNEWS - add info about gssd changes.
Kevin Coffman [Wed, 4 Apr 2007 02:47:35 +0000 (12:47 +1000)]
NEWS - add info about gssd changes.

17 years agoNEWS and README updates.
Neil Brown [Tue, 3 Apr 2007 01:26:58 +0000 (11:26 +1000)]
NEWS and README updates.

Particularly details of daemon startup order have been added to README.

17 years agostatd - fix some compile warnings
Neil Brown [Tue, 3 Apr 2007 00:37:59 +0000 (10:37 +1000)]
statd - fix some compile warnings

17 years agoexportfs - test exportability of filesystems when exportfs is run.
Neil Brown [Mon, 2 Apr 2007 03:26:05 +0000 (13:26 +1000)]
exportfs - test exportability of filesystems when exportfs is run.

When exporting a filesystem test to see if the kernel is likely
to accept the export and print suitable warning message if not.
Don't actually fail the 'exportfs' as by the time a MOUNT request
arrives, the filesystem might be exportable.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agomountd - improve checks and error messages for export failure.
Neil Brown [Mon, 2 Apr 2007 03:26:01 +0000 (13:26 +1000)]
mountd - improve checks and error messages for export failure.

If an attempt is made to export a non-(dir|file), just ignore it.
This should get caught by exportfs.

If an attempt is made to export a non-exportable filesystem, report
an error.  Hopefully exportfs can trap some these as well, but
catching them in mountd as well is good.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoTell NFS/lockd client what that local state number is.
Neil Brown [Mon, 2 Apr 2007 03:25:40 +0000 (13:25 +1000)]
Tell NFS/lockd client what that local state number is.

Both SM_STAT and SM_MON can return the state of an NSM, but it is
unclear which NSM they return the state of, so the value cannot be
used, and lockd doesn't use it.
Document this confusion, and give the current state to the kernel
via a sysctl if that sysctl is available (since about 2.6.19).
This should make is possible for the NFS server to detect a small
class of bad SM_NOTIFY packets and not flush locks in that case.

Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoAdd a debug message indicating that gssd is ready to process requests
Kevin Coffman [Fri, 30 Mar 2007 22:32:21 +0000 (18:32 -0400)]
Add a debug message indicating that gssd is ready to process requests

Add a debug message indicating that gssd is ready to process requests

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoRemove the now unused functions
Kevin Coffman [Fri, 30 Mar 2007 22:32:19 +0000 (18:32 -0400)]
Remove the now unused functions

Remove functions that are no longer used when when obtaining
machine credentials.

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoClean up gssd_get_single_krb5_cred and its debugging messages
Kevin Coffman [Fri, 30 Mar 2007 22:32:17 +0000 (18:32 -0400)]
Clean up gssd_get_single_krb5_cred and its debugging messages

Clean up gssd_get_single_krb5_cred and its debugging messages

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoUse newly added keytab functions
Kevin Coffman [Fri, 30 Mar 2007 22:32:14 +0000 (18:32 -0400)]
Use newly added keytab functions

Use the new functions added in the previous patch.

Obtain machine credentials in a pre-determined order

Look for appropriate machine credentials in the following order:
     root/<fqdn>@REALM
     nfs/<fqdn>@REALM
     host/<fqdn>@REALM
     root/<any-name>@REALM
     nfs/<any-name>@REALM
     host/<any-name>@REALM

The first matching credential will be used.

Also, the machine credentials to be used are now determined
"on-demand" rather than at gssd startup.  This allows keytab
additions to be noticed and used without requiring a restart of gssd.

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoAdd new keytab handling functions for dealing with machine credentials
Kevin Coffman [Fri, 30 Mar 2007 22:32:12 +0000 (18:32 -0400)]
Add new keytab handling functions for dealing with machine credentials

Add new functions that will be used in the next patch.  The new behavior
is to search for particular keytab entries in a specified order:

root/<fqdn>@<REALM>
nfs/<fqdn>@<REALM>
host/<fqdn>@<REALM>
root/<any-name>@<REALM>
nfs/<any-name>@<REALM>
host/<any-name>@<REALM>

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoHide differences between MIT and Heimdal in macros
Kevin Coffman [Fri, 30 Mar 2007 22:32:10 +0000 (18:32 -0400)]
Hide differences between MIT and Heimdal in macros

Clean up a lot of #ifdef'd code using macros, masking
the differences between MIT and Heimdal implementations.
The currently unused macros will be used in later patches.

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoFix memory leak on error path of limit_krb5_enctypes()
Kevin Coffman [Fri, 30 Mar 2007 22:32:08 +0000 (18:32 -0400)]
Fix memory leak on error path of limit_krb5_enctypes()

Return credential on error path of limit_krb5_enctypes()

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoAdd missing newlines
Kevin Coffman [Fri, 30 Mar 2007 22:32:05 +0000 (18:32 -0400)]
Add missing newlines

Add missing newlines to error messages.

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
17 years agoUpdate version to 1.1.0-rc1 nfs-utils-1-1-0-rc1
Neil Brown [Thu, 29 Mar 2007 03:55:33 +0000 (13:55 +1000)]
Update version to 1.1.0-rc1

17 years agoNew 'NEWS' file with release-notes for 1.1.0
Neil Brown [Thu, 29 Mar 2007 03:54:45 +0000 (13:54 +1000)]
New 'NEWS' file with release-notes for 1.1.0

17 years agoAdd start-statd script.
Neil Brown [Thu, 29 Mar 2007 03:51:20 +0000 (13:51 +1000)]
Add start-statd script.

This script is used by mount.nfs to run statd if needed.
It can be locally modified to change arguements if required.

17 years agoRename configure.in to configure.ac
Neil Brown [Thu, 29 Mar 2007 03:39:16 +0000 (13:39 +1000)]
Rename configure.in to configure.ac

It is a more standard name...

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>