Skip to content
Allegro NFS Server for Microsoft Windows, written in Common Lisp
Common Lisp C Logos Groff NSIS Makefile Other
Latest commit 8b3b221 Mar 4, 2016 @dancysoft dancysoft 6.1.beta.7: rfe14218: Allow persistent file handles to be disabled
When persistent file handles are used, file ids (analogous to inode
numbers) are 64-bit numbers.  This can cause problems for NFSv2
clients (which uses 32-bit file ids) and 32-bit NFSv3 clients w/o
large file support.

This commit adds a configuration option to disable persistent file
handles.  When persistent file handles are disabled, we use
randomly-generated file ids which are contrained to 32-bits.
Failed to load latest commit information.
bin Move test code to test/ Aug 7, 2013
configure 6.1.beta.7: rfe14218: Allow persistent file handles to be disabled Mar 4, 2016
doc 6.1.beta.6: Handle RFC1831 RPC Feb 12, 2016
misc Move test code to test/ Aug 7, 2013
test Added tests for bug23531 and bug23532 Sep 24, 2015
.gitignore Tweak dependence on having cygwin binaries in PATH Aug 29, 2013
.modules Remove git.sh; add .modules; bump version to 5.2 Jul 24, 2013
CHECKLIST Version 5.0 changes. Feb 22, 2010
Makefile 6.1.beta.4: pick new aclmalloc heap loc Jan 28, 2016
README.md README.md: improvements Jul 1, 2015
attr.cl 5.3.1: put *executable-types* into config file May 14, 2014
bswap.cl See ChangeLog Apr 13, 2007
config-defs.cl 6.1.beta.7: rfe14218: Allow persistent file handles to be disabled Mar 4, 2016
configure.cl 5.2.2: rfe12517 and performance testing Aug 15, 2013
dir.cl bug22498: Handle illegal filenames May 16, 2014
export.cl Working prototype of persistent file handles Dec 5, 2013
fhandle.cl 6.1.beta.7: rfe14218: Allow persistent file handles to be disabled Mar 4, 2016
interval.cl Update comments May 14, 2014
ipaddr.cl Update comments May 14, 2014
license-demo.txt Version 5.0 changes. Feb 22, 2010
license-paid.txt Version 5.0 changes. Feb 22, 2010
license.readme Version 5.0 changes. Feb 22, 2010
license.txt Move documentation into doc/ Aug 7, 2013
load.cl Turn on telnet server for beta Jan 19, 2016
locking.cl Update comments May 14, 2014
main.cl Wrap all subprocesses with handler-bind which logs a backtrace Feb 11, 2016
mount.x 4.5.1b4 Oct 31, 2007
mountd.cl Update comments May 14, 2014
nfs-common.cl 6.1.beta.7: rfe14218: Allow persistent file handles to be disabled Mar 4, 2016
nfs-log.cl Improve comment for bug22497 May 16, 2014
nfs-shared.cl Update comments May 14, 2014
nfs.cfg.default see ChangeLog Feb 11, 2004
nfs.cl bug23531/bug23532 Fixes Sep 24, 2015
nfs.ico bug20376: fix icon Jul 27, 2011
nfs.nsi squeeze out a little of the download size Feb 22, 2010
nfs.x See ChangeLog May 11, 2006
nlm.cl Update comments May 14, 2014
nlm.x See ChangeLog May 11, 2006
nsm.cl Update comments May 14, 2014
nsm.x See ChangeLog May 11, 2006
openfile.cl v5.2.3: bug21964: use the mtime as the ctime Aug 27, 2013
portmap.cl 6.1.beta.6: Handle RFC1831 RPC Feb 12, 2016
portmap.x see ChangeLog Jan 2, 2008
rpcgen.cl Update comments May 14, 2014
servicelib.nsh 4.3.3b10. see ChangeLog Jun 22, 2006
sunrpc-service.cl Update comments May 14, 2014
sunrpc.cl 6.1.beta.6: Handle RFC1831 RPC Feb 12, 2016
sunrpc.x 6.1.beta.6: Handle RFC1831 RPC Feb 12, 2016
telnet.cl Version 5.0 changes. Feb 22, 2010
unicode-file.cl 6.1.beta.7: rfe14218: Allow persistent file handles to be disabled Mar 4, 2016
utf8.cl Update comments May 14, 2014
utils.cl Update comments May 14, 2014
xdr-get-signed-int.lap Adding a nop to the lap code to conform with 9.0 Jun 12, 2012
xdr-store-signed-int.lap Adding a nop to the lap code to conform with 9.0 Jun 12, 2012
xdr.cl Update comments May 14, 2014

README.md

Allegro NFS Server for Windows

Table of contents

Introduction

The repo contains the source code for Allegro® NFS Server for Microsoft Windows®, written in Allegro Common Lisp. The author is Ahmon Dancy, with help from Elliott Johnson, Kevin Layer, and Jeremiah Rothschild.

It was inspired by our dissatisfaction with current free and commercial NFS Servers for Windows available on the market, and the incredible technical difficulties we faced in configuring them on Windows.

It runs on Microsoft Windows XP and later (including Windows 8 and Server 2003, 2008 and 2012).

This source code is licensed under the terms of the Lisp Lesser GNU Public License, known as the LLGPL. The LLGPL consists of a preamble and the LGPL. Where these conflict, the preamble takes precedence. This project is referenced in the preamble as the LIBRARY.

Installation

This software is open source, however some of the tools needed to build it are not. You can purchase a supported binary copy of this software or download an evaluation version from nfsforwindows.com.

To build this software, you need Cygwin (for GNU make) and Allegro Common Lisp 9.0 (32-bit, non-SMP). The installer is written in NSIS.

To build:

