| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
| |
mounts. It should be 2 for fg and 10000 for bg. nfsmount() sets it
properly, but there is a potential corner case. If someone explicitly
sets retry=10000 on a fg mount, then it will be reset to 2.
Fix this by having retry default to -1 for both flavors, and then reset if
needed after the mount options have been parsed.
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
EACCES is a non-fatal error which means the mount will be
retied. This caused mounts to hang for 2mins when the client
does not have permission to access the export. In a strict
interpretation, the error that should be returned is EPERM, but
this is not always the case. So due to the fuzzy interpretation,
of EPERM and EACCES, EACCESS is now a fatal error
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
| |
Signed-off-by: Li Yewang <lyw@cn.fujitsu.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Mountd used to advertise AUTH_NULL as the first flavour on
the list, which means that it prefers AUTH_NULL to anything
else (as per RFC 2623 section 2.7).
- Mount.nfs used to scan the returned list in reverse order,
and stopping at the first AUTH_NULL or AUTH_SYS encountered.
If a server advertises (AUTH_SYS, AUTH_NULL), it will by
default choose AUTH_NULL and have degraded access.
I've fixed mount.nfs to scan from the beginning. For mountd,
it does not advertise AUTH_NULL anymore. This is necessary
to avoid backward compatibility issue. If AUTH_NULL appears
in the list, either the new or the old client will choose
that over AUTH_SYS.
Tested the server/client combination against the previous
versions, as well as Solaris and FreeBSD.
Signed-off-by: bc Wong <bcwong@cisco.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
utils/mount/error.c and utils/mount/mount.c, but appropriate HAVE_CONFIG_H
checks were not added at the same time.
In addition, several other .c files under utils/mount reference
autoconf-generated HAVE_ macros, but don't appear to include config.h
Also, Heinz-Ado Arnolds <arnolds@MPA-Garching.MPG.DE> reports that this
patch is needed to ensure START_STATD is properly defined in
utils/mount/network.c. Otherwise start_statd() is always a no-op, even if
the configure script defines an appropriate statd start-up script.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Cc: Heinz-Ado Arnolds <arnolds@MPA-Garching.MPG.DE>
Signed-off-by: Steve Dickson <steved@dickson.boston.devel.redhat.com>
|
|
|
|
|
| |
Signed-off-by: Steinar H. Gunderson <sgunderson@bigfoot.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
grpquota options are ignored. (They are, however, used by the quota
tools, so having them in fstab can be useful.) Make mount.nfs ignore
them properly, matching the man page. There are a few aliases (like
usrjquota) that are parsed by quota, but as these are not documented
nor seem to be widely used, they are not included.
Signed-off-by: Steinar H. Gunderson <sgunderson@bigfoot.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
update the mailing list address used to report bugs in nfs-utils.
Removed the BUGS section in the mount.nfs and umount.nfs man pages since
they weren't consistent with the contents of the BUGS sections in others
in nfs-utils.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
| |
compatible with the mount command in util-linux-ng
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
MNT program number.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
NFS program number for a very long time.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
to manipulate /etc/mtab (setmntent) but, everything else in nfs-utils
uses a local private version (nfs_setmntent). The local version does
some extra mangling of the mtab entries.
We should check what util-linux does these days to be sure, but for now,
let's make the mount.nfs command use the nfs_ variants of setmntent().
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
| |
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
nolocks" option, which doesn't exist. It should say "-o nolock".
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
in the nfs(5) man page.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
based mount(2) system call for kernel version 2.6.23 and later.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
| |
nfs(5) manual page.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Don Domingo <ddomingo@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
e.g. probe_mnt1_first or probe_mnt3_first - probe_both will first
probe the appropriate NFS version and then, if that succeeds, probe
the actual mount version. However instead of probing the target mount
version, it probes the "most appropriate" mount version for the given NFS version.
This results in it probing:
NFSv2, MOUNTv1
twice rather than
NFSv2, MOUNTv1
NFSv2, MOUNTv2
as would be more correct.
This patch removes the "choose most correct" step and just use the
current mouint version for the probe_vers array.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It will first probe for NFS version 3, which will succeed (assuming the
kernel supported NFSv3), then it will check the matching mountd version (3)
and probe_port on discovering that isn't supported will try other versions,
find "1" is supported will succeed.
This leaves up using mount version 1 for an NFSv3 mount, which doesn't work
and leads to a SIGSEGV
There is no case where trying other versions is needed the request one is
not supported, so simply remove that code.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Neil observed that po_rightmost() now returns enum values from both
enum {
PO_NOT_FOUND = 0,
PO_FOUND = 1,
}
and
enum {
PO_KEY2_RIGHTMOST = 1,
PO_KEY1_RIGHTMOST = -1,
}
It would be cleaner to use a single enum for po_rightmost()'s return value.
We take the next logical step and create specific types for the return
values in order to ensure we don't mix the enum values, and to document
explicitly what return values callers can expect.
This could have been a simpler patch, but I think the end result is a
cleaner overall parser API.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, if the mtab record didn't mention a version, unmount
would assume a v3 umount and send an UNMOUNT request accordingly.
This is wrong.
So remove the 'v3' assumption, and allow probe_port to continue when
it gets a version number mis-match.
Also there was some overloading of the meaning of pm_vers==0 relating
to v4 mounts. As do_nfs_umount is never called for v4, rename it to
do_nfs_umount23, and remove v4 handling from there and from
nfs_call_umount.
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
| |
If we fail to talk to the NFS server when unmounted a v2 or v3 mount,
still do the unmount, but allow the error to propagate up.
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
| |
We have all the pre-requisites now, so add "fg" and "bg" mount processing
to text-based NFS mounts.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
| |
Add helper functions that handle background mounts; one each for
foreground processing (to try the request, and determine when to fork);
and one for background processing (retry the request multiple times as
a forked background daemon).
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make the differences between the foreground and background mount logic
explicit by creating separate functions to handle each -- think of them as
separate scripts for doing a foreground or a background mount.
NFS foreground mounts are supposed to retry for a little while before
giving up. Add a function to handle this.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The text-based mount.nfs program must distinguish between different types
of errors returned from the kernel. Permanent errors, like bad mount
options, should cause an immediate failure. Temporary errors, such as a
connection timeout, should result in a retry of some type.
Add a function that sorts between the two types of errors. The list of
permanent errors can be adjusted later if needed.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
| |
Expose support for NFS version and transport protocol fallback for NFSv2/3
mounts.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the initial user-specified options fail (with EOPNOTSUPP or
EPROTONOSUPPORT) then the server has rejected the requested NFS version
or transport protocol.
In that case, probe the server, then construct a fresh set of mount
options that ask for the specific mountd and NFS version and transport
protocol that the server supports. Rewrite the mount options based on
the results of the probe, then try the request again.
An additional kernel patch is required to cause the kernel to return
EOPNOTSUPP when an rpcbind fails during a NULL request.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
| |
Introduce a function for probing the server for what it supports, and then
rewriting the mount options using the probe results.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
| |
I forgot to add symbolic return codes for po_rightmost(). Add return codes
for PO_KEY1_RIGHTMOST and PO_KEY2_RIGHTMOST.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
| |
Add simple helper functions that invoke the mount(2) system call for
text-based mounts. These look the same right now, but the NFSv2/v3 helper
will become more complex over the following patches as we implement version
and transport protocol fallback.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
| |
nfsmount_s() and nfs4mount_s() are no longer used, so eliminate them.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
| |
The top-level logic that handles text-based mount options is mostly the
same for NFS and NFSv4 mounts. To improve maintainability, let's combine
the nfsmount_s() and nfs4mount_s() functions.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
| |
We're about to combine nfsmount_s() and nfs4mount_s(). Refactor the
version-specific mount option processing into a separate function.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
| |
Spell out _option, just like other mount-option specific functions.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The 'mounthost=' option names a host where the mountd service is running.
The option is used to direct clients to use a different host for the mountd
procotol than the host where the NFS service is running.
The nfs(5) man page shows that the 'mounthost=' option takes a name, not
an address. The kernel's text-based mount option parsing logic expects an
IPv4 address. This is necessary because the kernel cannot itself resolve
hostnames to addresses.
Resolve the hostname and pass in a new mount option that contains the
resolved address, 'mountaddr=', to the kernel.
This requires a patch to the kernel to recognize the new 'mountaddr='
option, and to change the 'mounthost=' parsing logic to treat the value of
this option as a simple string.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
| |
Remove older string parsing functions in the text-based mount.nfs
implementation that are now no longer used.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
| |
Use the new mount option parsing functions to handle existing mount
option string parsing needs in the text-based mount implementation.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
| |
Introduce parser init and destroy calls in the main text-based mount
handling routines. Don't actually use the parsed option object yet.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
| |
I'm about to add an object or two that needs to be freed before the main
functions exit. Prepare the logic by adding an 'out' label and some
goto's.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce, but don't yet use, functions that will eventually replace
append_addr_opt() and append_clientaddr_opt().
Note the behavioral change in append_addr_opt() -- it simply removes
any previous 'addr=' rather than throwing an error.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adapt a parsing trick used by Python.
Parse mount option strings into an abstract data type so we don't have to
copy and/or tokenize the whole option string multiple times while trying
to manipulate the mount options. Then, just before calling the mount(2)
system call, convert the object back into a C string.
One major advantage of this approach is that we can copy the final version
of the mount options into /etc/mtab when we're done, instead of copying in
the original mount options that the user specified. Any fallback from NFS
v3 to NFS v2 or TCP to UDP that was done by mount.nfs will be reflected in
/etc/mtab.
This patch adds methods for creating and manipulating mount option data
objects.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To quote the strtok(3) man page: "Avoid using these functions."
OK. We've created our own. The main reason for this is that strtok(3)
doesn't handle quoted delimiters at all. We need to handle this:
context="foo,bar"
where 'context' is a single mount option that sets a token string that
possibly uses the same delimiter that the mount command uses to separate
options (that is, a comma).
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
| |
No need to talk to mountd when unmounting nfs4 filesystems.
Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Acked-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
| |
umount.nfs shouldn't remove a busy file system from /etc/mtab, and should
report and return an error. I also added an extra "goto" to make the flow
of control more clear, and to reduce the chance that a future change in
this logic will break it.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
| |
Clean up: move the remount logic into its own function. This makes it
easier to fix a bug in the next patch.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
| |
Replace leading blanks with tabs in del_mtab().
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
| |
The text-based mount(2) system call API can return some additional errors
that we would like to report correctly to our users. These should be safe
to use with the legacy mount(2) ABI as well.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The mount_errors() function prints an error based on what just happened in
the user-space RPC library. This is meaningless for text-based mounts,
since they don't use the RPC library for most things.
Add a new error printing function that the text-based logic can use to
report an error.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|
|
|
|
|
|
|
|
|
|
| |
The function mount_errors() actually reports RPC errors generated by the
user-land RPC library. We're about to add a similar function for reporting
system call errors via errno, so rename mount_errors() to be more specific
about what it does.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
|