I am sponsoring the following fast-track for Alan Wright. It introduces a new property on ZFS datasets to improve support SMB clients.
Requested binding is micro, timeout is 3/4/2009. Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI This information is Copyright 2009 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: ZFS dataset property to support SMB 1.2. Name of Document Author/Supplier: Author: Alan Wright 1.3 Date of This Document: 26 February, 2009 4. Technical Description This case proposes a new property for ZFS datasets, primarily to support Windows interoperability, based on the following RFEs. 6808472 SMB name space caching on clients Name space caching allows SMB clients to cache the directory and file layout on a server. All of the caching logistics are handled by the clients. On the server-side, the requirement is that the server does not generate short names for files on the specified file system; short names are the DOS 8.3 compatibility names that are either space padded or contain an abbreviated form of a long name with a '~'. Short names are generated by the server and only the server can decipher them thus the client may be unable to associate a short name with the original name in its cache. In SMB terms, the server must generate unique names, which requires a dataset-wide property to ensure that short names are not generated on any share of a dataset on which name space caching is permitted. 6582167 Drive letter and volume label support Windows allows volumes to be named and some Windows applications embed the volume name in files, which can cause problems after network volume migration from, say, Samba to the CIFS service. For example, the Thumbs Plus photo indexing application keeps track of non-local volumes by volume label since network drives can show up on different drive letters. After switching from Samba to the CIFS service, the volume label changed, which invalidated the Thumbs Plus application database containing all the keyword-to-image mapping information. It is desirable to provide a property to allow users to label a ZFS dataset. Server-side drive letters are required by some over-the-wire Windows backup applications. When these applications convert a share name to the absolute path on the server the path must be prefixed by a server-side drive letter. 6600891 Need to be able to enable/disable oplocks per ZFS dataset Opportunistic locks (oplocks) are used to coordinate SMB delegation, which must be consistent across a dataset to ensure file content integrity. Delegation is a mechanism for managing exclusive or shared network access to files. For example, a client that has been granted exclusive access to a file can cache the file content locally, secure in the knowledge it will be informed if another client or a server process tries to access the file, and it will be given an opportunity to sync locally cached data back to the server prior to another access being granted. The proposed property is smb. The default value will be none. The property is inherited, but individual values have different inheritance rules as described below. Non-inherited values are stripped out by libzfs before being passed to higher level software. The following values are defined: shortnames=enabled | disabled Controls whether or not short names will be generated for objects in this file system. When the value is set to disabled, the CIFS service will not generate short names and indicate to SMB clients that name space caching is allowed. Otherwise, the CIFS service will generate short names and will not indicate that name space caching is allowed. Short names will be generated by default. This is an inheritable value. label=[<drive-letter>:]name Specifies a name for this file system. The name cannot contain control characters (values 0x00 through 0x31) or any of the following characters: < > : " / \ | ? * , Optionally, the name may be prefixed by an alphabetic character (drive letter) and a colon. The drive letter may be used by clients as an alias for the volume name. The default value of the label property will be the final component of the mountpoint property, and there is no requirement for the label to be unique on the server. This is a non-inheritable value. oplocks=enabled | disabled Controls whether or not opportunistic locks (oplocks) will be granted on this file system. The default value will be enabled. This is an inheritable value. Example The following command disables short name and specifies a label for the dataset. The oplocks value is not specified and will default to enabled. The property as inherited by children will appear as simply 'shortnames=disabled'. # zfs set smb=shortnames=disabled,label=mylabel 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: ON 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open