| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
nfsdcltrack/sqlite.c:218: leaked_storage: Variable "err" going out
of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
mountd/fsloc.c:97: overwrite_var: Overwriting "mp" in
"mp = calloc(1UL, 16UL)" leaks the storage that "mp" points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
mountd/cache.c:1244:3: warning: statement will never be
executed [-Wswitch-unreachable]
mountd/cache.c:1260: leaked_storage: Variable "locations"
going out of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
mount/stropts.c:986: leaked_storage: Variable "address"
going out of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
mount/nfsmount.c:455: leaked_storage: Variable "mounthost" going
out of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
mount/configfile.c:410: leaked_storage: Variable "config_opts"
going out of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
gssd/krb5_util.c:696: overwrite_var: Overwriting "k5err" in
"k5err = gssd_k5_err_msg(context, code)" leaks
the storage that "k5err" points to.
gssd/krb5_util.c:737: overwrite_var: Overwriting "k5err" in
"k5err = gssd_k5_err_msg(context, code)" leaks
the storage that "k5err" points to.
gssd/krb5_util.c:899: overwrite_var: Overwriting "k5err" in
"k5err = gssd_k5_err_msg(context, code)" leaks
the storage that "k5err" points to.
krb5_util.c:1173: leaked_storage: Variable "l" going out
of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
blkmapd/device-discovery.c:190: leaked_storage: Variable "serial"
going out of scope leaks the storage it points to.
blkmapd/device-discovery.c:378: overwrite_var: Overwriting handle
"bl_pipe_fd" in "bl_pipe_fd = open(bl_pipe_file, 2)" leaks the handle.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
systemd/rpc-pipefs-generator.c:73: leaked_storage: Variable "pipefs_unit"
going out of scope leaks the storage it points to
systemd/rpc-pipefs-generator.c:77: leaked_storage: Variable "pipefs_unit"
going out of scope leaks the storage it points to.
systemd/rpc-pipefs-generator.c:85: leaked_storage: Variable "pipefs_unit"
going out of scope leaks the storage it points to.
systemd/rpc-pipefs-generator.c:94: leaked_storage: Variable "pipefs_unit"
going out of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
nsm/file.c:536: leaked_handle: Handle variable "fd" going
out of scope leaks the handle
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
nfsidmap/static.c:350: leaked_storage: Variable "princ_list"
going out of scope leaks the storage it points to.
nfsidmap/static.c:358: leaked_storage: Variable "princ_list"
going out of scope leaks the storage it points to.
nfsidmap/static.c:360: leaked_storage: Variable "unode"
going out of scope leaks the storage it points to.
nfsidmap/static.c:382: leaked_storage: Variable "princ_list"
going out of scope leaks the storage it points to.
nfsidmap/static.c:390: leaked_storage: Variable "gnode"
going out of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
nfsidmap/libnfsidmap.c:410: leaked_storage: Variable "nfs4_methods"
going out of scope leaks the storage it points to.
ibnfsidmap.c:483: leaked_storage: Variable "gss_methods"
going out of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
nfs/xlog.c:139: leaked_storage: Variable "kinds" going out
of scope leaks the storage it points to.
nfs/xlog.c:142: leaked_storage: Variable "kinds" going out
of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
nfs/xcommon.c:63: incorrect_free: "free" frees incorrect pointer "(void *)s".
nfs/xcommon.c:81: incorrect_free: "free" frees incorrect pointer "(void *)s".
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
nfs/svc_socket.c:137: leaked_handle: Handle variable "sock"
going out of scope leaks the handle.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
nfs/rpcmisc.c:105: leaked_handle: Handle variable "sock"
going out of scope leaks the handle.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
nfs/mydaemon.c:130: leaked_handle: Handle variable "tempfd"
going out of scope leaks the handle.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
nfs/exports.c:717: leaked_storage: Variable "id" going out
of scope leaks the storage it points to.
nfs/exports.c:727: leaked_storage: Variable "id" going out
of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
junction/path.c:167: leaked_storage: Variable "start" going out
of scope leaks the storage it points to.
junction/path.c:331: leaked_storage: Variable "normalized" going out
of scope leaks the storage it points to.
junction/path.c:340: leaked_storage: Variable "normalized" going out
of scope leaks the storage it points to.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
Otherwise compilation can fail with an implicit declaration of basename.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
Otherwise compilation can fail with incompatible pointer type.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds a one-time "upgrade" when using nfsdcld for the first
time. During initialization of the database, we try to copy records
from the old nfdscltrack database and from the legacy v4recovery
directory (although we don't expect to find records in both places).
nfsdcltrack stores the client name string so the handling of those
records is straightforward. Legacy records are md5 hashes of the client
name string, so we prefix them with "hash:" as way to let knfsd know
that this is a legacy record. knfsd will need a fallback check in the
event that it cannot find a reclaim record using the client name string.
Upon receipt of the first "GraceDone" upcall we clean out any records
from the old nfsdcltrack database and delete any subdirectories under
the v4recovery directory.
Signed-off-by: Scott Mayhew <smayhew@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
| |
Signed-off-by: Scott Mayhew <smayhew@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
| |
Signed-off-by: Scott Mayhew <smayhew@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Change the -p option to specify the rpc_pipefs mountpoint rather than
the full path to the cld pipe file. This is consistent with other
daemons that use the rpc_pipefs filesystem.
Signed-off-by: Scott Mayhew <smayhew@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
| |
Get rid of sqlite_query_reclaiming() and sqlite_remove_unreclaimed(),
which are not used.
Signed-off-by: Scott Mayhew <smayhew@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) Adopt the concept of "reboot epochs" (but not coordinated grace
periods via the "need" and "enforcing" flags) from Jeff Layton's
"Active/Active NFS Server Recovery" presentation from the Fall 2018 NFS
Bakeathon. See
http://nfsv4bat.org/Documents/BakeAThon/2018/Active_Active%20NFS%20Server%20Recovery.pdf
- add a new table "grace" which contains two integer columns
representing the "current" epoch (where new client records are stored)
and the "recovery" epoch (which has the records for clients that are
allowed to recover)
- replace the "clients" table with table(s) named "rec-CCCCCCCCCCCCCCCC"
(where C is the hex value of the epoch), containing a single column
"id" which stores the client id string
- when going from normal operation into grace, the current epoch becomes
the recovery epoch, the current epoch is incremented, and a new table
is created for the current epoch. Clients are allowed to reclaim if
they have a record in the table corresponding to the recovery epoch
and new records are added to the table corresponding to the current
epoch.
- when moving from grace back to normal operation, the table associated
with the recovery epoch is deleted and the recovery epoch becomes
zero.
- if the server restarts before exiting the previous grace period, then
the epochs are not changed, and all records in the table associated
with the "current" epoch are cleared out.
2) Allow knfsd to "slurp" the client records during startup.
During client tracking initialization, knfsd will do an upcall to get a
list of clients from the database. nfsdcld will do one downcall with a
status of -EINPROGRESS for each client record in the database, followed
by a final downcall with a status of 0. This will allow 2 things
- knfsd can check whether a client is allowed to reclaim without
performing an upcall to nfsdcld
- knfsd can decide to end the grace period early by tracking the number
of RECLAIM_COMPLETE operations it receives from "known" clients, or
it can skip the grace period altogether if no clients are allowed
to reclaim.
Signed-off-by: Scott Mayhew <smayhew@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
| |
The schema for the db used by nfsdcld is going to diverge quite a bit
from that used by nfsdcltrack. It will be easier if the programs are
kept in separate directories.
Signed-off-by: Scott Mayhew <smayhew@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 2cf11ec6ed261ef56bbd0d73ff404fe69f1fefb0.
nfsdcld was originally deprecated in favor of a usermodehelper, so as to
not require another running daemon. But that turned out to make
namespaced nfsd's too difficult, so this commit brings back nfsdcld.
A few things have been changed since nfsdcld was removed in 2012:
- libnfs.a is now libnfs.la
- sqlite_insert_client and sqlite_check_client both take a bool
has_session which is being hard-coded to false for now.
- sqlite_insert_client also takes a bool zerotime which is being
hard-coded to false.
- an xlog() call whose arguments did not match the format string
(and could crash nfsdcld) has been fixed
- cld_pipe_open() now calls event_initialized() rather than checking for
EVLIST_INIT directly (which does not compile with newer versions
of libevent).
Signed-off-by: Scott Mayhew <smayhew@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
When changes are written to nfs.conf the old method of building a new file
and then switching them leaves less opportunities for race conditions
against 3rd party tools but loses any existing permissions, ownerships,
attributes, etc. This patch instead uses an advisory flock to guard the
contents whilst it reads, modifies, and then rewrites the existing file.
Signed-off-by: Justin Mitchell <jumitche@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
list is a reserved word in python and should not be used as a variable
name. Changing list to devicelist for list_nfs_mounts()
Fixes: https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/1821261
Signed-off-by: Matthew Ruffell <matthew.ruffell@canonical.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
If we don't find rpcgen let the user know about it rather
than getting an error later during make.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
It also adds the commented out entries in the nfs.conf
default file.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1668026
Signed-off-by: Pierguido Lambri <plambri@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
| |
This helps debug what is going on.
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
Also cleaned up how nfs.conf is read.
Signed-off-by: Justin Mitchell <jumitche@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
| |
Cleaned up the nfs.conf parsing and added the setting
of the force to the nfs.conf parsing
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The macro HAVE_GETRPCBYNUMBER_R is set based on whether the
`getrpcbynumber_r` function was found by autoconf or not. While another
location correctly checks whether it is set by using `#ifdef`,
`getservport()` instead wrongly uses `#if HAVE_GETRPCBYNUMBER_R`. This
may cause a compilation error with gcc with "-Werror=undef" if the macro
has not been defined.
Fix the error by using `#ifdef` instead.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
While making use of the PATH_MAX constant, "file.c" does not include the
"limits.h" header. While it is being transitively included via other
headers on most platforms, it is not on e.g. musl-based systems.
Add the include to fix compilation.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since glibc 2.2, the function res_querydomain(3) is implemented as a
define to `__res_querydomain`. Due to this implementation detail, using
`AC_CHECK_LIB` with a symbol name of "res_querydomain" will cause a
linking failure and thus fail to detect its availability. This is why
right now, we try to detect availability of `__res_querydomain` instead.
Unfortunately, this may break on other platforms where there is no
`__res_querydomain` but only the function without leading underscores.
To fix this, we can perform another `AC_CHECK_LIB([resolv],
[res_querydomain], ...)` call in case where the other one was not found
and only raise an error if both symbols weren't found.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Afer the update to musl 1.1.21 freeaddrinfo is broken in some places in
the nfs-utils code because glibc seems to ignore when freeaddrinfo is
called with a NULL pointer which seems to be not defined in the spec.
See: https://www.openwall.com/lists/musl/2019/02/03/4
The free in support/export/hostname.c is removed too
See: https://www.openwall.com/lists/musl/2019/02/17/2
Define and use wrapper function nfs_freeaddrinfo to handle
freeaddrinfo versions that don't tolerate NULL pointers
Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Peter Wagner <tripolar@gmx.at>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Peter Wagner <tripolar@gmx.at> reports a portability issue with
freeing ai_canonname (and subsequently replacing that pointer via
strdup(3)). The relevant standards text is:
> If nodename is not null, and if requested by the AI_CANONNAME
> flag, the ai_canonname field of the first returned addrinfo
> structure shall point to a null-terminated string containing the
> canonical name corresponding to the input nodename; if the
> canonical name is not available, then ai_canonname shall refer to
> the nodename argument or a string with the same contents.
There is no indication that this string may be freed using free(3).
Eg, the library could have allocated it as part of the addrinfo
struct itself, or it could point to static memory. The Linux man
page is equally silent on this issue.
There is only one caller to host_reliable_addrinfo() that actually
uses the string in ai->ai_canonname, and then only for debugging
messages. Change those to display the IP address instead.
Signed-off-by: Peter Wagner <tripolar@gmx.at>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
| |
Reported-by: Adam DiFrischia <adifrischia@curtisswright.com>
BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=333
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
| |
With the latest C99-compliant gcc printf, sprintf, etc
now only support up to 4k in buffer sizes. There were
only a couple places that had to change to not
violated this new restriction
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The libnfs.a is under ../support/nfs/.libs/ now,
update the reference path accordingly to fix below
build error when run "make -C tests statdb_dump":
| make: *** No rule to make target '../support/nfs/libnfs.a', needed by 'statdb_dump'. Stop.
And below error when run "make -C tests/nsm_client nsm_client"
| make: *** No rule to make target '../../support/nfs/libnfs.a', needed by 'nsm_client'. Stop.
Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
| |
Link the static libs before the dynamic libs allowing
the routines in the static libs to be defined
by the dynamic libs
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
| |
The path set with --with-pluginpath is not currently
used when installing plugins. It should be.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When NFS filesytems are mounted, nfs-client.target really should
be enabled. However it is possible to mount NFS filesystems
without this (providing gss isn't used) and it mostly works.
One aspect that doesn't work is that sm-notify isn't run, so the server
isn't told to drop any locks from the previous client instance.
This can result in confusing failures: if a client crashes while
holding a lock, it won't be able to get the same lock after a reboot.
While this isn't a complete solution (nfs-client really should be
enabled), adding a dependency from rpc-statd to rpc-statd-notify is
easy, has no down sides, and could help avoid confusion.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A recent change to set IgnoreOnIsolate for rpc-statd
isn't quite sufficient (though it doesn't hurt).
While rpc-statd does remain when
systemctl isolate multi-user
is run, its dependencies don't remain, so rpcbind might
get killed, which makes rpc.statd rather useless.
The reason this is all an issue is that systemd doesn't know that
rpc-statd is needed - mount.nfs explicitly starts it rather than
having a dependency start it.
This can be rectified by explicitly telling systemd about the
dependency using "systemctl add-wants". This can be done in the
start-statd script, at the same time that rpc-statd is started.
As --runtime dependency is used so that it doesn't persist across
reboots. A new dependency will be created on next boot if an NFSv3
filesystem is mounted.
With this in place, both rpc.statd and rpcbind remain.
Actually, rpcbind.service is stopped, but rpcbind.socket remains,
and when anything tries to contact rpcbind, rpcbind.service
is automatically started and it re-reads its saved state.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A recent commit caused an error message (but didn't actually
trigger an error) for a config file line like:
foo =
There is no good reason to treat this as an error, and we (SUSE) have
established practice of expecting these to be accepted.
Specifically "/etc/nfs.conf" includes "/etc/sysconfig/nfs" which
contains lots of empty definitions.
So remove the error message.
Fixes: 1c2c18806800 ("nfs.conf: Removed buffer overruns")
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
The internal rpcgen is not able to generate -Wstrict-prototypes free code,
the problematic files are:
./tests/nsm_client/nlm_sm_inter_svc.c
./support/nsm/sm_inter_svc.c
Signed-off-by: Yang Bo <rslovers@yandex.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
|