I've migrated my zfs pool back into Solaris 11. I'd been happily sharing files on linux with ZFS-fuse and samba before, and FreeBSD 8.1 using samba before that.
I have some data sets within data sets in ZFS something like the following:
tank/home/share/
tank/home/share/Photos
tank/home/share/Music
because Photos and Music needed different properties than the base share. Now using
zfs set sharesmb=name=Share tank/home/share
will share the base files in tank/home/share
just fine, but it won't allow clients to view Photos
or Music
. This is a HUGE problem. I can't seem to get it working with sharemgr either. Is this some horrible oversight by SnOracle? Is there anything I can do to have my datasets shared under Share? I don't want to have Share_Photos and Share_Music on my clients.
Should I just go back to using samba on Solaris 11? It seems terribly redundant to have two systems installed.
Solaris kernel mode smb sharing can't share child mounts. If you need to only one mount per client you'll have to use Samba or put everything in one filesystem. IIRC, it's because you can potentially have drastically different filesystems in nested mount points (different pool, case-sensitivity, UTF-8, locking, etc). There's been an RFE open since 2007 (RFE 6582165) but I wouldn't hold your breath on that one.
Although I haven't done it myself, you could probably do it with a DFS root where each directory in root share can redirect to another CIFS share potentially even on a different server, while individual clients are blissfully unaware and browse through a single mountpoint. IFAIK though this only works perfectly under Windows, requires Active Directory and OSX clients will need something like Thursby ADmitMac.