Accepting request 692960 from network:samba:STABLE
OBS-URL: https://build.opensuse.org/request/show/692960 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/cifs-utils?expand=0&rev=59
This commit is contained in:
commit
56f0569ad1
File diff suppressed because it is too large
Load Diff
@ -1,37 +0,0 @@
|
|||||||
From bfcbfaa27a6bcfea3d463e793feff5a983f344a5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aurelien Aptel <aaptel@suse.com>
|
|
||||||
Date: Tue, 15 May 2018 10:40:48 +0200
|
|
||||||
Subject: [PATCH 02/10] mount.cifs.rst: document new (no)handlecache mount
|
|
||||||
option
|
|
||||||
|
|
||||||
Signed-off-by: Aurelien Aptel <aaptel@suse.com>
|
|
||||||
Reviewed-by: Steve French <smfrench@gmail.com>
|
|
||||||
Reviewed-by: Pavel Shilovsky <piastryyy@gmail.com>
|
|
||||||
---
|
|
||||||
mount.cifs.rst | 10 ++++++++++
|
|
||||||
1 file changed, 10 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/mount.cifs.rst b/mount.cifs.rst
|
|
||||||
index c0f0bdb..405c459 100644
|
|
||||||
--- a/mount.cifs.rst
|
|
||||||
+++ b/mount.cifs.rst
|
|
||||||
@@ -237,6 +237,16 @@ cache=arg
|
|
||||||
The default in kernels prior to 3.7 was ``loose``. As of kernel 3.7 the
|
|
||||||
default is ``strict``.
|
|
||||||
|
|
||||||
+handlecache
|
|
||||||
+ (default) In SMB2 and above, the client often has to open the root
|
|
||||||
+ of the share (empty path) in various places during mount, path
|
|
||||||
+ revalidation and the statfs(2) system call. This option cuts
|
|
||||||
+ redundant round trip traffic (opens and closes) by simply keeping
|
|
||||||
+ the directory handle for the root around once opened.
|
|
||||||
+
|
|
||||||
+nohandlecache
|
|
||||||
+ Disable caching of the share root directory handle.
|
|
||||||
+
|
|
||||||
directio
|
|
||||||
Do not do inode data caching on files opened on this mount. This
|
|
||||||
precludes mmaping files on this mount. In some cases with fast
|
|
||||||
--
|
|
||||||
2.13.7
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
From 03a3296c79f8195f94c43a3b4feb09df75d9b90e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kenneth Dsouza <kdsouza@redhat.com>
|
|
||||||
Date: Fri, 13 Jul 2018 23:49:59 +0530
|
|
||||||
Subject: [PATCH 03/10] manpage: update mount.cifs manpage with info about rdma
|
|
||||||
option
|
|
||||||
|
|
||||||
Signed-off-by: Kenneth Dsouza <kdsouza@redhat.com>
|
|
||||||
---
|
|
||||||
mount.cifs.rst | 5 +++++
|
|
||||||
1 file changed, 5 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/mount.cifs.rst b/mount.cifs.rst
|
|
||||||
index 405c459..56c1bf9 100644
|
|
||||||
--- a/mount.cifs.rst
|
|
||||||
+++ b/mount.cifs.rst
|
|
||||||
@@ -403,6 +403,11 @@ echo_interval=n
|
|
||||||
If this option is not given then the default value of 60 seconds is used.
|
|
||||||
The minimum tunable value is 1 second and maximum can go up to 600 seconds.
|
|
||||||
|
|
||||||
+rdma
|
|
||||||
+ Use to connect to SMB Direct, only applicable when specified with
|
|
||||||
+ vers=3 or vers=3.x.
|
|
||||||
+ Here 3.x can be 3.0, 3.02 or 3.1.1.
|
|
||||||
+
|
|
||||||
serverino
|
|
||||||
Use inode numbers (unique persistent file identifiers) returned by the
|
|
||||||
server instead of automatically generating temporary inode numbers on
|
|
||||||
--
|
|
||||||
2.13.7
|
|
||||||
|
|
@ -1,261 +0,0 @@
|
|||||||
From 97209a56d13b8736579a58cccf00d2da4e4a0e5a Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Aur=C3=A9lien=20Aptel?= <aaptel@suse.com>
|
|
||||||
Date: Tue, 10 Jul 2018 17:50:42 +0200
|
|
||||||
Subject: [PATCH 04/10] checkopts: add python script to cross check mount
|
|
||||||
options
|
|
||||||
|
|
||||||
Signed-off-by: Aurelien Aptel <aaptel@suse.com>
|
|
||||||
---
|
|
||||||
checkopts | 240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 240 insertions(+)
|
|
||||||
create mode 100755 checkopts
|
|
||||||
|
|
||||||
diff --git a/checkopts b/checkopts
|
|
||||||
new file mode 100755
|
|
||||||
index 0000000..26ca271
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/checkopts
|
|
||||||
@@ -0,0 +1,240 @@
|
|
||||||
+#!/usr/bin/env python3
|
|
||||||
+#
|
|
||||||
+# Script to check for inconsistencies between documented mount options
|
|
||||||
+# and implemented kernel options.
|
|
||||||
+# Copyright (C) 2018 Aurelien Aptel (aaptel@suse.com)
|
|
||||||
+#
|
|
||||||
+# This program is free software; you can redistribute it and/or modify
|
|
||||||
+# it under the terms of the GNU General Public License as published by
|
|
||||||
+# the Free Software Foundation; either version 3 of the License, or
|
|
||||||
+# (at your option) any later version.
|
|
||||||
+#
|
|
||||||
+# This program is distributed in the hope that it will be useful,
|
|
||||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+# GNU General Public License for more details.
|
|
||||||
+#
|
|
||||||
+# You should have received a copy of the GNU General Public License
|
|
||||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
+
|
|
||||||
+import os
|
|
||||||
+import sys
|
|
||||||
+import re
|
|
||||||
+import subprocess
|
|
||||||
+import argparse
|
|
||||||
+from pprint import pprint as P
|
|
||||||
+
|
|
||||||
+def extract_canonical_opts(s):
|
|
||||||
+ """
|
|
||||||
+ Return list of option names present in s.
|
|
||||||
+ e.g "opt1=a|opt2=d" => ["opt1", "opt2"])
|
|
||||||
+ """
|
|
||||||
+ opts = s.split("|")
|
|
||||||
+ res = []
|
|
||||||
+ for o in opts:
|
|
||||||
+ x = o.split("=")
|
|
||||||
+ res.append(x[0])
|
|
||||||
+ return res
|
|
||||||
+
|
|
||||||
+def extract_kernel_opts(fn):
|
|
||||||
+ STATE_BASE = 0
|
|
||||||
+ STATE_DEF = 1
|
|
||||||
+ STATE_USE = 2
|
|
||||||
+ STATE_EXIT = 3
|
|
||||||
+
|
|
||||||
+ state = STATE_BASE
|
|
||||||
+ fmt2enum = {}
|
|
||||||
+ enum2code = {}
|
|
||||||
+ code = ''
|
|
||||||
+ current_opt = ''
|
|
||||||
+ rx = RX()
|
|
||||||
+
|
|
||||||
+ def code_add(s):
|
|
||||||
+ if current_opt != '':
|
|
||||||
+ if current_opt not in enum2code:
|
|
||||||
+ enum2code[current_opt] = ''
|
|
||||||
+ enum2code[current_opt] += s
|
|
||||||
+
|
|
||||||
+ with open(fn) as f:
|
|
||||||
+ for s in f.readlines():
|
|
||||||
+ if state == STATE_EXIT:
|
|
||||||
+ break
|
|
||||||
+
|
|
||||||
+ elif state == STATE_BASE:
|
|
||||||
+ if rx.search(r'cifs_mount_option_tokens.*\{', s):
|
|
||||||
+ state = STATE_DEF
|
|
||||||
+ elif rx.search(r'^cifs_parse_mount_options', s):
|
|
||||||
+ state = STATE_USE
|
|
||||||
+
|
|
||||||
+ elif state == STATE_DEF:
|
|
||||||
+ if rx.search(r'(Opt_[a-zA-Z0-9_]+)\s*,\s*"([^"]+)"', s):
|
|
||||||
+ fmt = rx.group(2)
|
|
||||||
+ opts = extract_canonical_opts(fmt)
|
|
||||||
+ assert(len(opts) == 1)
|
|
||||||
+ name = opts[0]
|
|
||||||
+ fmt2enum[name] = {'enum':rx.group(1), 'fmt':fmt}
|
|
||||||
+ elif rx.search(r'^};', s):
|
|
||||||
+ state = STATE_BASE
|
|
||||||
+
|
|
||||||
+ elif state == STATE_USE:
|
|
||||||
+ if rx.search(r'^\s*case (Opt_[a-zA-Z0-9_]+)', s):
|
|
||||||
+ current_opt = rx.group(1)
|
|
||||||
+ elif current_opt != '' and rx.search(r'^\s*default:', s):
|
|
||||||
+ state = STATE_EXIT
|
|
||||||
+ else:
|
|
||||||
+ code_add(s)
|
|
||||||
+ return fmt2enum, enum2code
|
|
||||||
+
|
|
||||||
+def chomp(s):
|
|
||||||
+ if s[-1] == '\n':
|
|
||||||
+ return s[:-1]
|
|
||||||
+ return s
|
|
||||||
+
|
|
||||||
+def extract_man_opts(fn):
|
|
||||||
+ STATE_EXIT = 0
|
|
||||||
+ STATE_BASE = 1
|
|
||||||
+ STATE_OPT = 2
|
|
||||||
+
|
|
||||||
+ state = STATE_BASE
|
|
||||||
+ rx = RX()
|
|
||||||
+ opts = {}
|
|
||||||
+
|
|
||||||
+ with open(fn) as f:
|
|
||||||
+ for s in f.readlines():
|
|
||||||
+ if state == STATE_EXIT:
|
|
||||||
+ break
|
|
||||||
+
|
|
||||||
+ elif state == STATE_BASE:
|
|
||||||
+ if rx.search(r'^OPTION', s):
|
|
||||||
+ state = STATE_OPT
|
|
||||||
+
|
|
||||||
+ elif state == STATE_OPT:
|
|
||||||
+ if rx.search('^[a-z]', s) and len(s) < 50:
|
|
||||||
+ s = chomp(s)
|
|
||||||
+ names = extract_canonical_opts(s)
|
|
||||||
+ for name in names:
|
|
||||||
+ opts[name] = s
|
|
||||||
+ elif rx.search(r'^[A-Z]+', s):
|
|
||||||
+ state = STATE_EXIT
|
|
||||||
+ return opts
|
|
||||||
+
|
|
||||||
+def format_code(s):
|
|
||||||
+ # remove common indent in the block
|
|
||||||
+ min_indent = None
|
|
||||||
+ for ln in s.split("\n"):
|
|
||||||
+ indent = 0
|
|
||||||
+ for c in ln:
|
|
||||||
+ if c == '\t': indent += 1
|
|
||||||
+ else: break
|
|
||||||
+ if min_indent is None:
|
|
||||||
+ min_indent = indent
|
|
||||||
+ elif indent > 0:
|
|
||||||
+ min_indent = min(indent, min_indent)
|
|
||||||
+ out = ''
|
|
||||||
+ lines = s.split("\n")
|
|
||||||
+ if lines[-1].strip() == '':
|
|
||||||
+ lines.pop()
|
|
||||||
+ for ln in lines:
|
|
||||||
+ out += "| %s\n" % ln[min_indent:]
|
|
||||||
+ return out
|
|
||||||
+
|
|
||||||
+def sortedset(s):
|
|
||||||
+ return sorted(list(s), key=lambda x: re.sub('^no', '', x))
|
|
||||||
+
|
|
||||||
+def opt_neg(opt):
|
|
||||||
+ if opt.startswith("no"):
|
|
||||||
+ return opt[2:]
|
|
||||||
+ else:
|
|
||||||
+ return "no"+opt
|
|
||||||
+
|
|
||||||
+def main():
|
|
||||||
+ ap = argparse.ArgumentParser(description="Cross-check mount options from cifs.ko/man page")
|
|
||||||
+ ap.add_argument("cfile", help="path to connect.c")
|
|
||||||
+ ap.add_argument("rstfile", help="path to mount.cifs.rst")
|
|
||||||
+ args = ap.parse_args()
|
|
||||||
+
|
|
||||||
+ fmt2enum, enum2code = extract_kernel_opts(args.cfile)
|
|
||||||
+ manopts = extract_man_opts(args.rstfile)
|
|
||||||
+
|
|
||||||
+ kernel_opts_set = set(fmt2enum.keys())
|
|
||||||
+ man_opts_set = set(manopts.keys())
|
|
||||||
+
|
|
||||||
+ def opt_alias_is_doc(o):
|
|
||||||
+ enum = fmt2enum[o]['enum']
|
|
||||||
+ aliases = []
|
|
||||||
+ for k,v in fmt2enum.items():
|
|
||||||
+ if k != o and v['enum'] == enum:
|
|
||||||
+ if opt_is_doc(k):
|
|
||||||
+ return k
|
|
||||||
+ return None
|
|
||||||
+
|
|
||||||
+ def opt_exists(o):
|
|
||||||
+ return o in fmt2enum
|
|
||||||
+
|
|
||||||
+ def opt_is_doc(o):
|
|
||||||
+ return o in manopts
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ print('UNDOCUMENTED OPTIONS')
|
|
||||||
+ print('====================')
|
|
||||||
+
|
|
||||||
+ undoc_opts = kernel_opts_set - man_opts_set
|
|
||||||
+ # group opts and their negations together
|
|
||||||
+ for opt in sortedset(undoc_opts):
|
|
||||||
+ fmt = fmt2enum[opt]['fmt']
|
|
||||||
+ enum = fmt2enum[opt]['enum']
|
|
||||||
+ code = format_code(enum2code[enum])
|
|
||||||
+ neg = opt_neg(opt)
|
|
||||||
+
|
|
||||||
+ if enum == 'Opt_ignore':
|
|
||||||
+ print("# skipping %s (Opt_ignore)\n"%opt)
|
|
||||||
+ continue
|
|
||||||
+
|
|
||||||
+ if opt_exists(neg) and opt_is_doc(neg):
|
|
||||||
+ print("# skipping %s (%s is documented)\n"%(opt, neg))
|
|
||||||
+ continue
|
|
||||||
+
|
|
||||||
+ alias = opt_alias_is_doc(opt)
|
|
||||||
+ if alias:
|
|
||||||
+ print("# skipping %s (alias %s is documented)\n"%(opt, alias))
|
|
||||||
+ continue
|
|
||||||
+
|
|
||||||
+ print('OPTION %s ("%s" -> %s):\n%s'%(opt, fmt, enum, code))
|
|
||||||
+
|
|
||||||
+ print('')
|
|
||||||
+ print('DOCUMENTED BUT NON-EXISTING OPTIONS')
|
|
||||||
+ print('===================================')
|
|
||||||
+
|
|
||||||
+ unex_opts = man_opts_set - kernel_opts_set
|
|
||||||
+ # group opts and their negations together
|
|
||||||
+ for opt in sortedset(unex_opts):
|
|
||||||
+ fmt = manopts[opt]
|
|
||||||
+ print('OPTION %s ("%s")' % (opt, fmt))
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ print('')
|
|
||||||
+ print('NEGATIVE OPTIONS WITHOUT POSITIVE')
|
|
||||||
+ print('=================================')
|
|
||||||
+
|
|
||||||
+ for opt in sortedset(kernel_opts_set):
|
|
||||||
+ if not opt.startswith('no'):
|
|
||||||
+ continue
|
|
||||||
+
|
|
||||||
+ neg = opt[2:]
|
|
||||||
+ if not opt_exists(neg):
|
|
||||||
+ print("OPTION %s exists but not %s"%(opt,neg))
|
|
||||||
+
|
|
||||||
+# little helper to test AND store result at the same time so you can
|
|
||||||
+# do if/elsif easily instead of nesting them when you need to do
|
|
||||||
+# captures
|
|
||||||
+class RX:
|
|
||||||
+ def __init__(self):
|
|
||||||
+ pass
|
|
||||||
+ def search(self, rx, s, flags=0):
|
|
||||||
+ self.r = re.search(rx, s, flags)
|
|
||||||
+ return self.r
|
|
||||||
+ def group(self, n):
|
|
||||||
+ return self.r.group(n)
|
|
||||||
+
|
|
||||||
+if __name__ == '__main__':
|
|
||||||
+ main()
|
|
||||||
--
|
|
||||||
2.13.7
|
|
||||||
|
|
@ -1,219 +0,0 @@
|
|||||||
From 7325a01abc529d68756bae90cf23233392626939 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Aur=C3=A9lien=20Aptel?= <aaptel@suse.com>
|
|
||||||
Date: Tue, 10 Jul 2018 17:50:43 +0200
|
|
||||||
Subject: [PATCH 05/10] mount.cifs.rst: document missing options, correct wrong
|
|
||||||
ones
|
|
||||||
|
|
||||||
Signed-off-by: Aurelien Aptel <aaptel@suse.com>
|
|
||||||
---
|
|
||||||
mount.cifs.rst | 111 ++++++++++++++++++++++++++++++++++++++++-----------------
|
|
||||||
1 file changed, 79 insertions(+), 32 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/mount.cifs.rst b/mount.cifs.rst
|
|
||||||
index 56c1bf9..13b3a1e 100644
|
|
||||||
--- a/mount.cifs.rst
|
|
||||||
+++ b/mount.cifs.rst
|
|
||||||
@@ -123,6 +123,11 @@ forcegid
|
|
||||||
of the gid= option. See the section on `FILE AND DIRECTORY OWNERSHIP
|
|
||||||
AND PERMISSIONS`_ below for more information.
|
|
||||||
|
|
||||||
+idsfromsid
|
|
||||||
+ Extract uid/gid from special SID instead of mapping it. See the
|
|
||||||
+ section on `FILE AND DIRECTORY OWNERSHIP AND PERMISSIONS`_ below for
|
|
||||||
+ more information.
|
|
||||||
+
|
|
||||||
port=arg
|
|
||||||
sets the port number on which the client will attempt to contact the
|
|
||||||
CIFS server. If this value is specified, look for an existing
|
|
||||||
@@ -133,8 +138,9 @@ port=arg
|
|
||||||
try to connect on port 445 first and then port 139 if that
|
|
||||||
fails. Return an error if both fail.
|
|
||||||
|
|
||||||
-servernetbiosname=arg
|
|
||||||
- Specify the server netbios name (RFC1001 name) to use when attempting
|
|
||||||
+
|
|
||||||
+netbiosname=arg
|
|
||||||
+ Specify the client netbios name (RFC1001 name) to use when attempting
|
|
||||||
to setup a session to the server. Although rarely needed for mounting
|
|
||||||
to newer servers, this option is needed for mounting to some older
|
|
||||||
servers (such as OS/2 or Windows 98 and Windows ME) since when
|
|
||||||
@@ -143,7 +149,8 @@ servernetbiosname=arg
|
|
||||||
characters long and is usually uppercased.
|
|
||||||
|
|
||||||
servern=arg
|
|
||||||
- Synonym for ``servernetbiosname``
|
|
||||||
+ Similarl to ``netbiosname`` except it specifies the netbios name of
|
|
||||||
+ the server instead of the client.
|
|
||||||
|
|
||||||
netbiosname=arg
|
|
||||||
When mounting to servers via port 139, specifies the RFC1001 source
|
|
||||||
@@ -166,6 +173,10 @@ ip=arg|addr=arg
|
|
||||||
domain=arg|dom=arg|workgroup=arg
|
|
||||||
sets the domain (workgroup) of the user.
|
|
||||||
|
|
||||||
+domainauto
|
|
||||||
+ When using NTLMv2 authentification and not providing a domain via
|
|
||||||
+ ``domain``, guess the domain from the server NTLM challenge.
|
|
||||||
+
|
|
||||||
guest
|
|
||||||
don't prompt for a password.
|
|
||||||
|
|
||||||
@@ -237,6 +248,9 @@ cache=arg
|
|
||||||
The default in kernels prior to 3.7 was ``loose``. As of kernel 3.7 the
|
|
||||||
default is ``strict``.
|
|
||||||
|
|
||||||
+nostrictsync
|
|
||||||
+ Do not flush to the server on fsync().
|
|
||||||
+
|
|
||||||
handlecache
|
|
||||||
(default) In SMB2 and above, the client often has to open the root
|
|
||||||
of the share (empty path) in various places during mount, path
|
|
||||||
@@ -247,32 +261,6 @@ handlecache
|
|
||||||
nohandlecache
|
|
||||||
Disable caching of the share root directory handle.
|
|
||||||
|
|
||||||
-directio
|
|
||||||
- Do not do inode data caching on files opened on this mount. This
|
|
||||||
- precludes mmaping files on this mount. In some cases with fast
|
|
||||||
- networks and little or no caching benefits on the client (e.g. when
|
|
||||||
- the application is doing large sequential reads bigger than page size
|
|
||||||
- without rereading the same data) this can provide better performance
|
|
||||||
- than the default behavior which caches reads (readahead) and writes
|
|
||||||
- (writebehind) through the local Linux client pagecache if oplock
|
|
||||||
- (caching token) is granted and held. Note that direct allows write
|
|
||||||
- operations larger than page size to be sent to the server. On some
|
|
||||||
- kernels this requires the cifs.ko module to be built with the
|
|
||||||
- ``CIFS_EXPERIMENTAL`` configure option.
|
|
||||||
-
|
|
||||||
- This option is will be deprecated in 3.7. Users should use
|
|
||||||
- ``cache=none`` instead on more recent kernels.
|
|
||||||
-
|
|
||||||
-strictcache
|
|
||||||
- Use for switching on strict cache mode. In this mode the client reads
|
|
||||||
- from the cache all the time it has *Oplock Level II* , otherwise -
|
|
||||||
- read from the server. As for write - the client stores a data in the
|
|
||||||
- cache in *Exclusive Oplock* case, otherwise - write directly to the
|
|
||||||
- server.
|
|
||||||
-
|
|
||||||
- This option is will be deprecated in 3.7. Users should use
|
|
||||||
- ``cache=strict`` instead on more recent kernels.
|
|
||||||
-
|
|
||||||
rwpidforward
|
|
||||||
Forward pid of a process who opened a file to any read or write
|
|
||||||
operation on that file. This prevent applications like wine(1) from
|
|
||||||
@@ -283,7 +271,7 @@ mapchars
|
|
||||||
including the colon, question mark, pipe, asterik, greater than and
|
|
||||||
less than characters) to the remap range (above 0xF000), which also
|
|
||||||
allows the CIFS client to recognize files created with such characters
|
|
||||||
- by Windows's POSIX emulation. This can also be useful when mounting to
|
|
||||||
+ by Windows's Services for Mac. This can also be useful when mounting to
|
|
||||||
most versions of Samba (which also forbids creating and opening files
|
|
||||||
whose names contain any of these seven characters). This has no effect
|
|
||||||
if the server does not support Unicode on the wire. Please note that
|
|
||||||
@@ -293,6 +281,10 @@ mapchars
|
|
||||||
nomapchars
|
|
||||||
(default) Do not translate any of these seven characters.
|
|
||||||
|
|
||||||
+mapposix
|
|
||||||
+ Translate reserved characters similarly to ``mapchars`` but use the
|
|
||||||
+ mapping from Microsoft "Services For Unix".
|
|
||||||
+
|
|
||||||
intr
|
|
||||||
currently unimplemented.
|
|
||||||
|
|
||||||
@@ -370,12 +362,42 @@ seal
|
|
||||||
Request encryption at the SMB layer. Encryption is only supported in
|
|
||||||
SMBv3 and above. The encryption algorithm used is AES-128-CCM.
|
|
||||||
|
|
||||||
+rdma
|
|
||||||
+ Connect directly to the server using SMB Direct via a RDMA adapter.
|
|
||||||
+
|
|
||||||
+resilienthandles
|
|
||||||
+ Enable resilient handles. If the server supports it, keep opened
|
|
||||||
+ files across reconenctions. Requires SMB2.1.
|
|
||||||
+
|
|
||||||
+noresilienthandles
|
|
||||||
+ (default) Disable resilient handles.
|
|
||||||
+
|
|
||||||
+persistenthandles
|
|
||||||
+ Enable persistent handles. If the server supports it, keep opened
|
|
||||||
+ files across reconnections. Persistent handles are also valid across
|
|
||||||
+ servers in a cluser and have stronger guarantees than resilient
|
|
||||||
+ handles. Requires SMB3 or above.
|
|
||||||
+
|
|
||||||
+nopersistenthandles
|
|
||||||
+ (default) Disable persistent handles.
|
|
||||||
+
|
|
||||||
+snapshot=time
|
|
||||||
+ Mount a specific snapshot of the remote share. ``time`` must be a
|
|
||||||
+ positive integer identifying the snapshot requested.
|
|
||||||
+
|
|
||||||
nobrl
|
|
||||||
Do not send byte range lock requests to the server. This is necessary
|
|
||||||
for certain applications that break with cifs style mandatory byte
|
|
||||||
range locks (and most cifs servers do not yet support requesting
|
|
||||||
advisory byte range locks).
|
|
||||||
|
|
||||||
+forcemandatorylock
|
|
||||||
+ Do not use POSIX locks even when available via unix
|
|
||||||
+ extensions. Always use cifs style mandatory locks.
|
|
||||||
+
|
|
||||||
+locallease
|
|
||||||
+ Check cache leases locally instead of querying the server.
|
|
||||||
+
|
|
||||||
sfu
|
|
||||||
When the CIFS Unix Extensions are not negotiated, attempt to create
|
|
||||||
device files and fifos in a format compatible with Services for Unix
|
|
||||||
@@ -431,8 +453,12 @@ noserverino
|
|
||||||
|
|
||||||
See section `INODE NUMBERS`_ for more information.
|
|
||||||
|
|
||||||
-nounix
|
|
||||||
- Disable the CIFS Unix Extensions for this mount. This can be useful in
|
|
||||||
+unix|linux
|
|
||||||
+ (default) Enable Unix Extensions for this mount. Requires CIFS
|
|
||||||
+ (vers=1.0) or SMB3.1.1 (vers=3.1.1) and a server supporting them.
|
|
||||||
+
|
|
||||||
+nounix|nolinux
|
|
||||||
+ Disable the Unix Extensions for this mount. This can be useful in
|
|
||||||
order to turn off multiple settings at once. This includes POSIX acls,
|
|
||||||
POSIX locks, POSIX paths, symlink support and retrieving
|
|
||||||
uids/gids/mode from the server. This can also be useful to work around
|
|
||||||
@@ -444,6 +470,23 @@ nouser_xattr
|
|
||||||
Do not allow getfattr/setfattr to get/set xattrs, even if server would
|
|
||||||
support it otherwise. The default is for xattr support to be enabled.
|
|
||||||
|
|
||||||
+nodfs
|
|
||||||
+ Do not follow Distributed FileSystem referals. IO on a file not
|
|
||||||
+ stored on the server will fail instead of connecting to the target
|
|
||||||
+ server transparently.
|
|
||||||
+
|
|
||||||
+noautotune
|
|
||||||
+ Use fixed size for kernel recv/send socket buffers.
|
|
||||||
+
|
|
||||||
+nosharesock
|
|
||||||
+ Do not try to reuse sockets if the system is already connected to
|
|
||||||
+ the server via an existing mount point. This will make the client
|
|
||||||
+ always make a new connection to the server no matter what he is
|
|
||||||
+ already connected to.
|
|
||||||
+
|
|
||||||
+noblocksend
|
|
||||||
+ Send data on the socket using non blocking operations (MSG_DONTWAIT flag).
|
|
||||||
+
|
|
||||||
rsize=bytes
|
|
||||||
Maximum amount of data that the kernel will request in a read request
|
|
||||||
in bytes. Prior to kernel 3.2.0, the default was 16k, and the maximum
|
|
||||||
@@ -472,6 +515,10 @@ wsize=bytes
|
|
||||||
this value isn't specified or it's greater or equal than the existing
|
|
||||||
one.
|
|
||||||
|
|
||||||
+max_credits=n
|
|
||||||
+ Maximum credits the SMB2 client can have. Default is 32000. Must be
|
|
||||||
+ set to a number between 20 and 60000.
|
|
||||||
+
|
|
||||||
fsc
|
|
||||||
Enable local disk caching using FS-Cache for CIFS. This option could
|
|
||||||
be useful to improve performance on a slow link, heavily loaded server
|
|
||||||
--
|
|
||||||
2.13.7
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
|||||||
From a389756f51916995d27819ea1807ab03f36d8dd7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alexander Bokovoy <ab@samba.org>
|
|
||||||
Date: Tue, 17 Jul 2018 13:12:44 +0300
|
|
||||||
Subject: [PATCH 06/10] cifs-utils: support rst2man-3
|
|
||||||
|
|
||||||
Python3 version of rst2man is called rst2man-3
|
|
||||||
|
|
||||||
Signed-off-by: Alexander Bokovoy <ab@samba.org>
|
|
||||||
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
|
|
||||||
---
|
|
||||||
Makefile.am | 2 +-
|
|
||||||
configure.ac | 6 +++---
|
|
||||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.am b/Makefile.am
|
|
||||||
index 30658e3..f37c9ae 100644
|
|
||||||
--- a/Makefile.am
|
|
||||||
+++ b/Makefile.am
|
|
||||||
@@ -16,7 +16,7 @@ man_MANS=
|
|
||||||
|
|
||||||
SUFFIXES = .rst .1 .8
|
|
||||||
|
|
||||||
-RST2MAN = rst2man --syntax-highlight=none $< $@
|
|
||||||
+RST2MAN = $(have_rst2man) --syntax-highlight=none $< $@
|
|
||||||
|
|
||||||
.rst.1:
|
|
||||||
$(RST2MAN)
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index b0bc2b9..8e3d6ce 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -252,12 +252,12 @@ fi
|
|
||||||
|
|
||||||
# if docs are not disabled, check if rst2man is available
|
|
||||||
if test $enable_man != "no"; then
|
|
||||||
- AC_CHECK_PROG(have_rst2man, rst2man, yes, no)
|
|
||||||
+ AC_CHECK_PROGS(have_rst2man, rst2man-3.6 rst2man-3.4 rst2man-3 rst2man, no)
|
|
||||||
if test $have_rst2man = "no"; then
|
|
||||||
if test $enable_man = "yes"; then
|
|
||||||
- AC_MSG_ERROR([rst2man not found: cannot generate man pages, consider installing perl.])
|
|
||||||
+ AC_MSG_ERROR([rst2man not found: cannot generate man pages, consider installing python{2,3}-docutils.])
|
|
||||||
else
|
|
||||||
- AC_MSG_WARN([rst2man not found: cannot generate man pages, consider installing perl. Disabling man page generation.])
|
|
||||||
+ AC_MSG_WARN([rst2man not found: cannot generate man pages, consider installing python{2,3}-docutils. Disabling man page generation.])
|
|
||||||
enable_man="no"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
--
|
|
||||||
2.13.7
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
|||||||
From 77b028c11fee787d1235a08fd06c8b60d20eb9c0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aurelien Aptel <aaptel@suse.com>
|
|
||||||
Date: Wed, 8 Aug 2018 11:38:15 +0200
|
|
||||||
Subject: [PATCH 07/10] checkopts: report duplicated options in man page
|
|
||||||
|
|
||||||
Signed-off-by: Aurelien Aptel <aaptel@suse.com>
|
|
||||||
---
|
|
||||||
checkopts | 19 ++++++++++++++++---
|
|
||||||
1 file changed, 16 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/checkopts b/checkopts
|
|
||||||
index 26ca271..88e70b1 100755
|
|
||||||
--- a/checkopts
|
|
||||||
+++ b/checkopts
|
|
||||||
@@ -98,9 +98,12 @@ def extract_man_opts(fn):
|
|
||||||
state = STATE_BASE
|
|
||||||
rx = RX()
|
|
||||||
opts = {}
|
|
||||||
+ ln = 0
|
|
||||||
|
|
||||||
with open(fn) as f:
|
|
||||||
for s in f.readlines():
|
|
||||||
+ ln += 1
|
|
||||||
+
|
|
||||||
if state == STATE_EXIT:
|
|
||||||
break
|
|
||||||
|
|
||||||
@@ -113,7 +116,9 @@ def extract_man_opts(fn):
|
|
||||||
s = chomp(s)
|
|
||||||
names = extract_canonical_opts(s)
|
|
||||||
for name in names:
|
|
||||||
- opts[name] = s
|
|
||||||
+ if name not in opts:
|
|
||||||
+ opts[name] = []
|
|
||||||
+ opts[name].append({'ln':ln, 'fmt':s})
|
|
||||||
elif rx.search(r'^[A-Z]+', s):
|
|
||||||
state = STATE_EXIT
|
|
||||||
return opts
|
|
||||||
@@ -174,6 +179,14 @@ def main():
|
|
||||||
def opt_is_doc(o):
|
|
||||||
return o in manopts
|
|
||||||
|
|
||||||
+ print('DUPLICATED DOC OPTIONS')
|
|
||||||
+ print('======================')
|
|
||||||
+
|
|
||||||
+ for opt in sortedset(man_opts_set):
|
|
||||||
+ if len(manopts[opt]) > 1:
|
|
||||||
+ lines = ", ".join([str(x['ln']) for x in manopts[opt]])
|
|
||||||
+ print("OPTION %-20.20s (lines %s)"%(opt, lines))
|
|
||||||
+ print()
|
|
||||||
|
|
||||||
print('UNDOCUMENTED OPTIONS')
|
|
||||||
print('====================')
|
|
||||||
@@ -208,8 +221,8 @@ def main():
|
|
||||||
unex_opts = man_opts_set - kernel_opts_set
|
|
||||||
# group opts and their negations together
|
|
||||||
for opt in sortedset(unex_opts):
|
|
||||||
- fmt = manopts[opt]
|
|
||||||
- print('OPTION %s ("%s")' % (opt, fmt))
|
|
||||||
+ man = manopts[opt][0]
|
|
||||||
+ print('OPTION %s ("%s") line %d' % (opt, man['fmt'], man['ln']))
|
|
||||||
|
|
||||||
|
|
||||||
print('')
|
|
||||||
--
|
|
||||||
2.13.7
|
|
||||||
|
|
@ -1,159 +0,0 @@
|
|||||||
From 06503ef4490a3dde4e8297cf1c5cb336ba43aafa Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aurelien Aptel <aaptel@suse.com>
|
|
||||||
Date: Wed, 8 Aug 2018 11:38:16 +0200
|
|
||||||
Subject: [PATCH 08/10] mount.cifs.rst: more cleanups
|
|
||||||
|
|
||||||
* remove duplicates (netbiosname, rdma)
|
|
||||||
* remove snapshot
|
|
||||||
* document nostrictsync, domain, domainauto better
|
|
||||||
* point to vers= when talking about version requirements
|
|
||||||
* typos
|
|
||||||
|
|
||||||
Signed-off-by: Aurelien Aptel <aaptel@suse.com>
|
|
||||||
---
|
|
||||||
mount.cifs.rst | 61 ++++++++++++++++++++++++++++------------------------------
|
|
||||||
1 file changed, 29 insertions(+), 32 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/mount.cifs.rst b/mount.cifs.rst
|
|
||||||
index 13b3a1e..3504477 100644
|
|
||||||
--- a/mount.cifs.rst
|
|
||||||
+++ b/mount.cifs.rst
|
|
||||||
@@ -138,25 +138,20 @@ port=arg
|
|
||||||
try to connect on port 445 first and then port 139 if that
|
|
||||||
fails. Return an error if both fail.
|
|
||||||
|
|
||||||
-
|
|
||||||
netbiosname=arg
|
|
||||||
- Specify the client netbios name (RFC1001 name) to use when attempting
|
|
||||||
- to setup a session to the server. Although rarely needed for mounting
|
|
||||||
+ When mounting to servers via port 139, specifies the RFC1001 source
|
|
||||||
+ name to use to represent the client netbios machine during the netbios
|
|
||||||
+ session initialization.
|
|
||||||
+
|
|
||||||
+servern=arg
|
|
||||||
+ Similar to ``netbiosname`` except it specifies the netbios name of
|
|
||||||
+ the server instead of the client. Although rarely needed for mounting
|
|
||||||
to newer servers, this option is needed for mounting to some older
|
|
||||||
servers (such as OS/2 or Windows 98 and Windows ME) since when
|
|
||||||
connecting over port 139 they, unlike most newer servers, do not
|
|
||||||
support a default server name. A server name can be up to 15
|
|
||||||
characters long and is usually uppercased.
|
|
||||||
|
|
||||||
-servern=arg
|
|
||||||
- Similarl to ``netbiosname`` except it specifies the netbios name of
|
|
||||||
- the server instead of the client.
|
|
||||||
-
|
|
||||||
-netbiosname=arg
|
|
||||||
- When mounting to servers via port 139, specifies the RFC1001 source
|
|
||||||
- name to use to represent the client netbios machine name when doing
|
|
||||||
- the RFC1001 netbios session initialize.
|
|
||||||
-
|
|
||||||
file_mode=arg
|
|
||||||
If the server does not support the CIFS Unix extensions this overrides
|
|
||||||
the default file mode.
|
|
||||||
@@ -171,11 +166,14 @@ ip=arg|addr=arg
|
|
||||||
rarely needs to be specified by the user.
|
|
||||||
|
|
||||||
domain=arg|dom=arg|workgroup=arg
|
|
||||||
- sets the domain (workgroup) of the user.
|
|
||||||
+ Sets the domain (workgroup) of the user. If no domains are given,
|
|
||||||
+ the empty domain will be used. Use ``domainauto`` to automatically
|
|
||||||
+ guess the domain of the server you are connecting to.
|
|
||||||
|
|
||||||
domainauto
|
|
||||||
- When using NTLMv2 authentification and not providing a domain via
|
|
||||||
+ When using NTLM authentication and not providing a domain via
|
|
||||||
``domain``, guess the domain from the server NTLM challenge.
|
|
||||||
+ This behavior used to be the default on kernels older than 2.6.36.
|
|
||||||
|
|
||||||
guest
|
|
||||||
don't prompt for a password.
|
|
||||||
@@ -249,7 +247,14 @@ cache=arg
|
|
||||||
default is ``strict``.
|
|
||||||
|
|
||||||
nostrictsync
|
|
||||||
- Do not flush to the server on fsync().
|
|
||||||
+ Do not ask the server to flush on fsync().
|
|
||||||
+ Some servers perform non-buffered writes by default in which case
|
|
||||||
+ flushing is redundant. In workloads where a client is performing a
|
|
||||||
+ lot of small write + fsync combinations and where network latency is
|
|
||||||
+ much higher than the server latency, this brings a 2x performance
|
|
||||||
+ improvement.
|
|
||||||
+ This option is also a good candidate in scenarios where we want
|
|
||||||
+ performance over consistency.
|
|
||||||
|
|
||||||
handlecache
|
|
||||||
(default) In SMB2 and above, the client often has to open the root
|
|
||||||
@@ -359,15 +364,16 @@ sec=arg
|
|
||||||
automatically if it's enabled in */proc/fs/cifs/SecurityFlags*.
|
|
||||||
|
|
||||||
seal
|
|
||||||
- Request encryption at the SMB layer. Encryption is only supported in
|
|
||||||
- SMBv3 and above. The encryption algorithm used is AES-128-CCM.
|
|
||||||
+ Request encryption at the SMB layer. The encryption algorithm used
|
|
||||||
+ is AES-128-CCM. Requires SMB3 or above (see ``vers``).
|
|
||||||
|
|
||||||
rdma
|
|
||||||
- Connect directly to the server using SMB Direct via a RDMA adapter.
|
|
||||||
+ Connect directly to the server using SMB Direct via a RDMA
|
|
||||||
+ adapter. Requires SMB3 or above (see ``vers``).
|
|
||||||
|
|
||||||
resilienthandles
|
|
||||||
Enable resilient handles. If the server supports it, keep opened
|
|
||||||
- files across reconenctions. Requires SMB2.1.
|
|
||||||
+ files across reconnections. Requires SMB2.1 (see ``vers``).
|
|
||||||
|
|
||||||
noresilienthandles
|
|
||||||
(default) Disable resilient handles.
|
|
||||||
@@ -375,16 +381,12 @@ noresilienthandles
|
|
||||||
persistenthandles
|
|
||||||
Enable persistent handles. If the server supports it, keep opened
|
|
||||||
files across reconnections. Persistent handles are also valid across
|
|
||||||
- servers in a cluser and have stronger guarantees than resilient
|
|
||||||
- handles. Requires SMB3 or above.
|
|
||||||
+ servers in a cluster and have stronger guarantees than resilient
|
|
||||||
+ handles. Requires SMB3 or above (see ``vers``).
|
|
||||||
|
|
||||||
nopersistenthandles
|
|
||||||
(default) Disable persistent handles.
|
|
||||||
|
|
||||||
-snapshot=time
|
|
||||||
- Mount a specific snapshot of the remote share. ``time`` must be a
|
|
||||||
- positive integer identifying the snapshot requested.
|
|
||||||
-
|
|
||||||
nobrl
|
|
||||||
Do not send byte range lock requests to the server. This is necessary
|
|
||||||
for certain applications that break with cifs style mandatory byte
|
|
||||||
@@ -396,7 +398,7 @@ forcemandatorylock
|
|
||||||
extensions. Always use cifs style mandatory locks.
|
|
||||||
|
|
||||||
locallease
|
|
||||||
- Check cache leases locally instead of querying the server.
|
|
||||||
+ Check cached leases locally instead of querying the server.
|
|
||||||
|
|
||||||
sfu
|
|
||||||
When the CIFS Unix Extensions are not negotiated, attempt to create
|
|
||||||
@@ -425,11 +427,6 @@ echo_interval=n
|
|
||||||
If this option is not given then the default value of 60 seconds is used.
|
|
||||||
The minimum tunable value is 1 second and maximum can go up to 600 seconds.
|
|
||||||
|
|
||||||
-rdma
|
|
||||||
- Use to connect to SMB Direct, only applicable when specified with
|
|
||||||
- vers=3 or vers=3.x.
|
|
||||||
- Here 3.x can be 3.0, 3.02 or 3.1.1.
|
|
||||||
-
|
|
||||||
serverino
|
|
||||||
Use inode numbers (unique persistent file identifiers) returned by the
|
|
||||||
server instead of automatically generating temporary inode numbers on
|
|
||||||
@@ -471,7 +468,7 @@ nouser_xattr
|
|
||||||
support it otherwise. The default is for xattr support to be enabled.
|
|
||||||
|
|
||||||
nodfs
|
|
||||||
- Do not follow Distributed FileSystem referals. IO on a file not
|
|
||||||
+ Do not follow Distributed FileSystem referrals. IO on a file not
|
|
||||||
stored on the server will fail instead of connecting to the target
|
|
||||||
server transparently.
|
|
||||||
|
|
||||||
--
|
|
||||||
2.13.7
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
|||||||
From 439cd76f72a2dd3c65fd7d30ece460cde6b9675d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pavel Shilovsky <pshilov@microsoft.com>
|
|
||||||
Date: Fri, 17 Aug 2018 11:08:58 -0700
|
|
||||||
Subject: [PATCH 09/10] mount.cifs.rst: document vers=3 mount option
|
|
||||||
|
|
||||||
Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
|
|
||||||
---
|
|
||||||
mount.cifs.rst | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/mount.cifs.rst b/mount.cifs.rst
|
|
||||||
index 3504477..6587e16 100644
|
|
||||||
--- a/mount.cifs.rst
|
|
||||||
+++ b/mount.cifs.rst
|
|
||||||
@@ -592,6 +592,7 @@ vers=arg
|
|
||||||
- 2.1 - The SMBv2.1 protocol that was introduced in Microsoft Windows 7 and Windows Server 2008R2.
|
|
||||||
- 3.0 - The SMBv3.0 protocol that was introduced in Microsoft Windows 8 and Windows Server 2012.
|
|
||||||
- 3.1.1 or 3.11 - The SMBv3.1.1 protocol that was introduced in Microsoft Windows Server 2016.
|
|
||||||
+ - 3 - The SMBv3.0 protocol version and above.
|
|
||||||
|
|
||||||
Note too that while this option governs the protocol version used, not
|
|
||||||
all features of each version are available.
|
|
||||||
--
|
|
||||||
2.13.7
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
|||||||
From 3c7e8c3663f50c2d2df6158cc4d22c4fccdc8ae8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pavel Shilovsky <pshilov@microsoft.com>
|
|
||||||
Date: Fri, 17 Aug 2018 11:13:45 -0700
|
|
||||||
Subject: [PATCH 10/10] mount.cifs.rst: document vers=3.02 mount option
|
|
||||||
|
|
||||||
Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
|
|
||||||
---
|
|
||||||
mount.cifs.rst | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/mount.cifs.rst b/mount.cifs.rst
|
|
||||||
index 6587e16..a0faf7f 100644
|
|
||||||
--- a/mount.cifs.rst
|
|
||||||
+++ b/mount.cifs.rst
|
|
||||||
@@ -591,6 +591,7 @@ vers=arg
|
|
||||||
different dialect (2.000) that is not supported.
|
|
||||||
- 2.1 - The SMBv2.1 protocol that was introduced in Microsoft Windows 7 and Windows Server 2008R2.
|
|
||||||
- 3.0 - The SMBv3.0 protocol that was introduced in Microsoft Windows 8 and Windows Server 2012.
|
|
||||||
+ - 3.02 - The SMBv3.0.2 protocol that was introduced in Microsoft Windows 8.1 and Windows Server 2012R2.
|
|
||||||
- 3.1.1 or 3.11 - The SMBv3.1.1 protocol that was introduced in Microsoft Windows Server 2016.
|
|
||||||
- 3 - The SMBv3.0 protocol version and above.
|
|
||||||
|
|
||||||
--
|
|
||||||
2.13.7
|
|
||||||
|
|
@ -1,268 +0,0 @@
|
|||||||
From paulo@paulo.ac Wed Feb 13 18:09:41 2019
|
|
||||||
Return-path: <linux-cifs-owner@vger.kernel.org>
|
|
||||||
Received: from prv1-mx.provo.novell.com (novprvlin0515.provo.novell.com [130.57.1.105])
|
|
||||||
by prv-mh.provo.novell.com with ESMTP (NOT encrypted); Wed, 13 Feb 2019 11:09:56 -0700
|
|
||||||
Received: from vger.kernel.org (209.132.180.67) by prv1-mx.provo.novell.com (130.57.1.11) GWAVA SMTP; Wed, 13 Feb 2019 11:09:57 -0700
|
|
||||||
X-Spam_ID: str=0001.0A020211.5C645D75.005D,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0
|
|
||||||
X-GWAVADAT: <keymat><rkey>zFPcY7v2brlPt6Q2</rkey><gkey>e5327cab1501d80247f45f4235d8ab62d9cebc212966054348ffdffbdcecc4b3</gkey><objectid>17boib3.17boib3.v6</objectid></keymat>
|
|
||||||
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
|
||||||
id S1729522AbfBMSJ4 (ORCPT <rfc822;dmulder@suse.com> + 3 others);
|
|
||||||
Wed, 13 Feb 2019 13:09:56 -0500
|
|
||||||
Received: from mail.paulo.ac ([18.228.144.36]:36484 "EHLO mail.paulo.ac"
|
|
||||||
rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP
|
|
||||||
id S1727937AbfBMSJz (ORCPT <rfc822;linux-cifs@vger.kernel.org>);
|
|
||||||
Wed, 13 Feb 2019 13:09:55 -0500
|
|
||||||
Received: from localhost (localhost [127.0.0.1])
|
|
||||||
by mail.paulo.ac (Postfix) with ESMTP id 908B04823B16;
|
|
||||||
Wed, 13 Feb 2019 18:09:52 +0000 (UTC)
|
|
||||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=paulo.ac; s=default;
|
|
||||||
t=1550081392; bh=NPHMWzhC+dOx1uqYM9k6+umJOPTfdQQb4DDuwxCPykY=;
|
|
||||||
h=From:To:Cc:Subject:Date;
|
|
||||||
b=T/4Gj7VIMqZKmdsNgp0GA1d/4g7rZD8wHngdPprFv5GJ3kwcM0HAiFs9IY7sqln2m
|
|
||||||
+zAQ9B5qbEoeJif9o/LeR7ED+kqAZyn+uGitgiE7DcMJ5wzvGIDZyl/KAGQn/35Auf
|
|
||||||
BNdDIwgVMyv0Iba6DiPlLSIXP9QBxBlXHGDD90fE=
|
|
||||||
Received: from mail.paulo.ac ([127.0.0.1])
|
|
||||||
by localhost (ip-172-31-5-70.sa-east-1.compute.internal [127.0.0.1]) (amavisd-new, port 10024)
|
|
||||||
with ESMTP id ztemnOMlOHdf; Wed, 13 Feb 2019 18:09:51 +0000 (UTC)
|
|
||||||
Received: from localhost.localdomain (unknown [186.215.53.127])
|
|
||||||
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
||||||
(No client certificate requested)
|
|
||||||
by mail.paulo.ac (Postfix) with ESMTPSA id CAFF84822E3F;
|
|
||||||
Wed, 13 Feb 2019 18:09:50 +0000 (UTC)
|
|
||||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=paulo.ac; s=default;
|
|
||||||
t=1550081391; bh=NPHMWzhC+dOx1uqYM9k6+umJOPTfdQQb4DDuwxCPykY=;
|
|
||||||
h=From:To:Cc:Subject:Date;
|
|
||||||
b=iyVAaOItT0Qa5SuPc9LRAoN1qb8VHw5hZNzhOF6NOB178UgZYt2Tt9pzR9/0UbhUF
|
|
||||||
GeJP0gK64HWvGmbDz8zRhrVgnZpGgAXfaPa20AuGm3WlrtZpb3Z2s/krSAI2I1tQfx
|
|
||||||
82wY8IeZOD9F+709ZZlwlkGHMWiDLaiRH7xTJWIU=
|
|
||||||
From: Paulo Alcantara <paulo@paulo.ac>
|
|
||||||
To: linux-cifs@vger.kernel.org
|
|
||||||
Cc: smfrench@gmail.com, aaptel@suse.com, piastryyy@gmail.com,
|
|
||||||
Paulo Alcantara <paulo@paulo.ac>,
|
|
||||||
Paulo Alcantara <palcantara@suse.de>
|
|
||||||
Subject: [PATCH] cifs: Allow DNS resolver key to expire
|
|
||||||
Date: Wed, 13 Feb 2019 16:09:41 -0200
|
|
||||||
Message-Id: <20190213180941.2587-1-paulo@paulo.ac>
|
|
||||||
X-Mailer: git-send-email 2.20.1
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
Sender: linux-cifs-owner@vger.kernel.org
|
|
||||||
Precedence: bulk
|
|
||||||
List-ID: <linux-cifs.vger.kernel.org>
|
|
||||||
X-Mailing-List: linux-cifs@vger.kernel.org
|
|
||||||
|
|
||||||
This patch introduces a new '--expire' option that allows the user to
|
|
||||||
set a timeout value for the dns resolver key -- which is typically
|
|
||||||
useful for hostnames that may get their ip addresses changed under
|
|
||||||
long running mounts.
|
|
||||||
|
|
||||||
The default timeout value is set to 10 minutes.
|
|
||||||
|
|
||||||
Signed-off-by: Paulo Alcantara <palcantara@suse.de>
|
|
||||||
---
|
|
||||||
cifs.upcall.c | 88 +++++++++++++++++++++++++++++++++-------------
|
|
||||||
cifs.upcall.rst.in | 5 ++-
|
|
||||||
2 files changed, 67 insertions(+), 26 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/cifs.upcall.c b/cifs.upcall.c
|
|
||||||
index 89563fd42adc..c92ee62f6764 100644
|
|
||||||
--- a/cifs.upcall.c
|
|
||||||
+++ b/cifs.upcall.c
|
|
||||||
@@ -63,6 +63,8 @@
|
|
||||||
static krb5_context context;
|
|
||||||
static const char *prog = "cifs.upcall";
|
|
||||||
|
|
||||||
+#define DNS_RESOLVER_DEFAULT_TIMEOUT 600 /* 10 minutes */
|
|
||||||
+
|
|
||||||
typedef enum _sectype {
|
|
||||||
NONE = 0,
|
|
||||||
KRB5,
|
|
||||||
@@ -749,19 +751,48 @@ decode_key_description(const char *desc, struct decoded_args *arg)
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int cifs_resolver(const key_serial_t key, const char *key_descr)
|
|
||||||
+static int setup_key(const key_serial_t key, const void *data, size_t datalen)
|
|
||||||
+{
|
|
||||||
+ int rc;
|
|
||||||
+
|
|
||||||
+ rc = keyctl_instantiate(key, data, datalen, 0);
|
|
||||||
+ if (rc) {
|
|
||||||
+ switch (errno) {
|
|
||||||
+ case ENOMEM:
|
|
||||||
+ case EDQUOT:
|
|
||||||
+ rc = keyctl_clear(key);
|
|
||||||
+ if (rc) {
|
|
||||||
+ syslog(LOG_ERR, "%s: keyctl_clear: %s",
|
|
||||||
+ __func__, strerror(errno));
|
|
||||||
+ return rc;
|
|
||||||
+ }
|
|
||||||
+ rc = keyctl_instantiate(key, data, datalen, 0);
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ ;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (rc) {
|
|
||||||
+ syslog(LOG_ERR, "%s: keyctl_instantiate: %s",
|
|
||||||
+ __func__, strerror(errno));
|
|
||||||
+ }
|
|
||||||
+ return rc;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int cifs_resolver(const key_serial_t key, const char *key_descr,
|
|
||||||
+ const char *key_buf, unsigned expire_time)
|
|
||||||
{
|
|
||||||
int c;
|
|
||||||
struct addrinfo *addr;
|
|
||||||
char ip[INET6_ADDRSTRLEN];
|
|
||||||
void *p;
|
|
||||||
- const char *keyend = key_descr;
|
|
||||||
+ const char *keyend = key_buf;
|
|
||||||
/* skip next 4 ';' delimiters to get to description */
|
|
||||||
for (c = 1; c <= 4; c++) {
|
|
||||||
keyend = index(keyend + 1, ';');
|
|
||||||
if (!keyend) {
|
|
||||||
syslog(LOG_ERR, "invalid key description: %s",
|
|
||||||
- key_descr);
|
|
||||||
+ key_buf);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -787,15 +818,21 @@ static int cifs_resolver(const key_serial_t key, const char *key_descr)
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
- /* setup key */
|
|
||||||
- c = keyctl_instantiate(key, ip, strlen(ip) + 1, 0);
|
|
||||||
- if (c == -1) {
|
|
||||||
- syslog(LOG_ERR, "%s: keyctl_instantiate: %s", __func__,
|
|
||||||
- strerror(errno));
|
|
||||||
- freeaddrinfo(addr);
|
|
||||||
- return 1;
|
|
||||||
- }
|
|
||||||
+ /* needed for keyctl_set_timeout() */
|
|
||||||
+ request_key("keyring", key_descr, NULL, KEY_SPEC_THREAD_KEYRING);
|
|
||||||
|
|
||||||
+ c = setup_key(key, ip, strlen(ip) + 1);
|
|
||||||
+ if (c) {
|
|
||||||
+ freeaddrinfo(addr);
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
+ c = keyctl_set_timeout(key, expire_time);
|
|
||||||
+ if (c) {
|
|
||||||
+ syslog(LOG_ERR, "%s: keyctl_set_timeout: %s", __func__,
|
|
||||||
+ strerror(errno));
|
|
||||||
+ freeaddrinfo(addr);
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
freeaddrinfo(addr);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -864,7 +901,7 @@ lowercase_string(char *c)
|
|
||||||
|
|
||||||
static void usage(void)
|
|
||||||
{
|
|
||||||
- fprintf(stderr, "Usage: %s [ -K /path/to/keytab] [-k /path/to/krb5.conf] [-E] [-t] [-v] [-l] key_serial\n", prog);
|
|
||||||
+ fprintf(stderr, "Usage: %s [ -K /path/to/keytab] [-k /path/to/krb5.conf] [-E] [-t] [-v] [-l] [-e nsecs] key_serial\n", prog);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct option long_options[] = {
|
|
||||||
@@ -874,6 +911,7 @@ static const struct option long_options[] = {
|
|
||||||
{"trust-dns", 0, NULL, 't'},
|
|
||||||
{"keytab", 1, NULL, 'K'},
|
|
||||||
{"version", 0, NULL, 'v'},
|
|
||||||
+ {"expire", 1, NULL, 'e'},
|
|
||||||
{NULL, 0, NULL, 0}
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -897,13 +935,15 @@ int main(const int argc, char *const argv[])
|
|
||||||
char *env_cachename = NULL;
|
|
||||||
krb5_ccache ccache = NULL;
|
|
||||||
struct passwd *pw;
|
|
||||||
+ unsigned expire_time = DNS_RESOLVER_DEFAULT_TIMEOUT;
|
|
||||||
+ const char *key_descr = NULL;
|
|
||||||
|
|
||||||
hostbuf[0] = '\0';
|
|
||||||
memset(&arg, 0, sizeof(arg));
|
|
||||||
|
|
||||||
openlog(prog, 0, LOG_DAEMON);
|
|
||||||
|
|
||||||
- while ((c = getopt_long(argc, argv, "cEk:K:ltv", long_options, NULL)) != -1) {
|
|
||||||
+ while ((c = getopt_long(argc, argv, "cEk:K:ltve:", long_options, NULL)) != -1) {
|
|
||||||
switch (c) {
|
|
||||||
case 'c':
|
|
||||||
/* legacy option -- skip it */
|
|
||||||
@@ -931,6 +971,9 @@ int main(const int argc, char *const argv[])
|
|
||||||
rc = 0;
|
|
||||||
printf("version: %s\n", VERSION);
|
|
||||||
goto out;
|
|
||||||
+ case 'e':
|
|
||||||
+ expire_time = strtoul(optarg, NULL, 10);
|
|
||||||
+ break;
|
|
||||||
default:
|
|
||||||
syslog(LOG_ERR, "unknown option: %c", c);
|
|
||||||
goto out;
|
|
||||||
@@ -965,9 +1008,12 @@ int main(const int argc, char *const argv[])
|
|
||||||
|
|
||||||
syslog(LOG_DEBUG, "key description: %s", buf);
|
|
||||||
|
|
||||||
- if ((strncmp(buf, "cifs.resolver", sizeof("cifs.resolver") - 1) == 0) ||
|
|
||||||
- (strncmp(buf, "dns_resolver", sizeof("dns_resolver") - 1) == 0)) {
|
|
||||||
- rc = cifs_resolver(key, buf);
|
|
||||||
+ if (strncmp(buf, "cifs.resolver", sizeof("cifs.resolver") - 1) == 0)
|
|
||||||
+ key_descr = ".cifs.resolver";
|
|
||||||
+ else if (strncmp(buf, "dns_resolver", sizeof("dns_resolver") - 1) == 0)
|
|
||||||
+ key_descr = ".dns_resolver";
|
|
||||||
+ if (key_descr) {
|
|
||||||
+ rc = cifs_resolver(key, key_descr, buf, expire_time);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1193,16 +1239,8 @@ retry_new_hostname:
|
|
||||||
memcpy(&(keydata->data) + keydata->sesskey_len,
|
|
||||||
secblob.data, secblob.length);
|
|
||||||
|
|
||||||
- /* setup key */
|
|
||||||
- rc = keyctl_instantiate(key, keydata, datalen, 0);
|
|
||||||
- if (rc == -1) {
|
|
||||||
- syslog(LOG_ERR, "keyctl_instantiate: %s", strerror(errno));
|
|
||||||
- goto out;
|
|
||||||
- }
|
|
||||||
+ rc = setup_key(key, keydata, datalen);
|
|
||||||
|
|
||||||
- /* BB: maybe we need use timeout for key: for example no more then
|
|
||||||
- * ticket lifietime? */
|
|
||||||
- /* keyctl_set_timeout( key, 60); */
|
|
||||||
out:
|
|
||||||
/*
|
|
||||||
* on error, negatively instantiate the key ourselves so that we can
|
|
||||||
diff --git a/cifs.upcall.rst.in b/cifs.upcall.rst.in
|
|
||||||
index 1b8df3f31d94..08ce324fc5f6 100644
|
|
||||||
--- a/cifs.upcall.rst.in
|
|
||||||
+++ b/cifs.upcall.rst.in
|
|
||||||
@@ -13,7 +13,7 @@ SYNOPSIS
|
|
||||||
|
|
||||||
cifs.upcall [--trust-dns|-t] [--version|-v] [--legacy-uid|-l]
|
|
||||||
[--krb5conf=/path/to/krb5.conf|-k /path/to/krb5.conf]
|
|
||||||
- [--keytab=/path/to/keytab|-K /path/to/keytab] {keyid}
|
|
||||||
+ [--keytab=/path/to/keytab|-K /path/to/keytab] [--expire|-e nsecs] {keyid}
|
|
||||||
|
|
||||||
***********
|
|
||||||
DESCRIPTION
|
|
||||||
@@ -85,6 +85,9 @@ OPTIONS
|
|
||||||
user. Set this option if you want cifs.upcall to use the older uid=
|
|
||||||
parameter instead of the creduid= parameter.
|
|
||||||
|
|
||||||
+--expire|-e
|
|
||||||
+ Override default timeout value (600 seconds) for ``dns_resolver`` key.
|
|
||||||
+
|
|
||||||
--version|-v
|
|
||||||
Print version number and exit.
|
|
||||||
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:e7d1f6050c43f21f82cd77e288eb756755effd22f0c310fc2c525df9d41dff79
|
|
||||||
size 384426
|
|
@ -1,17 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
Version: GnuPG v2
|
|
||||||
|
|
||||||
iQIcBAABCAAGBQJaozrEAAoJEN9bqdMGQtWgo20P/R1mqzgHoAfD1PrIGDHAbHmf
|
|
||||||
P5cvhZgsd+NnaYEFGm8HnYrY7cPWNgVB+PnBaUgfTXJ3NHiMT8dmtFaic4AWOxxN
|
|
||||||
o+8RPut+UYaEvG2aZr+mDK0Ig5zXU8GIxTxrCwrrzg2ZGBVW2x9J3wrOyomuPwIq
|
|
||||||
4UPlAX94fcOhKtcwtEqqG5BOXB9atNSw8fSmaxktgr0qAOc5wECZpmLimZjyX2qx
|
|
||||||
ASVFkTRmW4jl9YAOqAJ/CQti7MTEBFop5XuBgF8mbQgFTc0oMjcpUVUDC5a9tQEi
|
|
||||||
Tv8+GL0y0a8S6I7AH364pJFiZrHDbX3y8F3QTN/u4c1Fy8mkbcp3VLAwvrgFhzx4
|
|
||||||
e+X4Wezgu24zxIa/rmUySVpy3pjpshxuPR549lQHtZBLTlgLSO/MIB/E9V/0uC4g
|
|
||||||
vcPMS5zve603s3y/pEHkTHjv+WYMLVbI2Jc01rhDQGLB2wox5MyheFgfvSe12Gwa
|
|
||||||
LLYDT8O4B2mgXcXocsn2YOq369t8ZGIWhi2xpt7XQVL5wrmRAzM03/MBU5oJr0pl
|
|
||||||
NOG5RBZ8TJeBwJe7PAYB76B65e84uBn12hZCyeaYiQtHHiSYH9q1th12fXuySNxF
|
|
||||||
1C2XAcO327cTQtG5gI9m5DHPut8xjjBiIsdZJYIL8XhOrISy7AqpWu7C6rbt6VvZ
|
|
||||||
10JbR5QQcpNXPPW8209H
|
|
||||||
=Cn5o
|
|
||||||
-----END PGP SIGNATURE-----
|
|
3
cifs-utils-6.9.tar.bz2
Normal file
3
cifs-utils-6.9.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:18d8f1bf92c13c4d611502dbd6759e3a766ddc8467ec8a2eda3f589e40b9ac9c
|
||||||
|
size 400430
|
17
cifs-utils-6.9.tar.bz2.asc
Normal file
17
cifs-utils-6.9.tar.bz2.asc
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
Version: GnuPG v2
|
||||||
|
|
||||||
|
iQIcBAABCAAGBQJcp5M4AAoJEN9bqdMGQtWgCs8P/i5KHJSpV07TCiBXIq6mdQL5
|
||||||
|
WiUVGMuYrRpyRxg9+HbM+3I6G9OZX9OJvn9/+0Ph30fWgbspa2M+4P2K1DDS+vAF
|
||||||
|
fOkdKMHKm+/gosCI5Ys45bgtKfjmlXoT0FPHQaIZv9MrX8dJwKoVxcGpb85J1H/H
|
||||||
|
rnxFPJ+Pm6UEXnJH+ejCdACTPSFtiE4UJ/vZhlIXX1BY5qKZJes3TEjeEJxKIIWi
|
||||||
|
hRgO1yDyHRt5wDmvG0gQZAazM5pgCXKro1osYmCY545TYGOWirlciRCdxZtwlvhR
|
||||||
|
6f92XuLhEMrcIIHXLVD/F3hffHaoXtggzOWkekh6yHT6zA0CNn8x+mqn8dVimE1H
|
||||||
|
YWbKX2b3ezJqcXAL4eY1r4jlAPoinNpOaJ7NIza2ZTAhH8mf5WITA9vnwB4VAp0A
|
||||||
|
vfAVliN0TgzRk7lDuP/pe41jrTEgQ6QqgyEq5g6WdEMyoIAu3AhBGTUXxlTI4qrq
|
||||||
|
wWeRf7tdntEdMcbQlV7oLsB7yK3A7t1UwG9uacG7l6EUpezT0ljN9po8Sydnvv7Q
|
||||||
|
OXhIUJgXHWlKdDavHAurnCAVD2fw3t++J0lzYXjdQV0D3xs743Y0cO1hDRkTZ+7i
|
||||||
|
gyg9/xkC7yHILSQKDfICJClrQ1Kot34FXnwnrRbneKnvlrzQz38h2jeTTlha1jsL
|
||||||
|
xGzoIqfXZnPcwgTCAL3M
|
||||||
|
=1TCn
|
||||||
|
-----END PGP SIGNATURE-----
|
@ -1,3 +1,27 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Apr 10 11:07:07 UTC 2019 - Aurelien Aptel <aaptel@suse.com>
|
||||||
|
|
||||||
|
- Update to cifs-utils 6.9; (bsc#1132087).
|
||||||
|
* adds fixes for Azure
|
||||||
|
* new smbinfo utility
|
||||||
|
* remove cifs-utils-6.8.tar.bz2
|
||||||
|
* remove cifs-utils-6.8.tar.bz2.asc
|
||||||
|
* add cifs-utils-6.9.tar.bz2
|
||||||
|
* add cifs-utils-6.9.tar.bz2.asc
|
||||||
|
- Remove backports that are already in 6.9; (fate#325270); (bsc#1130528);
|
||||||
|
* remove 0001-docs-cleanup-rst-formating.patch
|
||||||
|
* remove 0002-mount.cifs.rst-document-new-no-handlecache-mount-opt.patch
|
||||||
|
* remove 0003-manpage-update-mount.cifs-manpage-with-info-about-rd.patch
|
||||||
|
* remove 0004-checkopts-add-python-script-to-cross-check-mount-opt.patch
|
||||||
|
* remove 0005-mount.cifs.rst-document-missing-options-correct-wron.patch
|
||||||
|
* remove 0006-cifs-utils-support-rst2man-3.patch
|
||||||
|
* remove 0007-checkopts-report-duplicated-options-in-man-page.patch
|
||||||
|
* remove 0008-mount.cifs.rst-more-cleanups.patch
|
||||||
|
* remove 0009-mount.cifs.rst-document-vers-3-mount-option.patch
|
||||||
|
* remove 0010-mount.cifs.rst-document-vers-3.02-mount-option.patch
|
||||||
|
* remove allow-dns-resolver-key-to-expire.patch
|
||||||
|
* remove suse-document-new-vers-default-SMB2.1.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Mar 12 13:39:46 UTC 2019 - palcantara@suse.de
|
Tue Mar 12 13:39:46 UTC 2019 - palcantara@suse.de
|
||||||
|
|
||||||
|
@ -12,12 +12,12 @@
|
|||||||
# license that conforms to the Open Source Definition (Version 1.9)
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
# published by the Open Source Initiative.
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
Name: cifs-utils
|
Name: cifs-utils
|
||||||
Version: 6.8
|
Version: 6.9
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Utilities for doing and managing mounts of the Linux CIFS filesystem
|
Summary: Utilities for doing and managing mounts of the Linux CIFS filesystem
|
||||||
License: GPL-3.0-or-later
|
License: GPL-3.0-or-later
|
||||||
@ -32,19 +32,6 @@ Source6: cifs-utils.keyring
|
|||||||
Source100: README.cifstab.migration
|
Source100: README.cifstab.migration
|
||||||
Source1: cifs.init
|
Source1: cifs.init
|
||||||
|
|
||||||
Patch0: 0001-docs-cleanup-rst-formating.patch
|
|
||||||
Patch1: 0002-mount.cifs.rst-document-new-no-handlecache-mount-opt.patch
|
|
||||||
Patch2: 0003-manpage-update-mount.cifs-manpage-with-info-about-rd.patch
|
|
||||||
Patch3: 0004-checkopts-add-python-script-to-cross-check-mount-opt.patch
|
|
||||||
Patch4: 0005-mount.cifs.rst-document-missing-options-correct-wron.patch
|
|
||||||
Patch5: 0006-cifs-utils-support-rst2man-3.patch
|
|
||||||
Patch6: 0007-checkopts-report-duplicated-options-in-man-page.patch
|
|
||||||
Patch7: 0008-mount.cifs.rst-more-cleanups.patch
|
|
||||||
Patch8: 0009-mount.cifs.rst-document-vers-3-mount-option.patch
|
|
||||||
Patch9: 0010-mount.cifs.rst-document-vers-3.02-mount-option.patch
|
|
||||||
Patch10: suse-document-new-vers-default-SMB2.1.patch
|
|
||||||
Patch11: allow-dns-resolver-key-to-expire.patch
|
|
||||||
|
|
||||||
# cifs-utils 6.8 switched to python for man page generation
|
# cifs-utils 6.8 switched to python for man page generation
|
||||||
# we need to require either py2 or py3 package
|
# we need to require either py2 or py3 package
|
||||||
# some products do not have a py2/py3 versions
|
# some products do not have a py2/py3 versions
|
||||||
@ -101,7 +88,7 @@ the Linux CIFS filesystem.
|
|||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Files needed for building plugins for cifs-utils
|
Summary: Files needed for building plugins for cifs-utils
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries/C and C++
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
The SMB/CIFS protocol is a standard file sharing protocol widely deployed
|
The SMB/CIFS protocol is a standard file sharing protocol widely deployed
|
||||||
@ -125,18 +112,6 @@ provide these credentials to the kernel automatically at login.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
cp -a ${RPM_SOURCE_DIR}/README.cifstab.migration .
|
cp -a ${RPM_SOURCE_DIR}/README.cifstab.migration .
|
||||||
%patch0 -p1
|
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
%patch6 -p1
|
|
||||||
%patch7 -p1
|
|
||||||
%patch8 -p1
|
|
||||||
%patch9 -p1
|
|
||||||
%patch10 -p1
|
|
||||||
%patch11 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
export CFLAGS="%{optflags} -D_GNU_SOURCE -fpie"
|
export CFLAGS="%{optflags} -D_GNU_SOURCE -fpie"
|
||||||
@ -187,7 +162,9 @@ touch %{buildroot}/%{_sysconfdir}/sysconfig/network/if-{down,up}.d/${script} \
|
|||||||
%{_mandir}/man8/cifs.idmap.8%{ext_man}
|
%{_mandir}/man8/cifs.idmap.8%{ext_man}
|
||||||
%{_bindir}/cifscreds
|
%{_bindir}/cifscreds
|
||||||
%{_sbindir}/cifs.upcall
|
%{_sbindir}/cifs.upcall
|
||||||
|
%{_bindir}/smbinfo
|
||||||
%{_mandir}/man1/cifscreds.1%{ext_man}
|
%{_mandir}/man1/cifscreds.1%{ext_man}
|
||||||
|
%{_mandir}/man1/smbinfo.1%{ext_man}
|
||||||
%{_mandir}/man8/cifs.upcall.8%{ext_man}
|
%{_mandir}/man8/cifs.upcall.8%{ext_man}
|
||||||
%{_mandir}/man8/mount.cifs.8%{ext_man}
|
%{_mandir}/man8/mount.cifs.8%{ext_man}
|
||||||
%dir %{_sysconfdir}/request-key.d
|
%dir %{_sysconfdir}/request-key.d
|
||||||
|
@ -1,37 +0,0 @@
|
|||||||
Index: cifs-utils-6.8/mount.cifs.c
|
|
||||||
===================================================================
|
|
||||||
--- cifs-utils-6.8.orig/mount.cifs.c
|
|
||||||
+++ cifs-utils-6.8/mount.cifs.c
|
|
||||||
@@ -2099,6 +2099,10 @@ mount_retry:
|
|
||||||
switch (errno) {
|
|
||||||
case ECONNREFUSED:
|
|
||||||
case EHOSTUNREACH:
|
|
||||||
+ if (currentaddress) {
|
|
||||||
+ fprintf(stderr, "mount error(%d): could not connect to %s",
|
|
||||||
+ errno, currentaddress);
|
|
||||||
+ }
|
|
||||||
currentaddress = nextaddress;
|
|
||||||
if (currentaddress) {
|
|
||||||
nextaddress = strchr(currentaddress, ',');
|
|
||||||
@@ -2110,6 +2114,12 @@ mount_retry:
|
|
||||||
fprintf(stderr,
|
|
||||||
"mount error: %s filesystem not supported by the system\n", cifs_fstype);
|
|
||||||
break;
|
|
||||||
+ case EHOSTDOWN:
|
|
||||||
+ fprintf(stderr,
|
|
||||||
+ "mount error: Server abruptly closed the connection.\n"
|
|
||||||
+ "This can happen if the server does not support the SMB version you are trying to use.\n"
|
|
||||||
+ "The default SMB version recently changed from SMB1 to SMB2.1 and above. Try mounting with vers=1.0.\n");
|
|
||||||
+ break;
|
|
||||||
case ENXIO:
|
|
||||||
if (!already_uppercased &&
|
|
||||||
uppercase_string(parsed_info->host) &&
|
|
||||||
@@ -2126,7 +2136,7 @@ mount_retry:
|
|
||||||
strerror(errno));
|
|
||||||
fprintf(stderr,
|
|
||||||
"Refer to the %s(8) manual page (e.g. man "
|
|
||||||
- "%s)\n", thisprogram, thisprogram);
|
|
||||||
+ "%s) and kernel log messages (dmesg)\n", thisprogram, thisprogram);
|
|
||||||
rc = EX_FAIL;
|
|
||||||
goto mount_exit;
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user