NWFS 2.2.2 Source Code for Linux Kernels 2.0/2.2/2.4 Released

From: Jeff V. Merkey (jmerkey@timpanogas.com)
Date: Fri Mar 31 2000 - 14:32:47 EST


The NWFS 2.2.2 Open Source Code has been posted, and is available for
download at www.timpanogas.com or 207.109.151.240. The files
nwfs0331.zip and nwfs0331.tar.gz contain this release. There is still
much work to do on Linux 2.4. Support for Linux Kernel's 2.0/2.2 is
nearing completion.

Jeff Merkey
CEO, TRG

NWFS 2.2.2 RELEASE NOTES
------------------------

NWFS is a work in progress. TRG will continue to develop enhancements
and new features to NWFS in the future. You are encouraged to report
bugs or requests for feature enhancements to info@timpanogas.com

This release supports Linux Kernels 2.0 and 2.2 and 2.4

BUGS

----

We are still implementing and testing the rm -r bug. This bug seems to be fixed. Another release will probably happen this weekend after we cook it some more in the lab.

There is also an implementation bug in the way we are creating our own buffer heads and performing ASYNCH IO on 2.4 Only. We have a fix for this bug. For now, NWFS for 2.4 is configured to use the Linux buffer cache until this fix is posted this weekend or Monday.

Linux Kernel 2.4 removed some exported API's necessary for NWFS to support mirroring and striping on Linux. NWFS must scan all disks in a Linux server with valid NetWare partitions in order to build a complete map of all stripped volume segments and mirror group memebers before any NetWare volumes can be mounted (you have to locate a volume's segments and mirror members). We are implementing the necessary functions in block_dev.c and will provide a patch for Linux 2.4 until these changes are submitted to the Linux Kernel folks next week. At present, we have hard coded disk 0 for testing purposes until this fix gets in. NWFS is fully functional and can perform the disk scanning under 2.0 and 2.2 but not 2.4 until we have implemented the workaround.

The VM Cache Manager Interface used by NWFS under Windows NT/2000 is almost identical in form and function to the design and implementation of the page cache in Linux. As such, we are restructuring this code and are porting it to Linux. Most of what's needed for the page_aops functions for the page cache is contained in this code. This code is currently written in Windows 2000-ease -- we are re-doing this code for Linux 2.4. This work will be completed over the weekend (I am almost finished porting it as I write this). The readpage, writepage, bmap, etc. functions are currently commented out in the 2.4 build until this code module has been ported to Linux.

The build on 2.4 is fully functional with the aforementioned restrictions. NWFS 2.2.2 builds on Linux Kernels 2.0 and 2.2 are unaffected and nearing code and feature completion.

BUILDING NWFS -------------

The globals.h file contains the following table of options:

#define WINDOWS_NT_RO 0 #define WINDOWS_NT 0 #define WINDOWS_NT_UTIL 0 #define WINDOWS_CONVERT 0 #define WINDOWS_98_UTIL 0 #define LINUX_20 0 #define LINUX_22 1 #define LINUX_24 0 #define LINUX_UTIL 0 #define DOS_UTIL 0

The LINUX_20, LINUX_22, and LINUX_24 File System driver options are the only driver versions covered under this particular release. Select either LINUX_20, LINUX_22, or LINUX_24 and set to 1 in globals.h (you can only select one at a time).

There are makefiles included for differnt kernel configurations. To make the NWFS driver for Linux, select one of the following. The makefiles support modversioned kernels and naked kernels.

make -f nwfs.mak This will make an NWFS driver SMP-no MODVER-no make -f nwfsmod.mak This will make an NWFS driver SMP-no MODVER-yes make -f nwfssmp.mak This will make an NWFS driver SMP-yes MODVER-no make -f nwmodsmp.mak This will make an NWFS driver SMP-yes MODVER-yes

TO-DO-List. -----------

The list has gotten very short, and few items remain (less platform optimization work) for closure for NWFS on Linux relative to providing all the features of the Native NetWare File System. Tuning and performance work is always on-going.

2.4 Linux kernel Only. -----------------------

1. Complete port of NWFS VM Cache Manager for Windows NT/2000 to Linux to support the page cache with NWFS sematics.

2. Fix Oops and regression test for NWFS direct I/O buffer head construction (BH_Mapped bit and allocate LRU memory via get_page(); and __free_page() API's.

3. Integrate Windows NT/2000 VM Cache Manager Interface for NWFS with the Linux Page Cache (when worlds collide).

4. Finish and submit block_dev.c patch to Linux kernel folks for disk, CDROM scanning during NWFS Init and Volume Mount.

2.0, 2.2, and 2.4 Linux Kernel Items ------------------------------------

0. Regression test "rm -r *" directory file readdir() bug with new fix suggested by Stephen Tweedie, Al Viro, and Petr Vandrovec (NCPFS method for handling POSIX readdir() compliance).

1. Implement Macintosh Data Fork Support and integrate with HFS code on 2.2 and 2.3 for the Linux Macintosh File Service.

2. Implement 255 character name support in the extended directory for NFS and LONG namespaces (current is 80 character).

3. Implement extensible parent hash skip lists for rapid positional numeric probes of the parent hash (like readdir and lookup like to do).

4. Add deleted block sequence number engine for salvageable file system (rename Command needs to support -2 deleted file directory).

5. Implement splay tree for hash buckets on name hashes instead of linked lists for better search times.

6. Implement hash in aio manager for rapid indexing during add io requests.

7. Finish Netware hard link support NetWare NFS style instead of linux style (very ackward implementation).

8. Implement cpu_to_le32(), etc. macros and test on IA64, Sparc64, and Alpha64.

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Mar 31 2000 - 21:00:30 EST