[LWN Logo]

Date:	Fri, 31 Mar 2000 12:32:47 -0700
From:	"Jeff V. Merkey" <jmerkey@timpanogas.com>
To:	linux-kernel@vger.rutgers.edu
Subject: NWFS 2.2.2 Source Code for Linux Kernels 2.0/2.2/2.4 Released



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/