I'm submitting this fast-track for Nagakiran Rajashekar, timeout on 8/4/2008.
- Dan Template Version: @(#)onepager.txt 1.35 07/11/07 SMI Copyright 2007 Sun Microsystems Sun Proprietary/Confidential: Internal Use Only: Engineering Need-to-Know 1. Introduction 1.1. Project/Component Working Name: EOF of Cache FileSystem (cachefs) 1.2. Name of Document Author/Supplier: Nagakiran Rajashekar 1.3. Date of This Document: 07/22/08 1.3.1. Date this project was conceived: 01/22/08 1.4. Name of Major Document Customer(s)/Consumer(s): 1.4.1. The PAC or CPT you expect to review your project: Solaris PAC 1.4.2. The ARC(s) you expect to review your project: PSARC 1.4.3. The Director/VP who is "Sponsoring" this project: Chris Armes 1.4.4. The name of your business unit: Solaris RPE 1.5. Email Aliases: 1.5.1. Responsible Manager: Vidya.Sakar at SUN.COM, Lisa.M.Chatham at SUN.COM 1.5.2. Responsible Engineer: Nagakiran.Rajashekar at SUN.COM 1.5.3. Marketing Manager: Kamal.Varma at SUN.COM 1.5.4. Interest List: cachefs-eof-discuss at sun.com 2. Project Summary 2.1. Project Description: This is a proposal to EOF Cache Filesystem (cachefs). Cachefs was introduced in Solaris via PSARC case http://sac.sfbay/PSARC/1991/042/ . Cache Filesystem has been in a sustaining mode since 1999, and no new features are being entertained, mainly due to complexity and fragile nature of the product. There has been huge improvements in the area of networking and memory which has led to NFS itself as a choice of Network based Filesystem, without requiring a special disk based cache filesystem. This is an attempt to remove this out of date filesystem from Solaris code base to prevent people from deploying it in mission critical business environments. 2.2. Risks and Assumptions: While removal of the cachefs product itself doesn't pose any immediate threat to Solaris Operating Environment, third party products directly using cachefs will fail. Sun internal product AutoClient which was built on cachefs has already been EOSL'ed and the code has been removed from Solaris source base, as detailed in http://sac.sfbay/PSARC/2004/266/ . Solaris cachefs EOF Announcement process should take care of communicating these changes to Sun's Customers, ISVs, and engineering community. 3. Business Summary Cachefs has been designed with a very specific environment in mind, and the conditions which encouraged such a product have completely changed. We have networks that are in the order of Gigabits and filesystems that make effective use of system RAM for caching data today. Caching and maintaining the cache which are consistent with the actual filesystems is a huge overhead and is the cause of all complexities with cachefs today. cachefs has knowledge of the underlying filesystems and makes it less modular and difficult to support. Makes it difficult to integrate with new filesystems (like ZFS). Retaining a product that is aging fast and tough to support is an expensive business. 3.1. Problem Area: cachefs has been designed with read-only workloads in mind. Inappropriate deployments of cachefs have lead some customers to spend time and money fixing the issues that surfaced later because of scalability and complexity of cachefs design. For example : Using cachefs in an environment where the access is heavily read-write, could lead to kernel deadlocks and performance issues. Currently there are no suitable testsuites to test cachefs making it all the more diffcult to provide fixes to this aging and fragile product. 3.2. Market/Requester: 3.3. Business Justification: Cachefs has been designed at times where access to NFS servers were unacceptably slow. And NFS servers weren't scaling to allow more clients. It was designed at a time to provide faster access to then slower CD-ROM devices. One of the other capability cachefs provides is disconnected mode; the ability to have a common server providing access to key executables which could be locally cached allowing the user to work offline or when the server was down. The idea was that rather than having to maintain software on all the individual user systems, only the server had to be maintained. But this ability provide centralized software control is largely replaced by Sunray today. Further the equations have changed, you have NFS servers scaling enough to allow large number of NFS clients and caching as much of data as possible at the client side. Removing cachefs doesn't leave a gap in functionality as the existing NFS implementation already takes care of scalability and performance issues, which were intended to be addressed by cachefs. NFSv4 which is the default NFS version in Solaris 10 only provides pass-through support for cachefs. Mostly because cacheFS makes inherent assumptions about the back filesystem and the local filesystem where cache is created. CacheFS is not able to scale to the current workloads without compromising on the consistency of the data. Cachefs is not a general solution for all caching needs and is a support nightmare. 3.4. Competitive Analysis: 3.5. Opportunity Window/Exposure: 3.6. How will you know when you are done?: Project is complete once the cachefs functionality is removed from the Solaris code base. 4. Technical Description: 4.1. Details: As part of this proposal all the code pertaining to cachefs and cachefs utilities will be removed. There will be man page removals and changes where required. The applicable packages will be modified in the package cluster. NFS is a fine alternative today. cachefs initially tried to address the problem of scalability and speed which is met by NFS today without compromising on data integrity. More importantly NFS v4 which is the default version on the latest release of Solaris has only pass through support for cachefs, owing to the complexity and assumptions made by cachefs with respect to NFS v2/v3 and UFS. NFS v4 however does some aggresive caching in certain cases which allow faster access to remote data, and hence offsets the lack of support for cachefs. There were assumptions about slow CD-ROM drives made by cachefs. It is possible today to cache a lot of data at the filesystem level, or use ramdisk as an alternative. Alternatively entire DVD/CD-ROM images can be accessed from disk using lofi(7D) on Solaris. cachefs in most cases needs design changes to address simple problems. And this is not an appropriate option for a product that is in sustaining mode. Examples :- http://monaco.sfbay/detail.jsf?cr=6368798 http://monaco.sfbay/detail.jsf?cr=4952819 http://monaco.sfbay/detail.jsf?cr=6181967 4.2. Bug/RFE Number(s): The work for cachefs EOF removal will be tracked via bug: http://monaco.sfbay/detail.jsf?cr=6729252 4.3. In Scope: None. 4.4. Out of Scope: None. 4.5. Interfaces: This proposal attempts to obsolete the following external interfaces. NAME old new ========================================================================== mount_cachefs Public Obsolete fsck_cachefs Public Obsolete cfsadmin Public Obsolete cachefsstat Public Obsolete cachefspack Public Obsolete cachefslog Public Obsolete cachefsd Private Obsolete /usr/include/sys/fs/cachefs_dir.h Public Obsolete /usr/include/sys/fs/cachefs_dlog.h Public Obsolete /usr/include/sys/fs/cachefs_filegrp.h Public Obsolete /usr/include/sys/fs/cachefs_fs.h Public Obsolete /usr/include/sys/fs/cachefs_fscache.h Public Obsolete /usr/include/sys/fs/cachefs_ioctl.h Public Obsolete /usr/include/sys/fs/cachefs_log.h Public Obsolete Following type of ioctls used by the userland cachefs programs/daemons will be obsoleted by this proposal. All these interfaces are currently project private and have no external visibility and will be unavailable as part of the proposal. NAME Currently Will be ======================================================= _FIOCOD Project private Obsolete _FIOSTOPCACHE Project private Obsolete CACHEFSIO_PACK Project private Obsolete CACHEFSIO_UNPACK Project private Obsolete CACHEFSIO_PACKINFO Project private Obsolete CACHEFSIO_DCMD Project private Obsolete set of subcommands to CACHEFSIO_DCMD that will be obsoleted aswell. enum cfsdcmd_cmds { CFSDCMD_DAEMONID, CFSDCMD_STATEGET, CFSDCMD_STATESET, CFSDCMD_XWAIT, CFSDCMD_EXISTS, CFSDCMD_LOSTFOUND, CFSDCMD_GETINFO, CFSDCMD_CIDTOFID, CFSDCMD_GETATTRFID, CFSDCMD_GETATTRNAME, CFSDCMD_GETSTATS, CFSDCMD_ROOTFID, CFSDCMD_CREATE, CFSDCMD_REMOVE, CFSDCMD_LINK, CFSDCMD_RENAME, CFSDCMD_MKDIR, CFSDCMD_RMDIR, CFSDCMD_SYMLINK, CFSDCMD_SETATTR, CFSDCMD_SETSECATTR, CFSDCMD_PUSHBACK }; 4.6. Doc Impact: Following man pages will be modified. mount(1M) mnttab(4) vfstab(4) fsck(1M) automount(1M) Following man pages will be removed mount_cachefs cfsadmin cachefspack fsck_cachefs cachefsstat cachefslog cachefswsssize cachefsd 4.7. Admin/Config Impact: a. Mount command will no longer support cachefs and related options b. cfsadmin, cachefspack, cachefslog, cachefswsssize commands will cease to exist c. autofs will no longer recognize cachefs option. 4.8. HA Impact: 4.9. I18N/L10N Impact: 4.10. Packaging & Delivery: Files will be removed from the below mentioned packages. SUNWcsr /etc/init.d/cachefs.daemon SUNWcsu /usr/lib/fs/cachefs /usr/lib/fs/cachefs/cachefsd /usr/lib/fs/cachefs/cachefslog /usr/lib/fs/cachefs/cachefspack /usr/lib/fs/cachefs/cachefsstat /usr/lib/fs/cachefs/cachefswssize /usr/lib/fs/cachefs/cfsadmin /usr/lib/fs/cachefs/cfsfstype /usr/lib/fs/cachefs/cfstagchk /usr/lib/fs/cachefs/dfshares /usr/lib/fs/cachefs/fsck /usr/lib/fs/cachefs/mount /usr/lib/fs/cachefs/share /usr/lib/fs/cachefs/umount /usr/lib/fs/cachefs/unshare /usr/bin/cachefspack /usr/bin/cachefsstat /usr/sbin/cachefslog /usr/sbin/cachefswssize /usr/sbin/cfsadmin SUNWhea /usr/include/sys/fs/cachefs_dir.h /usr/include/sys/fs/cachefs_dlog.h /usr/include/sys/fs/cachefs_filegrp.h /usr/include/sys/fs/cachefs_fs.h /usr/include/sys/fs/cachefs_fscache.h /usr/include/sys/fs/cachefs_ioctl.h /usr/include/sys/fs/cachefs_log.h SUNWckr For x86/x64 /kernel/fs/amd64/cachefs /kernel/fs/cachefs For sparc /kernel/fs/sparcv9/cachefs SUNWman /usr/share/man/man1m/cachefsd.1m /usr/share/man/man1m/cachefslog.1m /usr/share/man/man1m/cachefspack.1m /usr/share/man/man1m/cachefsstat.1m /usr/share/man/man1m/cachefswssize.1m /usr/share/man/man1m/fsck_cachefs.1m /usr/share/man/man1m/mount_cachefs.1m 4.11. Security Impact: 4.12. Dependencies: 5. Reference Documents: Cachefs PSARC: http://sac.sfbay/PSARC/1991/042/ http://sac.sfbay/PSARC/1991/042/cfs_design.ps Cache-only clients http://sac.eng/PSARC/1993/287/ AutoClient http://sac.sfbay/PSARC/1999/038/ Autofs explicit support for cachefs http://sac.sfbay/PSARC/1993/206/ 6. Resources and Schedule: 6.1. Projected Availability: by 23/09/2009 6.2. Cost of Effort: 4 man months 6.3. Cost of Capital Resources: 6.4. Product Approval Committee requested information: 6.4.1. Consolidation or Component Name: ON 6.4.3. Type of CPT Review and Approval expected: FastTrack 6.4.4. Project Boundary Conditions: 6.4.5. Is this a necessary project for OEM agreements: 6.4.6. Notes: 6.4.7. Target RTI Date/Release: 6.4.8. Target Code Design Review Date: 6.4.9. Update approval addition: 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open 6.6.1. Rationale: 7. Prototype Availability: 7.1. Prototype Availability: 7.2. Prototype Cost: