The arguments to mount.cifs get screwed up a routine that
tries to deal with LABEL= or UUID= specifications of the mount device.
The result of that routine (normally a unix path to a device) is 'canonicalized' before being returned. In this process, a UNC specification as //host/share will be converted to /host/share
which some time later causes mount.cifs to choke.

The attached hack avoids the assignment of the modified path name (in mount.c) to the original one if the filesystem type is known to be cifs. I don't claim that I understand completely the philosophy of the processing, and I feel that things are wrong on a more fundamental level so I don't consider this a real problem solution. Maybe it's a hint though.

679d678
< 
1402c1401,1408
< 	if (nspec)
---
> 	/* last action of fsprobe_... is to return a 'canonicalized' path,
> 	   which however, in the case of cifs/UNC means that a leading // is 
> 	   substituted by a single /. mount.cifs will not recognize such a 
> 	   garbled UNC name as legal.
> 	   Seems to me that fiddling with spec in this case should be left to 
> 	   mount.cifs
> 	*/
> 	if (nspec && strncmp(types,"cifs",4) ) 

Reply via email to