OpenSolaris

  subsites   code review   repo   packages   bugs   defect   polls   planet

CIFS Client Release Notes

These release notes document the Beta2 code drop of the CIFS client module (SMBFS). The purpose of this document is to give you information about this distribution, its capabilities, and any known limitations and bugs. The release notes also provide instructions on installing and uninstalling the CIFS client module, information about accessing the CIFS client source files, reporting bugs, and making contributions to the code.

This document covers the following topics:

Installing and Uninstalling the CIFS Client Packages
Accessing the CIFS Client Source Files
Known Limitations
Known Bugs
Reporting Bugs
Making Code Contributions

The Beta2 version of the CIFS client module is a Solaris Virtual File System (VFS) that permits the Solaris OS to look up, read, and write files on a Windows server or on a system that runs Samba. Such systems use the SMB/CIFS distributed file system protocol.

You can use the CIFS client module to view available shares on a server and mount the shares on your system. You can create, delete, and write files on the mounted CIFS share.

The Beta2 version of the CIFS client module can also use the existing Kerberos client mechanism setup to authenticate users with an CIFS server.

An updated version of automound is delivered as part of the Beta2 code drop, so be sure to install the new version when prompted to do so during installation.

  • To view the available shares, use the smbutil view command:

    % smbutil view //joe@nano
    Password:
    Share        Type       Comment
    ---------------------------------------
    netlogon     disk       Network Logon Service
    ipc$         IPC       IPC Service (Samba Server)
    tmp          disk       Temporary file space
    public       disk       Public Stuff
    root         disk       Home Directories

    5 shares listed from 5 available
  • You many now mount and unmount a share on a directory you have write permission to as yourself. As usual, superuser can mount anywhere.

    $ mount -F smbfs //joe@nano/tmp /home/joe_nano
    Password:
    $ ls /home/joe_nano
  • There is a service for the client, svc:/network/smb/client which can now be disabled to disallow smbfs mounts (though smbutil will be permitted).

  • New keywords are added to .nsmbrc to permit sane defaults for user and domain settings:

    $ cat $HOME/.nsmbrc
    # Use this windows account everywhere
    [default]
    domain=MYDOMAIN
    user=MYNAME
    $ mount -F smbfs //server/share /mnt
  • Persistent settings storage shared by all users is possible with sharectl:

    $ sharectl get smb
    [default]
    domain=SALES
    $ sharectl set -p section=default -p domain=NEWDOMAIN
  • smbutil has new login, logout, and logoutall subcommands to manage an in-kernel password store:

    $ smbutil login joe@nano
    Password for NANO/JOE:
    $ smbutil view joe@nano
    ...
    $ smbutil logout joe@nano
    $ smbutil logout -a // wipe all of my passwords
    # smbutil logoutall // wipe all stored passwords
  • There are mdb dcmds to walk key data structures in nsmb and smbfs:

    $ mdb -k
    > ::smbfs_vfs
    > ::smbnode
    > ::nsmb_vc
  • Users should notice better interoperability than with Beta1, and better speed and stability than the Alpha releases.

This Beta2 release includes the following Solaris packages:

SUNWsmbfskr - nsmb and smbfs kernel modules
SUNWsmbfsr - SMF support
SUNWsmbfsu - smbutil and mount binaries and libsmbfs.so library

These packages are based on and have been tested with the OS/Net (ON) Nevada Build 75. The binaries in these packages are expected to run without issues starting with Build 64.

The CIFS client team values your feedback and thanks you for using this Beta2 release of the CIFS client software! If you encounter problems or issues that are not mentioned in the Known Limitations and Known Bugs sections, see the Reporting Bugs section.

Installing and Uninstalling the CIFS Client Packages

The installable Solaris packages are in two tar files.

The smbfs-beta2-bins-20071130.sparc.tar file has the following directory structure:

packages/
packages/sparc
packages/sparc/nightly
packages/sparc/nightly/SUNWsmbfskr
packages/sparc/nightly/SUNWsmbfsr
packages/sparc/nightly/SUNWsmbfsu

The smbfs-beta2-bins-20071130.i386.tar file has the following directory structure:

packages/
packages/i386
packages/i386/nightly
packages/i386/nightly/SUNWsmbfskr
packages/i386/nightly/SUNWsmbfsr
packages/i386/nightly/SUNWsmbfsu

NOTE: An updated version of automound is delivered as part of the Beta2 code drop, so be sure to install the new version when prompted to do so during installation.

If you uninstall the Beta2 packages, the original automountd is restored.

You can install and uninstall the CIFS client packages by using the Solaris packaging tools:

  • To install the packages, type the following:

    # pkgadd -d path-to-dir SUNWsmbfskr SUNWsmbfsr SUNWsmbfsu

    path-to-dir is the full path of the directory in which the packages are stored on your system.

  • To uninstall the packages, type the following:

    # pkgrm SUNWsmbfsu SUNWsmbfsr SUNWsmbfskr

Accessing the CIFS Client Source Files

