#14161 closed enhancement (fixed)

nfs-utils-2.5.2

Reported by: Bruce Dubbs Owned by: Douglas R. Reno
Priority: normal Milestone: 10.1
Component: BOOK Version: SVN
Severity: normal Keywords:
Cc:

Description

New point version.

Change History (3)

comment:1 by Douglas R. Reno, 10 months ago

Owner: changed from blfs-book to Douglas R. Reno
Status: newassigned

comment:2 by Douglas R. Reno, 10 months ago

Release: 2.5.2
mount.nfs: Fail when v3 related options are passed for v4 mounts    
    Added the missing v3-only mount option to
    list that should cause v4 mount to fail.
clddb-tool was recently renamed to nfsdclddb.
    Unfortunately the nfsdcld man page wasn't told.
gssd: Cleaned up the level 2 debugging statements
mountd: Ignore transient and non-fatal filesystem errors in nfsd_export
    If the mount point check in nfsd_export fails due to a transient error,
    then ignore it to avoid spurious NFSERR_STALE errors being returned by
    knfsd.
nfsidmap:umich_ldap return success only if attributes are found in ldap resp.
    Return ENOENT if the UID/GID attributes are not found in ldap response
nfsiostat/mountstats: Drop autofs entries before calling compare_iostats()
    nfsiostat/mountstats can fail with below KeyError when old stat and
    new stat data go out of sync.
    $ mountstats iostat 1 3
    Traceback (most recent call last):
      File "/usr/sbin/mountstats", line 1092, in <module>
        res = main()
      File "/usr/sbin/mountstats", line 1081, in main
        return args.func(args)
      File "/usr/sbin/mountstats", line 965, in iostat_command
        print_iostat_summary(old_mountstats, mountstats, devices, sample_time)
      File "/usr/sbin/mountstats", line 920, in print_iostat_summary
        diff_stats = stats.compare_iostats(old_stats)
      File "/usr/sbin/mountstats", line 528, in compare_iostats
        if old_stats.__nfs_data['age'] > self.__nfs_data['age']:
    KeyError: 'age'
    Frequent mount and umount can cause autofs entries to be processed in
    compare_iostats.  We need to filter the devices list and drop autofs
    entries to fix the issue. This way we pass only nfs mounts and
    not autofs entries.
rpc.idmapd: Do not free config variables
    Commit 93e8f092e added a conf_cleanup() call to clean
    up memory after the config file was parsed. It turns
    out that memory still needed and it is not very much
    so the call is removed.
rpc.gssd: munmap_chunk(): invalid pointer
    Removed an errant call to gss_release_oid()
    to try and deal with memory leaks
Convert remaining python scripts to python3
    nfs-utils contains 4 python scripts, two request
     /usr/bin/python3
    in their shebang line, two request
     /usr/bin/python
    Those latter two run perfectly well with python3 and as python2 is on the
    way out, change them so they requrest /usr/bin/python3.
nfs-iostat: divide by zero with fresh mount
    When an export is freshly mounted, /proc/self/mountstats displays age = 0.
    This causes nfs-iostat to divide by zero throwing an error.
    When we have age = 0, other stats are greater than 0, so we'll set age = 1 and
    print the relevant stats.
    This will prevent a backtrace like this from occurring if nfsiostat is run.
    nfsiostat -s 1
    Traceback (most recent call last):
      File "/usr/sbin/nfsiostat", line 662, in <module>
        iostat_command(prog)
      File "/usr/sbin/nfsiostat", line 644, in iostat_command
        print_iostat_summary(old_mountstats, mountstats, devices, sample_time, options)
      File "/usr/sbin/nfsiostat", line 490, in print_iostat_summary
        devicelist.sort(key=lambda x: stats[x].ops(time), reverse=True)
      File "/usr/sbin/nfsiostat", line 490, in <lambda>
        devicelist.sort(key=lambda x: stats[x].ops(time), reverse=True)
      File "/usr/sbin/nfsiostat", line 383, in ops
        return (sends / sample_time)
    ZeroDivisionError: float division by zero
rpc.idmapd: rework the verbosity of idmapd
    -v   means only error
    -vv  errors and informational messages
    -vvv all debugging messages will be displayed
rpc.idmapd: Turn down the verbosity in flush_inotify()
    Commit 27a8e146 introduce a debugging message
    that was not cover by a check if verbose
    is set, which cause a large number of message
    to be logged on every kerberos mount
