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:






Reply via email to