[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: [PATCH] mount, cifs bug in 1.20.2 Kernel > 3.3.7
From:       Eric Martin <eric.martin () gmx ! net>
Date:       2012-11-13 16:28:51
Message-ID: 50A27543.3010200 () gmx ! net
[Download RAW message or body]

On 12/11/2012 15:56, Martin Santesson wrote:
> On 10/30/2012 03:53 PM, Martin Santesson wrote:
>> On Fri, 26 Oct 2012, Nuno Lucas wrote:
>>
>>> Hello,
>>>
>>> On Wed, Oct 24, 2012 at 10:27 AM,<bbj17@gmx.de>  wrote:
>>>> Hi,
>>>>
>>>> I have the following problem:
>>>>
>>>> -Busybox 1.20.2 (Buildroot 2012.08)
>>>> -Target Kernel: 3.4.7
>>>>
>>>> on Target:
>>>> mount -t cifs //server/share /destination -o username=xxx,password=xxx
>>>>
>>>> result (terminal):
>>>> mount: mounting //server/share /destination  failed: Invalid argument
>>>>
>>>> result(dmesg):
>>>> CIFS VFS: Connecting to DFS root not implemented yet
>>>>
>>>> when i use kernel 3.3.7 everything is fine. Same problem with 
>>>> kernel 3.4.15 and 3.6.3.
>>>>
>>>> When I use buildroot cifs-utils (mount.cifs) instead of busybox 
>>>> "mount" everything is fine.
>>> I got this problem some time ago, too.
>>>
>>> Someone in kernel land decided that the option "unc=\\machine\share"
>>> is now mandatory since 3.4.
>>> It seems to ignore the Unix-style share passed as parameter and only
>>> care about the "unc" option (which must have the windows style '\\'s).
>>>
>>> I didn't thought much about it (it's a regression in the kernel, but
>>> it's too late in the game now), and that's how I worked around it.
>>>
>>>
>>> Regards,
>>> ~Nuno Lucas
>>>
>> Hi,
>>
>> I also ran into this problem. I wrote a patch which supplies the unc
>> option the kernel. Tested with Linux kernel 2.6.35, 3.2 (prior to
>> mandatory unc option) and 3.4. Please have a look at my patch and let me
>> know if it needs to be revised.
>>
>> Regards,
>>
>> Martin
>>
>> > From fa16a76caebf1dfda1db81f0885e101624ac1462 Mon Sep 17 00:00:00 2001
>> From: Martin Santesson<martinsn@axis.com>
>> Date: Fri, 26 Oct 2012 09:40:04 +0200
>> Subject: [PATCH] mount: add unc option to CIFS mount (needed for 
>> Linux 3.4+)
>>
>> unc option for CIFS mount is mandatory after CIFS option parsing
>> was rewritten in Linux 3.4
>>
>> Signed-off-by: Martin Santesson<martinsn@axis.com>
>> ---
>>    busybox/util-linux/mount.c |   11 ++++++++++-
>>    1 files changed, 10 insertions(+), 1 deletions(-)
>>
>> diff --git a/busybox/util-linux/mount.c b/busybox/util-linux/mount.c
>> index 0f213bb..d990ebc 100644
>> --- a/busybox/util-linux/mount.c
>> +++ b/busybox/util-linux/mount.c
>> @@ -1638,7 +1638,7 @@ static int singlemount(struct mntent *mp, int 
>> ignore_busy)
>>            int len;
>>            char c;
>>            len_and_sockaddr *lsa;
>> -        char *hostname, *dotted, *ip;
>> +        char *hostname, *dotted, *ip, *share, *unc;
>>
>>            hostname = mp->mnt_fsname + 2;
>>            len = strcspn(hostname, "/\\");
>> @@ -1646,6 +1646,15 @@ static int singlemount(struct mntent *mp, int 
>> ignore_busy)
>>                goto report_error;
>>            c = hostname[len];
>>            hostname[len] = '\0';
>> +
>> +        share = hostname + len + 1;
>> +        if (share[0] == '\0')
>> +            goto report_error;
>> +        // Insert "unc=\\hostname\share" option into options
>> +        unc = xasprintf("unc=\\\\%s\\%s", hostname, share);
>> +        parse_mount_options(unc,&filteropts);
>> +        if (ENABLE_FEATURE_CLEAN_UP) free(unc);
>> +
>>            lsa = host2sockaddr(hostname, 0);
>>            hostname[len] = c;
>>            if (!lsa)
>
> Any other feedback on this patch?
>
> Regards,
>
> Martin
> _______________________________________________
> busybox mailing list
> busybox@busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
>

No problem for me. It works like a charm. Many thanks!

Busybox 1.20.2 and vanilla Linux 3.6.6 (LFS) on i686

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic