[ANNOUNCE] NWFS 2.4.2 File System and Tools Source Code Released

From: Jeff V. Merkey (jmerkey@timpanogas.com)
Date: Tue Aug 01 2000 - 17:36:08 EST

NWFS 2.4.2 is available at This release fixes bugs
reported last week with permissions and adds implements notify_change()
to get arund the kupdate problems with write_inode(). This release is
has also been brought current with Linux 2.4.0-test5 changes.

Jeff Merkey


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 jmerkey@timpanogas.com

This release supports Linux Kernels 2.0 and 2.2 and 2.4. NWFS 2.4.2
source code can be downloaded from www.timpanogas.com or FTP at

This is an interim release that contains bug fixes. The next major
release (2.5) uses a rapid mounting scheme with a journal that allows
NetWare volumes to be mounted rapidly and demand-paged rather than
needing to read the entire volume directory and name hashes into memory.
The 2.5 version reduces memory usage to @ 1/80th of what we are using
at present. 2.5 also supports files up to 256 tera-bytes in size
depending on the OS architecture (Linux looks like 16 TB max).


This Release adds notify_change() support and corrects permissions problems
and blocksize problem bug reports and problems with permissions
getting lost by kupdate bugs. NWFS originally had only implemented
write_inode() instead of notify_change() [which the docs state
is the fall-through case for notify_change()], however, there
appears to be some holes in the VFS where permissions can get
lost if notify_change() in not instrumented.

This release of the tools code will also force partition alignment when
partitions are created under Linux with the NWFS Tools.

NetWare will always allocate the first partition on a device to start
on 0 + SectorsPerTrack, which may not be block aligned with the
defined block sizes in Linux. NWFS allows partitions that are not
block aligned to be read, but only if LOGICAL_BLOCK_SIZE is set to 512
byte blocks. This can cause conflicts with some Linux filesystems
(like EXT2) that by default use a block size of 1024.

The tools will create partitions aligned on cylinder boundries
to allow NWFS on Linux to use any Linux block size selections
between 512, 1024, 2048, and 4096. However, on NetWare partitions
created by Native NetWare, you may need to set LOGICAL_BLOCK_SIZE
in the NWFS driver to 512 if you want to read NetWare partitions
created by NetWare that may have been created on a non-block
aligned boundry using the SPT method. If you are migrating NetWare
volumes to Linux, or plan to use NWFS volumes created under Linux
on NetWare, you will want to set the TRUE_NETWARE_MODE flag in
globals.h and build NWCONFIG and the tools with this setting so
partitions will use the SPT method rather than cylinder aligning
the partitions. If this flag is set, the LOGICAL_BLOCK_SIZE will
default to 512 so the NWFS driver can read these partitions since
they may not be block-aligned the way Linux wants to see them.

NetWare supports variable length sector requests, so this concept
of hard coded block sizes is alien to NetWare.

Also, some folks reported seeing noisy messages in the /var/log/messages

modprobe--can't locate module block-major-13
modprobe--can't locate module block-major-47
modprobe--can't locate module block-major-13
modprobe--can't locate module block-major-47

NWFS has to scan all the devices reported on the gendisk_head to build
a segmentation and mirroring map of devices on the system since NetWare
volumes can be mirrored or multi-segmented and span disks, and I
have to probe for minor devices and attempt to open them all. Linux will
report on some systems that devices are present when they are not.
THe message is generated from blkdev_open when I attempt to open
one of these devices -- the messages are benign and 'noisy', so
ignore them.

This release is current with Linux 2.4 as of 2.4.0-test5. The
additional parameters to write_inode(, int wait) and changes to the
timer_list structure and dentry structures have been updated, along
with the change to support the b_private field in the buffer_head
structure rather than the b_dev_id field. We also have added
the cleanup calls for kmem_cache_destroy() for 2.4. The BUG() at line
186, filemap.c problem is not fixed as of this release if you
attempt to remove symbolic links from an NWFS volume under
Linux 2.4.0-test5


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

#define WINDOWS_NT_RO 0
#define WINDOWS_NT 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

select build environment (you can only select one at a time).

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

#define LINUX_20 0
#define LINUX_22 1
#define LINUX_24 0

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

The Linux versions are supported under the GCC Linux compiler
To make the Linux tools:

#define LINUX_UTIL 1

make -f util.mak

The DOS versions are supported under the DJ Delorie GCC MS-DOS compiler.
To make the MS-DOS tools:

#define DOS_UTIL 1

make -f util.mak

The Windows NT/2000 versions are supported under Microsoft C++ 5.0 or higher
To make the WIndows NT/2000 tools:


nmake /f utilms.mak

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 : Mon Aug 07 2000 - 21:00:07 EST