nfsidmap: Allow overriding location of method libraries
idmapd: Fix client mode support
    The inotify event was never rearmed, so we wouldn't get any notice
    after the first event. Even if it had been re-added, we never read
    the pending events so it would continously fire. Fix this by
    moving to persistent events and reading any pending inotify events.
    Effect was we'd leak any clients that existed after the first event.
    Switch from dnotify to inotify on the client dir if the idmap file
    isn't available yet.
idmapd: Add graceful exit and resource cleanup
exportfs: Fix a few valgrind warnings
svcgssd: Wait for nullrpc channel if not available
svcgssd: Cleanup global resources on exit
nfsidmap: Add support to cleanup resources on exit
svcgssd: Convert to using libevent
nfsdcld: Don't copy more data than exists in column
    Found with valgrind.
nfsdcld: Add graceful exit handling and resource cleanup
xlog: Reorganize xlog_backend() to work around -Wmaybe-uninitialized
    xlog.c: In function 'xlog_backend':
    xlog.c:202:3: warning: 'args2' may be used uninitialized in this function [-Wmaybe-uninitialized]
    202 |   vfprintf(stderr, fmt, args2);
        |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
gssd: srchost should never be *
    Fix silly mistake on my part due to a rebase error.
gssd: Fix handling of failed allocations
Add error handling to libevent allocations.
gssd: explain the size need for the ccache buf
nfsdcld: Fix a few Coverity Scan CHECKED_RETURN errors.
nfsdcld: Fix a few Coverity Scan CLANG_WARNING errors
nfsdcld: Fix a few Coverity Scan STRING_NULL errors
nfsdcld: Fix a few Coverity Scan TOCTOU errors
    Calling stat() on recdirname so that we can see if it's a directory is
    unnecessary anyways, since opendir() will report an error if it's not.
nfsdcld: Fix a few Coverity Scan RESOURCE_LEAK errors
nfsiostat/mountstats: handle KeyError in compare_iostats()
    This will prevent a backtrace like this from occurring if nfsiostat is run
    with <interval> <count>, eg: nfsiostat 1 3
    This issue can occur if old_stats.__rpc_data['ops'] keys are not up to
    date with result.__rpc_data['ops'].
    I belive this issue can also affect mountstats due to similar code,
    hence fix it too.
    nfsiostat:217:compare_iostats:KeyError: 'NULL'
    Traceback (most recent call last):
      File "/usr/sbin/nfsiostat", line 649, in <module>
        iostat_command(prog)
      File "/usr/sbin/nfsiostat", line 617, in iostat_command
        print_iostat_summary(old_mountstats, mountstats, devices, sample_time, options)
      File "/usr/sbin/nfsiostat", line 468, in print_iostat_summary
        diff_stats[device] = stats[device].compare_iostats(old_stats)
      File "/usr/sbin/nfsiostat", line 217, in compare_iostats
        difference, self.__rpc_data[op], old_stats.__rpc_data[op]))
    KeyError: 'NULL'
nfs-utils: systemd: nfs-server.service: Cleanup extra whitespaces
    Although whitespaces immediately before or after the "=" are ignored,
    removing the extra whitespaces in some of the key=value assignments
    makes the style more consistent.
    At least since systemd v242-rc1[1] this has been clarified that
    whitespaces immediately before and after the "=" are allowed.
     [1] https://github.com/systemd/systemd/commit/170342c90be07f418ab786718d95ef76289126a0
gssd: Reworked a couple debugging printfs
    Added thread_ids to the upcall debugging
    and turned off a fairly useless printf
Fix various clang warnings.
gssd: We never use the nocache param of gssd_check_if_cc_exists()
gssd: Lookup local hostname when srchost is '*'
    Currently when we receive a '*' srchost, we scan our keytab for a matching
    host but of course none match. We then fall back to scanning for any
    service/realm match and eventually find our hostname. Let's lookup our
    hostname instead and quickly find our specific match.
gssd: Add a few debug statements to help track client_info lifetimes.
gssd: Fix locking for machine principal list
    Add missing locking for some scans of the global list. There was
    also no prevention of ple->ccname being changed concurrently so
    use the same lock to protect that. Reference counting was also added
    to ensure that the ple is not freed out from under us in the few
    places we now drop the lock while doing work.
gssd: gssd_k5_err_msg() returns a strdup'd msg. Use free() to release.
gssd: Cleanup on exit to support valgrind.
Update to libevent 2.x apis
gssd: Refcount struct clnt_info to protect multithread usage
    Struct clnt_info is shared with the various upcall threads so
    we need to ensure that it stays around even if the client dir
    gets removed.

comment:3 by Douglas R. Reno, 10 months ago

Resolution: fixed
Status: assignedclosed

Fixed at r23834

Note: See TracTickets for help on using tickets.