44
votes

I am trying

sudo mount -t cifs //<server>/<share> -o username=user@domain,password=**** /mnt/<mountpoint>

error message:

mount: wrong fs type, bad option, bad superblock on //server/share,
       missing codepage or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

The syslog has

 CIFS VFS: cifs_mount failed w/return code = -22

I am able to mount the same share on another centos system. I can ping the server, mount point directory has been created.

16

16 Answers

44
votes

I ran into this problem when using a host name and solved it by using an IP address. E.g.:

use

mount -t cifs //192.168.1.15/share

rather than

mount -t cifs //servername/share

Another possible solution is to install

cifs-utils

.

25
votes

Ah, the dreaded -22. Basically this seems to be used as a catchall for "something didn't work", although technically it's referred to as an invalid argument.

The client does IMHO a very poor job of telling you the actual problem. (This may not be its fault - it doesn't always have access to that information).

However -- have you checked the logs on the server/machine you are connecting to?

I was connecting to an OS X samba server, and learned from what I found in the logs there that it was necessary to specify additional options under -o as follows:

nounix,sec=ntlmssp

Among the things these settings enable are "allow long names", and "ignore UNIX filename endings"...sec is to specify security flags.

Another possibility is that you're trying to access a filesystem of a type that mount.cifs can't actually handle.

10
votes

For RHEL/Centos install package - "cifs-utils"

9
votes

Maybe move the target?

sudo mount -t cifs -o username=user@domain,password=**** //<server>/<share> /mnt/<mountpoint>

Or maybe this solution? (Ubuntu, Debian methods)

sudo apt-get install smbfs

Or for CentOS, RedHat, Fedora try:

sudo yum install samba-client
9
votes

I had a similar issue on Ubuntu 12.04 with the "mount" package (version 2.20.1-1ubuntu3). It happened when I was trying to mount the server share using its hostname rahter than its IP.

Another way to solve the issue on Ubuntu was to install the cifs-utils package. That way I could also mount the samba share using the exact same command line (or fstab) but with hostname.

sudo mount -t cifs //hostname/share -o username=user,password=pwd /mnt/share
7
votes

Just did a clean install of Ubuntu 12.04 LTS and got this trying to hook up my Linux HTPC.

Solved it by running: sudo apt-get install cifs-utils then remounting it.

7
votes

CIFS returns code "-22" in many cases (not only invalid arguments).

For me installing keyutils did the trick:

apt-get install keyutils

My distribution is "Ubuntu 14.04.2 LTS".

I figured this out by increasing the logging verbosity of CIFS:

echo 7 > /proc/fs/cifs/cifsFYI
# disable again via:
#echo 0 > /proc/fs/cifs/cifsFYI

Documentation on the bitmask ("7") for cifsFYI can be found here: https://www.kernel.org/doc/readme/Documentation-filesystems-cifs-README

After trying to mount once more dmesg included more helpful information:

Dec 7 12:34:20 pc1471 kernel: [ 5442.667417] CIFS VFS: dns_resolve_server_name_to_ip: unable to resolve:

Another maybe helpful link:

http://vlkan.com/blog/post/2015/01/08/smb-mount-troubleshoot/

3
votes

I have Ubuntu Server 12.10 x64 installed as a VMware VM, running on OS X 10.8 (Mountain Lion).

On the Mac, in SYSTEM PREFERENCES > SHARING > FILE SHARING (on), I added a folder to share. For my tests, I created a new folder within my Public folder called "ubuntu".

In Ubuntu, I issued the following commands:

sudo mkdir /media/target
sudo mount.cifs //10.0.20.3/ubuntu /media/target -o username=davidallie,nounix,sec=ntlmssp,rw

Ubuntu prompted me for the password and, once entered, mounted the folder. I then ran:

df -H

which allowed me to verify the mounts and mount-points.

2
votes

Just experience the problem on RHEL 5. You don't need to install the samba suite, just the samba-client and any dependencies.

2
votes

Maybe it's too late, but simplest solution described in kernel bug 50631: in the latest code, unc mount parameter in mandatory. Modified command works for me:

sudo mount -t cifs //<server>/<share> -o username=user@domain,password=****,unc=\\\\<server>\\<share> /mnt/<mountpoint>
1
votes

Try run the comamnd:

$modinfo cifs


filename:       /lib/modules/3.2.0-60-virtual/kernel/fs/cifs/cifs.ko
version:        1.76
description:    VFS to access servers complying with the SNIA CIFS Specification e.g. Samba and Windows
license:        GPL
author:         Steve French <[email protected]>
srcversion:     9435BBC2F61D29F06643803
depends:        
intree:         Y
vermagic:       3.2.0-60-virtual SMP mod_unload modversions 686 
parm:           CIFSMaxBufSize:Network buffer size (not including header). Default: 16384 Range: 8192 to 130048 (int)
parm:           cifs_min_rcv:Network buffers in pool. Default: 4 Range: 1 to 64 (int)
parm:           cifs_min_small:Small network buffers in pool. Default: 30 Range: 2 to 256 (int)
parm:           cifs_max_pending:Simultaneous requests to server. Default: 32767 Range: 2 to 32767. (int)
parm:           echo_retries:Number of echo attempts before giving up and reconnecting server. Default: 5. 0 means never reconnect. (ushort)
parm:           enable_oplocks:Enable or disable oplocks (bool). Default:y/Y/1 (bool)

If your getting any error then cifs is not installed. Just check with your admin. I thought it helps out.

1
votes

You need to install cifs-utils first , just as follows: sudo yum install cifs-utils

1
votes

This has recently manifested thanks to a kernel bug in v5.18.8+, I was able to reproduce on v5.18.9 and v5.18.11.

Here is the relevant ticket on kernel.org, quote:

it appears that kernel 5.18.8 breaks cifs mounts on my machine. With 5.18.7, everything works fine. With 5.18.8, I am getting:

$ sudo mount /mnt/openmediavault/
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)

