From mboxrd@z Thu Jan 1 00:00:00 1970 From: Federico Sauter Subject: Re: Issue with upgrade to kernel 3.4.10 -> invalid argument error Date: Wed, 17 Oct 2012 15:42:53 +0200 Message-ID: <507EB5DD.8040107@innominate.com> References: <507D934E.9010304@innominate.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Steve French Return-path: In-Reply-To: Sender: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: Hello Steve, I use the apostrophes just to avoid escaping backslashes when I use them. Thank you very much for your question, since it led me to solve my problem. I was using a different mount version (busybox) and now that you pointed me in the right direction I found the issue by comparing the mount.cifs source code and the busybox sources and making the appropriate fixes. Kind regards, Fred On 10/16/2012 08:46 PM, Steve French wrote: > Why the ' (apostrophes) around the arguments to -o ? > > What version of mount.cifs ("/sbin/mount.cifs -V" will display it) are > you using? > > On Tue, Oct 16, 2012 at 12:03 PM, Federico Sauter > > wrote: > > Greetings, > > > I am having an issue mounting CIFS shares since we upgraded our > Linux kernel from 2.6.27 to 3.4.10. Each time I try to mount a share > drive I get an "Invalid argument" error message even though I am > using the same command line that had previously worked, e.g.: > > mount -t cifs //172.16.1.10/allusers > /mnt/TEST -o 'ro,user=cifs,password=secret > > I went ahead and checked the source code, and found out that the > following condition did not evaluate to true: > > fs/cifs/connect.c:2130 > if (volume_info->UNCip && volume_info->UNC) > { > rc = cifs_fill_sockaddr((struct sockaddr *)&addr, > volume_info->UNCip, > strlen(volume_info->UNCip), > volume_info->port); > > Thus I obtained a kernel message "Connecting to DFS root not > implemented yet." So I am now explicitly specifying the UNC as an > option, as well as the device name: > > mount -t cifs //172.16.1.10/allusers > /mnt/TEST -o 'ro,user=cifs,password=secret,__unc=\\172.16.1.10\allusers' > > Question #1: Why do I have to explicitly provide the UNC now? > > It almost seem like a bug to me, given that the devname parameter to > the cifs_parse_mount_options function already contains this > information. The newest sources for the 3.7-rc1 kernel seem to have > no changes in this regard (even though I just took a *quick* look at > those sources.) > > If this is a bug I would be glad to provide a patch to fix it. > > The second observation that I made concerned specifying the UNC as > an option and passing in slashes as separators instead of backslashes: > > mount -t cifs //172.16.1.10/allusers > /mnt/TEST -o > 'ro,user=cifs,password=secret,__unc=//172.16.1.10/allusers > ' > > This also results in an invalid argument error, as the parser does > not convert all slashes into backslashes (for the unc option, as the > devname parameter is already converted!), and thus extract_hostname > is not able to function properly. > > Question #2: Should this be considered a bug? > > If that is the case, I would like to suggest the attached bugfix. > > Please let me know what you think and thank you in advance for your > kind support! > > > Best regards, > > > -- > Federico Sauter / Senior firmware programmer > Innominate Security Technologies AG / protecting industrial networks > tel: +49.30.921028-210 / fax: > +49.30.921028-020 > Rudower Chaussee 13 / D-12489 Berlin / http://www.innominate.com/ > > Register Court: AG Charlottenburg, HR B 81603 > Management Board: Dirk Seewald > Chairman of the Supervisory Board: Christoph Leifer > > > > > -- > Thanks, > > Steve