make all

To install:

make install

The install step expects that cygwin has C:\ mounted as /c. It is also possible to build an installer via:

make installer

This will produce an exe file that can be used to install.

Configuration

See the documentation for more information on how to configure nfs.

Also see doc/configuration.txt.

Once your exports are configured it's possible to mount them. Please consult your client platform's documentation on how to mount the exported NFS shares.

Release Notes

UNRELEASED CHANGES

The changes in this section will appear in the release of Allegro NFS

  • When constructing file mode bits for reporting to an NFS client, Allegro NFS uses the filename extension to determine if the file should have the executable (x) bits set. Previously only files with extension .exe, .com, or .bat were marked executable. This list is now adjustable by modifying nfs.cfg and adding an entry for executable-types. This operation should only be performed by advanced users.

  • Added support for persistent file handles for files on NTFS volumes. This means that you can restart Allegro NFS or the machine that it is running on and not suffer stale NFS file handle errors on the client. Non-NTFS files (or inaccessible files on NTFS volumes) still use non-persistent file handles are still subject to stable NFS file handle errors after restarts.

  • Allow control over how long file attribute are cached through the configuration GUI. See the "File attribute caching time" setting in the "Global" tab of the Allegro NFS configuration program.

  • Fixed some input validation bugs in the Allegro NFS configuration program.

  • Fixed mounting a subdirectory of an export. For example, if you have an export named "/export" which has a subdirectory named "files", then mounting :/export/files from an NFS client now works properly.

  • File and directory changes on the server weren't seen by some clients. This would make files appear to be static even though they had been modified on the server.

  • Configuration for "Host lists" allows host names in the "New address" field. When loading the configuration and resolving the host names, users will be warned if the conversion of saved host names fails, and the host name will be ignored.

  • Some previously invisible files are now seen by clients, such as in the roots of filesystems, "System Volume Information" and "pagefile.sys".

  • File attributes are cached for a maximum of 5 seconds. Prior to this change, the expiration for cached file attributes would be extended each time they were accessed. This could be a problem in the following scenario:

    • an NFS client is repeatedly calling stat() on a file to see if its attributes had changed, and

    • the attributes of the file were altered outside of Allegro NFS's knowledge.

    In this case the new file attributes would never be returned, at least not until the client stopped probing for a sufficiently long time.

  • Use higher precision timestamps in log messages, enabled via an option on the debug tab.

  • Change default statfs blocksize from 8192 to 512. This improves compatibility with some broken NFS clients which do not work properly if the blocksize is not 512.

  • Minor change to showmount output.

Version 5.1, 1 Aug, 2011

  • performance improvements
  • minor license changes
  • new: toggling of response to showmount requests.
  • new: configurable log rotation. Defaults to previous behavior.
  • new: directory and file caching duration is now configurable.
  • fix: interoperability fixes with VMware ESXi.
  • fix: hanging of the server and 100% cpu usage problems are removed.
  • fix: moving the error log into the install directory.
  • fix: proper locking around exports and logging operations.
  • small modifications to icons.

Version 5.0, 22 Feb, 2010

  • performance improvements
  • better support Windows Vista/7
  • new: support for symbolic links
  • new: support for international filenames (UTF-8)
  • new: support for mount protocol version 2
  • new console separate from service, that is shows log info
  • added NLM and NSM debug options
  • add date to timestamp logging
  • New option *nfs-set-mtime-on-write* allows users to work around Windows' funny behavior with respect to file modification times. Normally Windows does not update the mtime on a file until the file is closed. Since Allegro NFS keeps a file open while it is actively being written-to, a Windows program periodically checking the mtime of the file will not be able to tell that the file is actually being modified until the file is closed. Updating the mtime during every write access suffers about a 10% penality so the option is disabled by default.
  • improvements to hard link support
  • better compatibility between UNIX and Windows-style locking
  • improved interoperatibility with several UNIX clients
  • many other small improvements and fixes

Version 4.5, 20 June, 2007

  • Windows Vista Support
  • Many interoperability fixes and bug fixes
  • Improved locking support
  • NLM and NSM port numbers can now be set manually

Version 4.4, 29 Aug, 2006

  • NFS lock support
  • Bug fixes
  • Enhanced debugging

Version 4.3, 27 Oct, 2005

  • Installs on systems with Windows Data Execution Prevention (DEP) turned on
  • allow specification of mountd port number for dealing with firewall issues
  • made mountd subprocess more robust in the face of malformed RPC messages
  • adjusted the logging of some "normal" error conditions so they look less alarming
  • better performance
  • bug fixes

Version 4.0, 10 Aug, 2005

  • NFS protocol V3 support
  • large file support
  • better performance
  • Hard link creation support

Version 3.0, 22 Apr, 2004

  • handle UNC pathnames
  • added "use system portmapper" option
  • improved performance

Version 2.0, 24 Feb, 2004

  • new configuration utility

Version 1.1.4, 3 Jul, 2003

  • improved interoperability with some clients
  • configuration option for altering mode bits

Version 1.1.3, 21 Mar, 2003

  • bug fixes

Version 1.1.1, 23 Jan, 2003

  • Improvements of handling the NFS services

Version 1.0.36, 23 Sep, 2002

  • bug fixes

Version 1.0.33, 27 Feb, 2002

  • initial release

Implementation Notes

The following files in the doc subdirectory have various information related to understanding how to debug and understand the product:

  • access-control.txt - info on controlling access to the nfs server
  • configuration.txt - info on configuration
  • debugging.txt - notes on debugging
  • notes.txt - implementation notes
  • profiling.txt - how to profile the server
  • testing.txt - information on testing
  • todo.txt - old and new todo information.
Something went wrong with that request. Please try again.