I am sponsoring this fast track for the CIFS client team.
This fast track proposes to update the original case,
PSARC/2005/695. The amendments are outlined below.
The complete version of the updated materials can be found
in the materials directory for the case. The timeout is
set for one week from today - Friday of next week (8/2/2008)
Darren
Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
CIFS Client on Solaris - Updates
1.2. Name of Document Author/Supplier:
Author: Gordon Ross
1.3 Date of This Document:
31 January, 2008
4. Technical Description
Since the approval of PSARC 2005/695, we have modified some
parts of our approach and design. This fast-track requests
approval of proposed updates to the commitment materials for
PSARC 2005/695.
The (proposed) updated materials are here:
http://nfs-build.sfbay/sea/projects/cifs/commitment.materials/
The updates are summarized in the file:
changes_since_commitment.txt
in the location named above, and attached to this message.
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
Here is a summary of things we changed from what was
approved at commitment of PSARC/2005/695
Here's a high-level list of what changed:
Phase 1 deliverables - two deferred items (20questions)
IPv6 non-support (incompatible with NetBIOS)
sockfs vs (k)TLI -- CIFS_Design_Doc.html
SMF service (which doc. mentions this?)
smbutil login/logout/logoutall -- man pages
sharectl "smbfs" vs "smb" -- man pages
Detailed changes:
** 20questions.txt
3. What is its plan?
- What is its current status? Has a design review been done? Are there
multiple delivery phases?
Old:
We have 'smbutil' working without the login and logout subcommands.
We have 'mount_smbfs' mounting a working read-only filesystem, but
we have no write operations, Kerberos support, or SMF support yet.
We have held a design review and have modified the design document
[3] based on feedback from it. We currently believe we will putback
to Nevada in Q3CY2007, and we may backport it to a future Solaris 10
update. We do expect to deliver further SMB/CIFS functionality and
integration in future putbacks, focusing on items mentioned in "What
we're not doing" in the requirements document [2].
New:
Design review and (phase 1) functionality are complete.
We've refined our plan for multiple delivery phases,
where "Phase 1" will deliver all of the functionality
specified in our requirements document [2] except for:
a: Compliance with the IPv6 "big rule" will not be possible
until we implement "SMB over plain TCP" (in Phase 2)
because NetBIOS only supports IPv4.
b: Automatic connect or reconnect is delayed until Phase 2.
We do expect to deliver further SMB/CIFS functionality and
integration in future putbacks, with a "Phase 2" delivery
focusing on items mentioned in "What we're not doing" in the
requirements document [2], plus the above items (a, b).
8. ... (RAS)
- How does your project deal with network failures (including
partition and re- integration)? How do you handle the failure
of hardware that your project depends on?
Old:
Lost TCP connections are automatically reconnected when possible.
Lost requests and responses cause protocol level retransmissions
per SMB/CIFS norms. This project has no dependency on hardware.
New:
This project has no dependency on hardware. Lost requests or
responses cause protocol level retransmissions per SMB/CIFS norms.
Lost connections require user intervention to unmount and remount
the resources affected. We plan to improve on this in a "phase 2"
project (RFE 6587713).
[ We wanted to do automatic reconnect in phase 1, but found that
the code we had for this was in need of significant work. ]
9. Observability
- Does the project export status, either via observable output
(e.g., netstat) or via internal data structures (kstats)?
Add:
We do provide "mdb" modules that can display all the
important data structures in the new kernel modules.
11. What is its UNIX operational environment:
- Is the project compatible with IPV6 interfaces and addresses?
Old:
We have not yet investigated this yet, but it should be possible
for us to comply with the IPv6 "big rule".
New:
The current code supports only NetBIOS-style connections, and
the NetBIOS protocol uses IPv4-specific address formats.
We will therefore NOT be able to comply with the IPV6
"big rule" in our phase 1 delivery.
We plan to implement "SMB over Plain TCP" (port 445) in a
phase 2 project, which will lift the IPv4 limitation.
13. What interfaces... import and export?
Replaced: sockfs with (k)TLI
18. Performance
- What is your project's MT model? How does it use threads internally?
How does it expect its client to use threads? If it uses callbacks,
can the called entity create a thread and recursively call back?
Old:
We should be MT-hot. The device driver handles per-zone worker threads
to parallelize I/O.
New:
The kernel code will all be MT-safe. The device driver uses a thread
for each connection (a reader), created when the connection is
established.
** CIFS_Design_Doc.html
3.3 Binary list
Our packages and lists of binaries have changed.
We now have three new packages:
SUNWsmbfskr (MDB modules)
kernel/kmdb/$ISA/nsmb
kernel/kmdb/$ISA/smbfs
SUNWsmbfsr (SMF service)
var/svc/manifest/network/smb/client.xml
lib/svc/method/smb-client
SUNWsmbfsu
usr/kernel/drv/nsmb.conf
usr/kernel/drv/$ISA/nsmb
usr/kernel/drv/$ISA/smbfs
usr/lib/fs/smbfs/mount
usr/lib/fs/smbfs/umount
usr/lib/fs/smbfs/smbutil
usr/lib/fs/smbfs/$ISA/libshare_smbfs.so (sharctl plug-in)
usr/lib/fs/smbfs/$ISA/libshare_smbfs.so.1
usr/lib/$ISA/libsmbfs.so
usr/lib/$ISA/libsmbfs.so.1
usr/lib/llib-lsmbfs
usr/lib/llib-lsmbfs.ln
usr/lib/mdb/kvm/$ISA/nsmb.so
usr/lib/mdb/kvm/$ISA/smbfs.so
usr/bin/smbutil (symlink to usr/lib/fs/smbfs/smbutil)
We also plan to update binaries these existing packages:
SUNWcsr
sbin/mount (allow use by non-root)
sbin/umount (allow use by non-root)
SUNWcsu
usr/lib/autofs/automountd
usr/lib/fs/nfs/libshare_nfs.so.1
usr/lib/libshare.so.1
usr/sbin/sharectl
SUNWzoneu (add zone config for /dev/nsmb)
usr/lib/brand/native/platform.xml
4.2 Imported interfaces
Remove "sockfs calls" (4th row) and replace with:
Kernel TLI (kTLI - t_kopen, t_kbind, t_kconnect, ...)
During our porting efforts, we learned that the Darwin code
depends on the ability to build separate message chains and
concatenate them later. This is used for things like building
the "parameters" and "data" sections of an RAP request.
Similarly, the Darwin code parses some messages by making
(reference) duplicates (dupmsg) and trimming to the sections
desired (parameters, data).
We changed to (k)TLI because that interface supports sending and
receiving mblk chains. We use mblk chains to support dissection
and reassembly of messages.
5.1 Assumptions and Dependencies
"We assume that the requirements and design are changeable, ..."
This update (fast track?) is about such changes.
7.6.5 TIMEOUT support
We now implement receive timeous, using t_kspoll,
which allows us to report non-responsive servers.
8.3.3 RAP
We're not implementing any except NetShareEnum.
8.4.2 Interfaces
The vfsops, vnodeops lists updated.
8.5.2.1 ioctls
Also updated slightly.
8.5.2.2 exports to smbfs
Not really complete. Need this detail?
8.5.2.3 interface to networking code
Changed from sockfs to (k)TLI.
** Man pages
Several changes. The latest man pages are here:
http://jurassic.sfbay/~cathleen/docs/sman1m/smbclient.html