what happens when we copy our data with symlinks over to the filer and then convert to cifs? run for the hills?
You could run into some problems. With NFS, the client follows the symlink. This means that a symlink in one volume can refer to an object in another volume. So long as both volumes are mounted on the NFS client, the client can follow the link. Symbolic links can even cross filers. A symbolic link on one filer can refer to an object on another filer. If the NFS client has both volumes mounted, it can follow the link. For example, suppose you have this:
filer1:/vol/vol0/qtree1 mounted on /web
filer2:/vol/vol2/qtree2 mounted on /research
The NFS client can follow this symlink just fine:
/research/project1/webpage -> /web/doc/project1
CIFS has no concept of symlinks. To use them at all you need these options.
options cifs.symlinks.enable on (necessary) options cifs.symlinks.cycleguard on (recommended)
Then the filer will attempt to follow symlinks on behalf of CIFS clients. The filer is rather picky about which symlinks it will follow. First of all, the filer will not follow an "absolute path" symlink unless you have a symlink.translations file. An absolute path starts with / like this:
link -> /dir1/dir2/whatever
Absolute path symlinks are ignored unless you have a symlink.translations file.
The symlink.translations file does not apply to relative path symlinks such as these:
file1 -> file2
link1 -> dir/whatever
link2 -> ../dir/whatever
The filer will attempt to follow these.
The filer will not follow a symlink on behalf of a CIFS client if the symlink and the object it refers to are not in the same share. It does not matter if the symlink is relative or absolute. It must refer to an object in the same share as the symlink itself. By "same share" I mean the share that the CIFS client has attached to. If a user attaches to his private share using the cifs.home_dir option, then only his home directory is in this share. Any symlink under his home directory that refers to an object outside his home directory will not work. He needs to attach to a share that encompasses both his home directory and the object the symlink refers to, which may not be possible.
It may be very difficult to get symlinks that work with NFS to work with CIFS. A filer will not follow a symlink across volumes and a filer most certainly cannot follow a symlink to another filer! You might need to look into using Windows "short cuts".
To get symlinks to work with CIFS,
1) be sure each symlink refers to an object in the same share as the symlink itself.
2) use relative paths in the symlinks as much as possible.
3) If you must use an absolute path, then you must have a symlink.translations file.
These rules only apply when a filer is following a symlink on behalf of a CIFS client.
When a filer configuration parameter refers to a symlink, the filer always follows the symlink, does not use the symlink.translations file, and the symlink must "make sense" to the filer.
Steve Losen scl@virginia.edu phone: 434-924-0640
University of Virginia ITC Unix Support