This Beta2 release also includes a tar file that contains the CIFS client sources.

Download the smbfs-beta2-src-20071130.tar file to your system and release the files from the tar archive with the following command:

# tar xvf smbfs-beta2-src-20071130.tar

If you want to build the sources, you must have a working OpenSolaris source workspace set up and building.

Building the CIFS client packages now requires you to have the closed bins in place. There are more steps with the Beta2 because of greater integration with the Solaris OS. To build, do the following:

% ws path-to-workspace
% tar xvf path-to/smbfs-beta2-src-20071130.tar
% ( cd $SRC/uts && dmake -k all_h install_h )
% ( cd $SRC/lib/libc ; dmake install_h )
% ( cd $SRC/lib/libc ; dmake install )
% ( cd $SRC/lib/libuutil ; dmake install )
% ( cd $SRC/lib/libavl ; dmake install )
% ( cd $SRC/lib/libzfs ; dmake install )
% $SRC/quickbuild

The following list shows the source locations for each of the CIFS client modules:

  • smbutil - $SRC/cmd/fs.d/smbclnt/smbutil
  • mount - $SRC/cmd/fs.d/smbclnt/mount
  • umount - $SRC/cmd/fs.d/smbclnt/umount
  • automountd - $SRC/cmd/fs.d/autofs/automountd
  • libsmbfs.so - $SRC/lib/libsmbfs
  • nsmb driver - $SRC/uts/common/fs/smbclnt/netsmb
  • smbfs module - $SRC/uts/common/fs/smbclnt/smbfs
  • libshare_smb.so sharectl plugin - $SRC/lib/libshare/smb
  • SMF manifest and method script - $SRC/cmd/fs.d/smbclnt/svc

Known Limitations

  • Solaris binaries or those that used shared libraries cannot be executed on mounted CIFS shares.

  • The CIFS client does not currently parse CIFS ACLs. As a result, the CIFS client cannot display accurate file ownership information or support getfacl/setfacl.

  • The commonly used SMB protocol dialects do not support hard links (link(2)), symbolic links (symlink(2)), or device nodes (mknod(2)).

  • The CIFS client does not support byte-range locking via the fcntl(2) system call over the wire. This means that locks acquired by a process on a client are only visible to other processes on that client.

Known Bugs

Following is the list of open bugs in the Beta2 CIFS client:

Bug ID Synopsis
6543838 can't get the correct file size when the file size is changing
6584371 File browser window freezes when checking properties.
6597391 Client prints too many notices
6607037 tar command get in infinite loop
6607513 mount get "device busy" after dbench and rm testing
6612198 Ungraceful shutdown of local zone fails due to a dangling reference
6624072 if the server is shutdown, the smbutil timeout is too long
6625078 Authentication to Sun CIFS server fails
6628330 after run smbutil login cifs_user, the smbutil cifs_user@floats failed.
6628891 Failed to mount from StorageTek NAS if using "Password Protection"
6632032 "Permission denied" error when mounting StorageTek on domain machine
6633126 repeat run smbutil view and smb mount get "Not enough space" error
6633145 Failed to view other domain machine after adding it into domain (X86)
6633161 There is "core dumped" error when mount successfully on domain machine.
6633170 "pfexec: can't add cwd path" error when umounting after a delay
6633213 TX cifs mount is read only on samba server when the labels are equal
6633671 bonnie try to create 3000M file on the smbfs get errors(i386 only)
6635823 Creation of 3G file on smbfs fails with disconnection error

Reporting Bugs

For each problem you encounter, send the following information to help the team determine the root cause of the problem:

  1. Describe the problem and describe what you were doing when you encountered the problem.

    NOTE: Give as much information as you can to enable the team to reproduce the problem.

  2. Describe your configuration.

    For example, x data servers running on x machines.

  3. Describe the bits you have installed.

    For example, run the following command on all machines:

    % cat /etc/motd
  4. If the problem is a panic, include the stack trace and access to the core file.

  5. If possible, a snoop or ethereal trace would be helpful in many cases, especially with issues unique to a particular server.

    For example, run this command:

    # snoop -o /tmp/bug1.snoop client-name server-name
  6. Send the information in an email message to the smbfs dash discuss at opensolaris dot org alias.

The CIFS client team will not provide patches or fixes to this distribution. However, any new bugs and issues will be logged into our tracking tool. These issues will be evaluated for inclusion in future releases.

Making Code Contributions

If you would like to contribute to this project, contact the CIFS client team at the smbfs dash discuss at opensolaris dot org alias.

The acceptance or rejection of code from a community member will follow this existing OpenSolaris process:

  1. An internal CIFS client project sponsor (sponsor) is assigned to an external contributor (contributor).

  2. The sponsor reviews the changes from the contributor and determines whether to accept or reject them.

    • If the changes are accepted, the sponsor integrates the changes from the contributor into the CIFS client project gate.

    • If the changes are rejected, the sponsor notifies the contributor that the changes have been rejected.