The relevant /etc/fstab line is:

//odroidxu4.local/julian /mnt/openmediavault cifs credentials=/home/julas/.credentials,uid=julas,gid=julas,vers=3.1.1,nobrl,_netdev,auto 0 0

Here is the offending commit, and here is the fix, which applies cleanly to v5.18.11. The cause is, from what I understand, a bug in old versions of the samba server in the negotiation protocol.

If this is your issue, you can:

  • patch your kernel yourself;
  • downgrade to v5.18.7;
  • switch to an LTS kernel;
  • use the userspace (and also really slow and awful) gvfs-smb;
  • upgrade the samba version on your server; or
  • add vers=2.0 to the mount.cifs options in /etc/fstab.

Note I haven't tried the last one, even though it seems really easy, so whether it will work for you or not isn't known to me. I'd appreciate someone letting me know in the comments and I'll update my answer.

Note also that I didn't try upgrading samba on the server at all because I hate touching the box it's running on - every time I upgrade anything everything breaks.


As a personal sidenote, it's a little sad that so many different things can cause -22. My answer is correct, but very very niche and specific to this point in time. I imagine in a month it will simply be useless noise.

0
votes

I know this is old, but on older cifs-utils versions, you may have to add the following two lines to /etc/request-key.conf

create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
create dns_resolver * * /usr/sbin/cifs.upcall %k
0
votes

Workaround without installing additional packages (cifs-utils adds another 81mb in Debian Stretch):

$ FILESERVER_IP=$(getent hosts myfileserver.com | awk '{ print $1 ; exit }')

$ sudo mount -t cifs //${FILESERVER_IP}/<share> -o username=user@domain,password=**** /mnt/<mountpoint>
0
votes

Adding the option vers=3.0 to the mount command worked for me: sudo mount -t cifs -v <src> <dst> -o ...,vers=3.0,...