mount.cifs: be more verbose and helpful regarding mount errors
authorAurelien Aptel <aaptel@suse.com>
Thu, 14 Feb 2019 11:15:44 +0000 (12:15 +0100)
committerPavel Shilovsky <pshilov@microsoft.com>
Fri, 15 Feb 2019 00:40:58 +0000 (16:40 -0800)
Signed-off-by: Aurelien Aptel <aaptel@suse.com>
mount.cifs.c

index ae7a899d6538f66ce134c36d5bb12f047eb9962b..9370f2e73edcbcfc3b2617803a6c204a3c80c3a2 100644 (file)
@@ -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;
        }