NOVELL TECHNICAL INFORMATION DOCUMENT TITLE: Post SP3 NSS modules for NetWare 6.0 TID #: 2966856 README FOR: nw6nss3c.exe SUPERSEDES: nw6nss3b.exe NOVELL PRODUCTS and VERSIONS: NetWare 6 ABSTRACT: Post Support Pack 3 NSS modules for NetWare 6.0 This file contains post NetWare 6.0 Support Pack 3 beta code for NSS modules and an updated connmgr.nlm. This set of modules can be run on a NetWare 6.0 Support Pack 2 server or a NetWare 6.0 Support Pack 3 server. The connmgr.nlm is included in this NSS patch kit because it has a fix necessary for the opportunistic locking fixes included in this NSS patch. If this server is running on a SAN where multiple servers have access to the same volumes, and Novell Cluster Services is not installed, there is code in this release of NSS to try and prevent multiple mounts of the same NSS pool. This code will put a 30 second delay in between pool activations of the same pool when the pool is moved to a different server. To disable this new code, place "/nomsapserver" in the nssstart.cfg file that is in the c:\nwserver directory. September 30, 2003: Rebuilt for public release. No files were changed. ----------------------------------------------------------------- DISCLAIMER THE ORIGIN OF THIS INFORMATION MAY BE INTERNAL OR EXTERNAL TO NOVELL. NOVELL MAKES ALL REASONABLE EFFORTS TO VERIFY THIS INFORMATION. HOWEVER, THE INFORMATION PROVIDED IN THIS DOCUMENT IS FOR YOUR INFORMATION ONLY. NOVELL MAKES NO EXPLICIT OR IMPLIED CLAIMS TO THE VALIDITY OF THIS INFORMATION. ----------------------------------------------------------------- INSTALLATION INSTRUCTIONS: This set of NLMs can only be installed on a NetWare 6.0 server running Support Pack 2 or Support Pack 3. 1) Extract this NW6NSS3C.EXE at the root of the SYS: volume, or in a sub-directory of your choice. It will automatically create a subdirectory upon extraction to hold the files included. 2) At the server console load NWCONFIG. 3) Select "Product Options" 4) Select "Install a Product not listed". 5) If "Previously Specified Paths" screen appears, Press 6) Select to specify a different path. 7) Enter the path to directory where nss.ips exists. (SYS:\NW6NSS3C, or the path to the sub-directory where the patch was extracted. 8) Select to install. 9) Because oplocks have been turned off in SP3 and because previous NSS patches have turned them off, this installation will give the user an option to turn level I and II opportunistic locking on or off. If the server is NW6SP2, then only Level I will be offered because the file system in SP2 did not, as of yet, support Level 2 oplocks. 10) After the installation is completed, the server must be restarted. A "RESTART SERVER" or "RESET SERVER" can be issued from the console command prompt to cycle the operating system and activate these newer NSS NLMs. ISSUE: Current known issues that development is working on with this set of modules (as of Aug 28, 2003): 1. Byte range locking on some servers causes higher than normal utilization. Servers experiencing this issue have a SQL database accessing the NSS volume(s). This issue is being worked on currently at Novell. The reason for the short cycle in between the 3B patch and this patch (3C), is due to the fact that opportunistic locking issues have been fixed in this release. The method for reproducing the opportunistic locking issue: 1. NetWare 6.0 SP2 or SP3 with opportunistic locking enabled. 2. Server virus scanner loaded and running set to scan all files on creation. 3. Create a spreadsheet file with data in it (Microsoft Excel was used in our tests). Save it to the server. 4. Open the spreadsheet from the server and modify it. Save it to the server again. 5. With this oplock problem, we saw save times in between 30 and 90 seconds. 6. After updating the server with this new code, the save times were almost immediate. On a Support Pack 2 server, after applying this patch, there will be a red message that flashes on the console screen when NSS initially loads during stage 1 of the server's boot sequence that will say: Error getting value of Set Parameter: Level 2 Oplocks Enabled. In NetWare 6.0 Support Pack 3, there is a server side set parameter to either enable or disable Level 2 oplocks (set level 2 oplocks enabled = on/off). NSS is checking for the existance of this set parameter and is complaining because Support Pack 2 does not have this functionality yet. If found, NSS will honor the setting of this set parameter and either enable or disable Level 2 oplocks occording to the setting found. At present this error message is cosmetic. NSS will either enable or disable all oplock requests (level 1 only) under the set parameter (client file caching enabled). Level 2 oplocks are disabled by default in NSS until the server-side set parameter is available (NetWare 6.0 Support Pack 3). Fixes to NSS prior to NW6NSS3A.EXE, are kept in the history.log file. Fixes applied to the NSS modules for NW6NSS3a.exe: 1. Modified background compression so that it compresses files with the IC bit set if the file doesn't get compressed previously. 2. Fixed a problem when pkzip is used on a Windows95 or Windows98 workstation where groups of zeros were getting inserted in the zipped file incorrectly. 3. Fixed a problem where files were left stranded in the salvage system. This happened when a directory was deleted with files and the directory was flagged immediate purge. 4. Fixed rebuild to handle sparce extent entries in the filemap when we are freeing the filemaps of x-linked files that have been deleted. 5. Enhanced code to allow a throttling of I/O if there is sustained heavy I/O. This prevents the server from "hitting a wall". 6. Fixed a number of issues with opportunistic locking. 7. Fixed a latching issue in the add ACL code. 8. Fixed an abend when opening a file by the ZID number where a variable was uninitialized. 9. Fixed an abend related to the NFS API code where an invalid pointer was dereferenced. 10. Fixed rename so that trustees are not removed when a file is moved to a new directory. 11. Fixed a memory leak error attributed to NWPA / MM but was actually caused by ZLSS.NSS. The problem happened when NetWare 5.1 partitions were upgraded with no volume segments. 12. Made enhancements to the NSS code to better support rolling upgrades for customers running Novell Cluster Services. 13. Fixed an abend in NSS caused by a buffer overflow. 14. Split the compression waiting queue into two: 1) Requests initiated by normal file operations, 2) Requests initiated by background compression. 15. Added a new command line parameter, "nss /StopNormalCompression". This command stops all normal compression and cleans up the associated queue. 16. Fixed a problem in the background compression code where is wansn't cleaning up completely if there was a remove compression request issued by ZID. 17. Fixed the directory quota computation amount to include space allocated by search maps. 18. Fixed problem of the volumeID getting set to zeros. This caused problems with certain programs like NDPS needing the volID to work on. 19. The migration attribute for the volume wasn't being returned correctly in API calls. This is now fixed. 20. Fixed latching issue that caused a deadlock. The problem was analyzed as a split brain abend on clustering, when in fact NSS was holding the processes and caused this problem. 21. When the server's UTC time is adjusted, the compression start/stop timer are now adjusted. 22. Found and fixed another problem where the volume ID was being set to zero incorrectly. 23. Modified rebuild to error out if it cannot load a logical volume. 24. Fixed an abend where a cache index for a specific pool was corrupted. 25. Switched unicode to ascii conversion back to use the non-path version of the NWUX APIs for building the tables. This solves the problem of certain characters in certain code pages improperly mapping to a "\". 26. Added an API for the NFS code to allow the invalidation of all of the entries in the cache for a particular directory. 27. Added checks for connections being logged in. This fixes a timing window where a connection has properly authenticated, but hasn't been granted a license yet. 28. Fixed rebuild to not delete the beast when it is receiving out of memory errors. Now it just fails with an error message. 29. Added a new event for the compression code to watch for the changing of a time zone setting. This is needed to know when to start up the background compression correctly. 30. Changed the compression code so that the compression meta-data is now transactional. 31. Made changes to rebuild so that it does a better job of logging file names. 32. Fixed the rename code to not allow the moving of a beast to a different directory if the flag to prevent this is set. 33. Fixed the API for renaming to work (GenNSRenameMove). 34. Fixed NSS startup command to disable MSAP to work (/nomsapserver). (3856) Fixes applied to the NSS modules for NW6NSS3b.exe: 1. Made compression fixes for SMS (backup) group: a. Skip a compression related check in the file open/close call if the file is a directory. b. Don't compress a file after it is closed if the open request included a compress flag, but the file was not compressed previously. 2. Fixed DOS namespace parsing with unicode originated name to allow for unicde characters that translate to 8-BIT in ASCII. 3. Fixed a problem in the unix namespace where if a file is created in the DOS namespace and then renamed in the unix namespace, the name cache entry wasn't being removed correctly. This led to "file already exists" errors when a new file is created with the same name as the old one. 4. Fixed a deadlock in compression and fixed an abend in this deadlock condition if a specific error condition occurs. 5. Fixed a problem with VCU.NLM where an update to the modifierID was made when it didn't need to be. 6. Added /purge switch to rebuild to allow purging the pool of deleted files during a rebuild operation. 7. Ported back the changes from NetWare 6.5 to NetWare 6.0 specific to NSSMU.NLM. 8. Changed the expand pool file system code to validate that we can do I/O to the blocks that MM/MAL gave us. 9. Fixed a compression corruption issue and added self-healing code in the file create/open path. This self-healing code will attempt to repair corrupt compressed files if they are found in the create/open stage of the code. 10. Updated the Jetstream code in NetWare 6.0 to reflect the changes that have been made in the NetWare 6.5 code base. 11. Fixed Key comparisons to work correctly for large time values. 12. Changed DOS name mangling (XXXXXX~1.XXX) to be more scalable. The previous algorithm to mangle a long name into a DOS name wasn't as scalable as desired for some of the customer file sets seen (single directories with large numbers of files, > 60,000, where files in the same directory have similar names in the first 5 or so characters). 13. Fixed a problem with management level cache so that it invalidates when connections change. 14. Fixed a problem where unix time stamp changes weren't updating the NetWare side of NSS volumes. 15. Fixed an error path in compression code to handle a failure correctly now. 16. Fixed an error path in the add trustee code section. 17. Fixed the "<<< BAD MESSAGE >>>" problem. This message trying to be printed usually reprsented an opportunistic locking message. However, because the proper message file wasn't included, the operating system printed BAD MESSAGE instead. 18. Added the ability to disable directory/user quota checking (/noquotachecking) from the command line prompt. 19. Fixed a problem with the _ADMIN volume when the execution of a command caused access to one of the parent directories of the file processing the command ... this resulted in a deadlock. 20. Fixed a hang condition where a spinlock was released properly. (3883) Fixes applied to the NSS modules for NW6NSS3c.exe (new for this patch kit): 1. Fixed a latching issue found by a 3rd party developer dealing with the screen latch not being released. 2. Added code to prevent Jetstream from creating messages larger than 32 MB. 3. Direct I/O had a case in open where blocks get tossed. Because metadata blocks can be dirty, they shouldn't be tossed. 4. Modified a specific NCP return buffer size from 8 bits to 16 bits to match the traditional file system. This now makes it possible with a common API to detect the transactional bit setting. 5. Fixed problems with clients and opportunistic locking issues. 6. Made a fix in the compression code not to compress sparse files (this also means that a decompression of sparse files should never happen). 7. Fixed a multi-processor race condition in the jetstream code. 8. Made adjustments and fixes to the NSSMU.NLM module. (3893) Fixes for the included connmgr.nlm (both SP2 and SP3 versions): 1. Fixed a logic problem involving the connection type that caused a return of zero during a check on the connection state when it should not have. Self-Extracting File Name: nw6nss3c.exe Files Included Size Date Time ..\ NW6NSS3C.TXT (This file) ..\NW6NSS3C\ HISTORY.LOG 15337 7-29-2003 2:06:19 pm NSS.IPS 12353 9-2-2003 1:28:29 pm ..\NW6NSS3C\CONNMGR\ ..\NW6NSS3C\CONNMGR\SP2\ CONNMGR.NLM 58574 9-2-2003 9:24:58 am ..\NW6NSS3C\CONNMGR\SP3\ CONNMGR.NLM 58859 8-18-2003 11:25:32 am ..\NW6NSS3C\STARTUP\ CD9660.NSS 23213 8-26-2003 11:49:14 am CDHFS.NSS 25390 8-26-2003 11:50:14 am CHECKVIS.NLM 6701 8-26-2003 12:10:26 pm COMN.NSS 453871 8-26-2003 11:33:12 am COMPFIX.NLM 12227 8-26-2003 12:09:26 pm DMPTRUST.NLM 4294 8-26-2003 12:09:56 pm DOSFAT.NSS 36042 8-26-2003 11:52:26 am LIBNSS.NLM 12465 8-26-2003 11:12:08 am MAL.NSS 11423 8-26-2003 11:46:52 am MALHLP.NLM 14343 8-26-2003 11:47:16 am MALHLP9.NLM 5181 8-26-2003 11:47:42 am MANAGE.NSS 67647 8-26-2003 11:35:00 am NSS.NLM 129676 8-26-2003 11:14:04 am NSSIDK.NSS 9116 8-26-2003 11:48:16 am NSSMU.NLM 100255 8-26-2003 11:58:18 am NSSWIN.NLM 14895 8-26-2003 11:21:06 am NWSA.NSS 167305 8-26-2003 11:20:36 am SCAN.NLM 21673 8-26-2003 12:08:08 pm UDF.NSS 31706 8-26-2003 11:51:14 am VOLMN.NSS 15161 8-26-2003 12:02:30 pm ZLSS.NSS 425237 8-26-2003 11:46:10 am ..\NW6NSS3C\SYSTEM\ DFSLIB.NLM 2612 8-26-2003 12:06:46 pm JSMSG.NLM 18755 8-26-2003 12:04:48 pm JSTCP.NLM 15389 8-26-2003 12:06:00 pm VCU.NLM 18829 8-26-2003 12:07:26 pm VDQAD.NLM 17523 8-26-2003 12:00:26 pm VLDB.NLM 10621 8-26-2003 11:58:56 am VLMSG.NLM 19587 8-26-2003 11:59:40 am VLRPC.NLM 8458 8-26-2003 12:01:06 pm VLRPR.NLM 15161 8-26-2003 12:01:48 pm VMRPC.NLM 6294 8-26-2003 12:03:08 pm ----------------------------------------------------------------- Any trademarks referenced in this document are the property of their respective owners. Consult your product manuals for complete trademark information. -----------------------------------------------------------------