diff --git a/nfs-convert.service b/nfs-convert.service deleted file mode 100644 index 3185ff1..0000000 --- a/nfs-convert.service +++ /dev/null @@ -1,22 +0,0 @@ -[Unit] -Description=Preprocess NFS configuration convertion -DefaultDependencies=no - -Before=nfs-server.service nfs-mountd.service nfs-idmapd.service -Before=nfs-blkmap.service rpc-statd.service rpc-gssd.service -Before=rpc-statd-notify.service - -After=initrd-root-fs.target - -[Service] -Type=oneshot -ExecStart=/usr/libexec/nfs-utils/nfsconvert.sh - -[Install] -RequiredBy=nfs-server.service -RequiredBy=nfs-mountd.service -RequiredBy=nfs-idmapd.service -RequiredBy=nfs-blkmap.service -RequiredBy=rpc-statd.service -RequiredBy=rpc-gssd.service -RequiredBy=rpc-statd-notify.service diff --git a/nfs-utils.spec b/nfs-utils.spec index e0baa67..a74e4bd 100644 --- a/nfs-utils.spec +++ b/nfs-utils.spec @@ -2,7 +2,7 @@ Summary: NFS utilities and supporting clients and daemons for the kernel NFS ser Name: nfs-utils URL: http://linux-nfs.org/ Version: 2.6.2 -Release: 0%{?dist} +Release: 1%{?dist} Epoch: 1 # group all 32bit related archs @@ -12,10 +12,7 @@ Source0: https://www.kernel.org/pub/linux/utils/nfs-utils/%{version}/%{name}-%{v Source1: id_resolver.conf Source2: lockd.conf Source3: 24-nfs-server.conf -Source4: nfsconvert.py -Source5: nfsconvert.sh -Source6: nfs-convert.service -Source7: 10-nfsv4.conf +Source4: 10-nfsv4.conf Patch100: nfs-utils-1.2.1-statdpath-man.patch Patch101: nfs-utils-1.2.1-exp-subtree-warn-off.patch @@ -189,9 +186,6 @@ install -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/request-key.d mkdir -p $RPM_BUILD_ROOT/run/sysconfig install -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/lockd.conf install -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/gssproxy -install -m 755 %{SOURCE4} $RPM_BUILD_ROOT%{_sbindir}/nfsconvert -install -m 755 %{SOURCE5} $RPM_BUILD_ROOT/%{_libexecdir}/nfs-utils/nfsconvert.sh -install -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{_pkgdir}/system rm -rf $RPM_BUILD_ROOT%{_libdir}/*.{a,la} rm -rf $RPM_BUILD_ROOT%{_libdir}/libnfsidmap/*.{a,la} @@ -207,7 +201,7 @@ mkdir -p $RPM_BUILD_ROOT%{_sharedstatedir}/nfs/v4recovery mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/exports.d mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/nfsmount.conf.d -install -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/nfsmount.conf.d +install -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/nfsmount.conf.d mkdir -p $RPM_BUILD_ROOT%{_udevrulesdir} @@ -262,10 +256,6 @@ if [ $1 -eq 1 ] ; then /bin/systemctl start nfs-client.target >/dev/null 2>&1 || : fi -# Enable nfs-convert so if an old configuration -# exists a conversion will occur -/bin/systemctl enable nfs-convert >/dev/null 2>&1 || : - %systemd_post nfs-server %post -n nfsv4-client-utils @@ -304,6 +294,9 @@ fi %triggerin -- nfs-utils > 1:2.1.1-3 /bin/systemctl try-restart gssproxy || : +%triggerun -- nfs-utils > 1:2.6.2-0 +/bin/systemctl disable nfs-convert > /dev/null 2>&1 || : + %files %config(noreplace) /etc/nfsmount.conf %dir %{_sysconfdir}/exports.d @@ -344,7 +337,6 @@ fi %{_sbindir}/blkmapd %{_sbindir}/nfsconf %{_sbindir}/nfsref -%{_sbindir}/nfsconvert %{_sbindir}/nfsdcld %{_sbindir}/nfsdclddb %{_sbindir}/nfsdclnts @@ -354,7 +346,6 @@ fi %{_pkgdir}/*/* %attr(4755,root,root) /sbin/mount.nfs -%attr(755,root,root) %{_libexecdir}/nfs-utils/nfsconvert.sh /sbin/mount.nfs4 /sbin/umount.nfs @@ -426,11 +417,9 @@ fi %attr(0600,root,root) %config(noreplace) /usr/lib/modprobe.d/50-nfs.conf %{_sbindir}/rpc.gssd %{_sbindir}/nfsidmap -%{_sbindir}/nfsconvert %{_sbindir}/nfsstat %{_libexecdir}/nfsrahead %{_udevrulesdir}/99-nfs.rules -%attr(755,root,root) %{_libexecdir}/nfs-utils/nfsconvert.sh %attr(4755,root,root) /sbin/mount.nfs /sbin/mount.nfs4 /sbin/umount.nfs @@ -451,7 +440,6 @@ fi %{_pkgdir}/*/rpc-pipefs-generator %{_pkgdir}/*/auth-rpcgss-module.service %{_pkgdir}/*/nfs-client.target -%{_pkgdir}/*/nfs-convert.service %{_pkgdir}/*/rpc-gssd.service %{_pkgdir}/*/rpc_pipefs.target %{_pkgdir}/*/var-lib-nfs-rpc_pipefs.mount @@ -463,6 +451,9 @@ fi %{_mandir}/*/nfsiostat.8.gz %changelog +* Tue Aug 23 2022 Steve Dickson 2.6.2-1 +- Removed the nfsconvert scripts, no longer needed. + * Tue Aug 9 2022 Steve Dickson 2.6.2-0 - Updated to the latest upstream release: nfs-utils-2-6-2 (bz 2116944) diff --git a/nfsconvert.py b/nfsconvert.py deleted file mode 100644 index dd240ee..0000000 --- a/nfsconvert.py +++ /dev/null @@ -1,310 +0,0 @@ -#!/usr/bin/env python3 -""" -Read in the deprecated /etc/sysconfig/nfs file and -set the corresponding values in nfs.conf -""" - -from __future__ import print_function -import os -import sys -import getopt -import subprocess -import configparser - -CONF_NFS = '/etc/nfs.conf' -CONF_IDMAP = '/etc/idmapd.conf' -SYSCONF_NFS = '/etc/sysconfig/nfs' -SYSCONF_BACKUP = ".rpmsave" -CONF_TOOL = '/usr/sbin/nfsconf' - -# options for nfsd found in RPCNFSDARGS -OPTS_NFSD = 'dH:p:rR:N:V:stTuUG:L:' -LONG_NFSD = ['debug', 'host=', 'port=', 'rdma=', 'nfs-version=', 'no-nfs-version=', - 'tcp', 'no-tcp', 'udp', 'no-udp', 'grace-time=', 'lease-time='] -CONV_NFSD = {'-d': (CONF_NFS, 'nfsd', 'debug', 'all'), - '-H': (CONF_NFS, 'nfsd', 'host', ','), - '-p': (CONF_NFS, 'nfsd', 'port', '$1'), - '-r': (CONF_NFS, 'nfsd', 'rdma', 'nfsrdma'), - '-R': (CONF_NFS, 'nfsd', 'rdma', '$1'), - '-N': (CONF_NFS, 'nfsd', 'vers$1', 'n'), - '-V': (CONF_NFS, 'nfsd', 'vers$1', 'y'), - '-t': (CONF_NFS, 'nfsd', 'tcp', '1'), - '-T': (CONF_NFS, 'nfsd', 'tcp', '0'), - '-u': (CONF_NFS, 'nfsd', 'udp', '1'), - '-U': (CONF_NFS, 'nfsd', 'udp', '0'), - '-G': (CONF_NFS, 'nfsd', 'grace-time', '$1'), - '-L': (CONF_NFS, 'nfsd', 'lease-time', '$1'), - '$1': (CONF_NFS, 'nfsd', 'threads', '$1'), - '--debug': (CONF_NFS, 'nfsd', 'debug', 'all'), - '--host': (CONF_NFS, 'nfsd', 'host', ','), - '--port': (CONF_NFS, 'nfsd', 'port', '$1'), - '--rdma': (CONF_NFS, 'nfsd', 'rdma', '$1'), - '--no-nfs-version': (CONF_NFS, 'nfsd', 'vers$1', 'n'), - '--nfs-version': (CONF_NFS, 'nfsd', 'vers$1', 'y'), - '--tcp': (CONF_NFS, 'nfsd', 'tcp', '1'), - '--no-tcp': (CONF_NFS, 'nfsd', 'tcp', '0'), - '--udp': (CONF_NFS, 'nfsd', 'udp', '1'), - '--no-udp': (CONF_NFS, 'nfsd', 'udp', '0'), - '--grace-time': (CONF_NFS, 'nfsd', 'grace-time', '$1'), - '--lease-time': (CONF_NFS, 'nfsd', 'lease-time', '$1'), - } - -# options for mountd found in RPCMOUNTDOPTS -OPTS_MOUNTD = 'go:d:H:p:N:nrs:t:V:' -LONG_MOUNTD = ['descriptors=', 'debug=', 'nfs-version=', 'no-nfs-version=', - 'port=', 'no-tcp', 'ha-callout=', 'state-directory-path=', - 'num-threads=', 'reverse-lookup', 'manage-gids', 'no-udp'] - -CONV_MOUNTD = {'-g': (CONF_NFS, 'mountd', 'manage-gids', '1'), - '-o': (CONF_NFS, 'mountd', 'descriptors', '$1'), - '-d': (CONF_NFS, 'mountd', 'debug', '$1'), - '-H': (CONF_NFS, 'mountd', 'ha-callout', '$1'), - '-p': (CONF_NFS, 'mountd', 'port', '$1'), - '-N': (CONF_NFS, 'nfsd', 'vers$1', 'n'), - '-V': (CONF_NFS, 'nfsd', 'vers$1', 'y'), - '-n': (CONF_NFS, 'nfsd', 'tcp', '0'), - '-s': (CONF_NFS, 'mountd', 'stat-directory-path', '$1'), - '-t': (CONF_NFS, 'mountd', 'threads', '$1'), - '-r': (CONF_NFS, 'mountd', 'reverse-lookup', '1'), - '-u': (CONF_NFS, 'nfsd', 'udp', '0'), - '--manage-gids': (CONF_NFS, 'mountd', 'manage-gids', '1'), - '--descriptors': (CONF_NFS, 'mountd', 'descriptors', '$1'), - '--debug': (CONF_NFS, 'mountd', 'debug', '$1'), - '--ha-callout': (CONF_NFS, 'mountd', 'ha-callout', '$1'), - '--port': (CONF_NFS, 'mountd', 'port', '$1'), - '--nfs-version': (CONF_NFS, 'nfsd', 'vers$1', 'y'), - '--no-nfs-version': (CONF_NFS, 'nfsd', 'vers$1', 'n'), - '--no-tcp': (CONF_NFS, 'nfsd', 'tcp', '0'), - '--state-directory-path': (CONF_NFS, 'mountd', 'state-directory-path', '$1'), - '--num-threads': (CONF_NFS, 'mountd', 'threads', '$1'), - '--reverse-lookup': (CONF_NFS, 'mountd', 'reverse-lookup', '1'), - '--no-udp': (CONF_NFS, 'nfsd', 'udp', '0'), - } - -# options for statd found in STATDARG -OPTS_STATD = 'o:p:T:U:n:P:H:' -LONG_STATD = ['outgoing-port=', 'port=', 'name=', 'state-directory-path=', - 'ha-callout=', 'nlm-port=', 'nlm-udp-port='] -CONV_STATD = {'-o': (CONF_NFS, 'statd', 'outgoing-port', '$1'), - '-p': (CONF_NFS, 'statd', 'port', '$1'), - '-T': (CONF_NFS, 'lockd', 'port', '$1'), - '-U': (CONF_NFS, 'lockd', 'udp-port', '$1'), - '-n': (CONF_NFS, 'statd', 'name', '$1'), - '-P': (CONF_NFS, 'statd', 'state-directory-path', '$1'), - '-H': (CONF_NFS, 'statd', 'ha-callout', '$1'), - '--outgoing-port': (CONF_NFS, 'statd', 'outgoing-port', '$1'), - '--port': (CONF_NFS, 'statd', 'port', '$1'), - '--name': (CONF_NFS, 'statd', 'name', '$1'), - '--state-directory-path': (CONF_NFS, 'statd', 'state-directory-path', '$1'), - '--ha-callout': (CONF_NFS, 'statd', 'ha-callout', '$1'), - '--nlm-port': (CONF_NFS, 'lockd', 'port', '$1'), - '--nlm-udp-port': (CONF_NFS, 'lockd', 'udp-port', '$1'), - } - -# options for sm-notify found in SMNOTIFYARGS -OPTS_SMNOTIFY = 'dm:np:v:P:' -CONV_SMNOTIFY = {'-d': (CONF_NFS, 'sm-notify', 'debug', 'all'), - '-m': (CONF_NFS, 'sm-notify', 'retry-time', '$1'), - '-n': (CONF_NFS, 'sm-notify', 'update-state', '1'), - '-p': (CONF_NFS, 'sm-notify', 'outgoing-port', '$1'), - '-v': (CONF_NFS, 'sm-notify', 'outgoing-addr', '$1'), - '-P': (CONF_NFS, 'statd', 'state-directory-path', '$1'), - } - -# options for idmapd found in RPCIDMAPDARGS -OPTS_IDMAPD = 'vp:CS' -CONV_IDMAPD = {'-v': (CONF_IDMAP, 'general', 'verbosity', '+'), - '-p': (CONF_NFS, 'general', 'pipefs-directory', '$1'), - '-C': (CONF_IDMAP, 'general', 'client-only', '1'), - '-S': (CONF_IDMAP, 'general', 'server-only', '1'), - } - -# options for gssd found in RPCGSSDARGS -OPTS_GSSD = 'Mnvrp:k:d:t:T:R:lD' -CONV_GSSD = {'-M': (CONF_NFS, 'gssd', 'use-memcache', '1'), - '-n': (CONF_NFS, 'gssd', 'root_uses_machine_creds', '0'), - '-v': (CONF_NFS, 'gssd', 'verbosity', '+'), - '-r': (CONF_NFS, 'gssd', 'rpc-verbosity', '+'), - '-p': (CONF_NFS, 'general', 'pipefs-directory', '$1'), - '-k': (CONF_NFS, 'gssd', 'keytab-file', '$1'), - '-d': (CONF_NFS, 'gssd', 'cred-cache-directory', '$1'), - '-t': (CONF_NFS, 'gssd', 'context-timeout', '$1'), - '-T': (CONF_NFS, 'gssd', 'rpc-timeout', '$1'), - '-R': (CONF_NFS, 'gssd', 'preferred-realm', '$1'), - '-l': (CONF_NFS, 'gssd', 'limit-to-legacy-enctypes', '0'), - '-D': (CONF_NFS, 'gssd', 'avoid-dns', '0'), - } - -# options for blkmapd found in BLKMAPDARGS -OPTS_BLKMAPD = '' -CONV_BLKMAPD = {} - -# meta list of all the getopt lists -GETOPT_MAPS = [('RPCNFSDARGS', OPTS_NFSD, LONG_NFSD, CONV_NFSD), - ('RPCMOUNTDOPTS', OPTS_MOUNTD, LONG_MOUNTD, CONV_MOUNTD), - ('STATDARG', OPTS_STATD, LONG_STATD, CONV_STATD), - ('STATDARGS', OPTS_STATD, LONG_STATD, CONV_STATD), - ('SMNOTIFYARGS', OPTS_SMNOTIFY, [], CONV_SMNOTIFY), - ('RPCIDMAPDARGS', OPTS_IDMAPD, [], CONV_IDMAPD), - ('RPCGSSDARGS', OPTS_GSSD, [], CONV_GSSD), - ('BLKMAPDARGS', OPTS_BLKMAPD, [], CONV_BLKMAPD), - ] - -# map for all of the single option values -VALUE_MAPS = {'LOCKD_TCPPORT': (CONF_NFS, 'lockd', 'port', '$1'), - 'LOCKD_UDPPORT': (CONF_NFS, 'lockd', 'udp-port', '$1'), - 'RPCNFSDCOUNT': (CONF_NFS, 'nfsd', 'threads', '$1'), - 'NFSD_V4_GRACE': (CONF_NFS, 'nfsd', 'grace-time', '$1'), - 'NFSD_V4_LEASE': (CONF_NFS, 'nfsd', 'lease-time', '$1'), - 'MOUNTD_PORT': (CONF_NFS, 'mountd', 'port', '$1'), - 'STATD_PORT': (CONF_NFS, 'statd', 'port', '$1'), - 'STATD_OUTGOING_PORT': (CONF_NFS, 'statd', 'outgoing-port', '$1'), - 'STATD_HA_CALLOUT': (CONF_NFS, 'statd', 'ha-callout', '$1'), - 'GSS_USE_PROXY': (CONF_NFS, 'gssd', 'use-gss-proxy', '$1') - } - -def eprint(*args, **kwargs): - """ Print error to stderr """ - print(*args, file=sys.stderr, **kwargs) - -def makesub(param, value): - """ Variable substitution """ - return param.replace('$1', value) - -def set_value(value, entry): - """ Set a configuration value by running nfsconf tool""" - cfile, section, tag, param = entry - - tag = makesub(tag, value) - param = makesub(param, value) - if param == '+': - param = value - if param == ',': - param = value - args = [CONF_TOOL, "--file", cfile, "--set", section, tag, param] - - try: - subprocess.check_output(args, stderr=subprocess.STDOUT) - except subprocess.CalledProcessError as e: - print("Error running nfs-conf tool:\n %s" % (e.output.decode())) - print("Args: %s\n" % args) - raise Exception - -def convert_getopt(optname, options, optstring, longopts, conversions): - """ Parse option string into seperate config items - - Take a getopt string and a table of conversions - parse it all and spit out the converted config - - Keyword arguments: - options -- the argv string to convert - optstring -- getopt format option list - conversions -- table of translations - """ - optcount = 0 - try: - args = options.strip('\"').split() - optlist, optargs = getopt.gnu_getopt(args, optstring, longopts=longopts) - except getopt.GetoptError as err: - eprint(err) - raise Exception - - setlist = {} - for (k, v) in optlist: - if k in conversions: - # it's already been set once - param = conversions[k][3] - tag = k + makesub(conversions[k][2], v) - if tag in setlist: - value = setlist[tag][0] - # is it a cummulative entry - if param == '+': - value = str(int(value) + 1) - if param == ',': - value += "," + v - else: - if param == '+': - value = "1" - elif param == ',': - value = v - else: - value = v - setlist[tag] = (value, conversions[k]) - else: - if v: - eprint("Ignoring unrecognised option %s=%s in %s" % (k, v, optname)) - else: - eprint("Ignoring unrecognised option %s in %s" % (k, optname)) - - - for v, c in setlist.values(): - try: - set_value(v, c) - optcount += 1 - except Exception: - raise - - i = 1 - for o in optargs: - opname = '$' + str(i) - if opname in conversions: - try: - set_value(o, conversions[opname]) - optcount += 1 - except Exception: - raise - else: - eprint("Unrecognised trailing arguments") - raise Exception - i += 1 - - return optcount - -def map_values(): - """ Main function """ - mapcount = 0 - - # Lets load the old config - with open(SYSCONF_NFS) as cfile: - file_content = '[sysconf]\n' + cfile.read() - sysconfig = configparser.RawConfigParser() - sysconfig.read_string(file_content) - - # Map all the getopt option lists - for (name, opts, lopts, conv) in GETOPT_MAPS: - if name in sysconfig['sysconf']: - try: - mapcount += convert_getopt(name, sysconfig['sysconf'][name], opts, - lopts, conv) - except Exception: - eprint("Error whilst converting %s to nfsconf options." % (name)) - raise - - # Map the single value options - for name, opts in VALUE_MAPS.items(): - if name in sysconfig['sysconf']: - try: - value = sysconfig['sysconf'][name] - set_value(value.strip('\"'), opts) - mapcount += 1 - except Exception: - raise - - # All went well, move aside the old file - # but dont bother if there were no changes and - # an old config file already exists - backupfile = SYSCONF_NFS + SYSCONF_BACKUP - if mapcount > 0 or not os.path.exists(backupfile): - try: - os.replace(SYSCONF_NFS, backupfile) - except OSError as err: - eprint("Error moving old config %s: %s" % (SYSCONF_NFS, err)) - raise - -# Main routine -try: - map_values() -except Exception as e: - eprint(e) - eprint("Conversion failed. Please correct the error and try again.") - exit(1) diff --git a/nfsconvert.sh b/nfsconvert.sh deleted file mode 100644 index ce28562..0000000 --- a/nfsconvert.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -# -# Convert /etc/sysconfig/nfs values in /etc/nfs.conf valuse -# - -# -# No file no conversion -# -if [ ! -f /etc/sysconfig/nfs ]; then - exit 0 -fi - -# -# See if the conversion happen already -# -grep "nfs.conf" /etc/sysconfig/nfs > /dev/null -if [ $? -eq 0 ]; then - exit 0 -fi - -if [ -f /etc/nfs.conf.rpmnew ]; then - # See if it is the we want to use - grep tag1234 /etc/nfs.conf.rpmnew > /dev/null - if [ $? -eq 0 ]; then - cp /etc/nfs.conf /etc/nfs.conf.rpmsave - cat /etc/nfs.conf.rpmnew | sed '/tag123/d' > /etc/nfs.conf - rm /etc/nfs.conf.rpmnew - fi -else - cp /etc/nfs.conf /etc/nfs.conf.rpmsave -fi - -# -# Do the conversion -# -/usr/sbin/nfsconvert -