No description
Find a file
Olga Kornievskaia a25a5221d9 adding version to the upcall
to determine that the daemon has restarted -- rather that daemon is receiving upcalls from the kernel that were processed by the old instance of the daemon -- add a version to the upcall mechanism.

when daemon starts up it generates a version number (just a timestamp). it passes this value to the driver on start up via "start_ioctl" downcall. the driver saves that value in its device extensions. it uses that value in the mount and shtudown upcalls.

when daemon replies to the mount command it again sends its version as a part of the reply. this reply is stored in driver;s netroot extensions. the driver uses netroot's value in each upcall to the daemon.

if the daemon receives an upcall for an operation where the included version does not equal to the its current version, it fails the upcall (error_code=116).

a restart of the daemon would change driver's device extension value which the driver will then use in the new mount upcalls that would establish new sessions. then the correct daemon version would be returned as a part of the mount downcalled and saved in the netroot.
2010-11-08 12:54:42 -05:00
build.vc9 fresh git tree for public release 2010-10-12 10:15:48 -04:00
build.vc10 idmap.c for ldap caching and configuration 2010-11-08 12:54:40 -05:00
daemon adding version to the upcall 2010-11-08 12:54:42 -05:00
dll creating shared memory mutex in dll 2010-10-12 10:36:03 -04:00
install install: disabled warning 4711 2010-10-19 11:17:13 -04:00
libtirpc tirpc: memory corruption in clnt_vc_destroy() 2010-11-08 11:17:25 -05:00
mount mount: make persist optional on mount, default to false 2010-10-12 10:35:57 -04:00
sys adding version to the upcall 2010-11-08 12:54:42 -05:00
tests cthon: added missing patches 2010-10-27 13:02:16 -04:00
dirs fresh git tree for public release 2010-10-12 10:15:48 -04:00
install.bat fresh git tree for public release 2010-10-12 10:15:48 -04:00
ms-nfs41-idmap.conf idmap.c for ldap caching and configuration 2010-11-08 12:54:40 -05:00
nfs41rdr.inf fresh git tree for public release 2010-10-12 10:15:48 -04:00
README.html readme: formatting changes 2010-10-21 08:45:51 -04:00
uninstall.bat fresh git tree for public release 2010-10-12 10:15:48 -04:00

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Windows NFS 4.1 Client Instructions</title>
    <link rel="stylesheet" title="CITI Default" href="http://www.citi.umich.edu/format/citi.css" type="text/css"/>
    <link rel="icon" href="http://www.citi.umich.edu/images/citilogo-16x16.png" type="image/png"/>
    <link rel="shortcut icon" href="http://www.citi.umich.edu/images/citilogo-16x16.png" type="image/png"/>
    <style type="text/css">
    /*<![CDATA[*/
    body { min-width: 600px; background-color: #DDDDFF; font-family: serif; }
    #page { padding: 0 12px 0 12px; }
    #content { margin: 12px 0 12px 0; padding: 8px; background-color: #FFFFFF; border: 1px solid #88A; }
    #index { padding-right: 12px; float: right; background-color: #FFFFFF; border: 1px solid #88A; }
    a { color: #0282b4; }
    a:hover { color: #0244b4; }
    h1 { font-size: 2em; text-align: center; background: none; }
    h2 { margin: 24px 0 8px 0; font-variant: small-caps; border-bottom: 1px dashed #88A; }
    h3 { margin-left: 8px; }
    /*]]>*/
    </style>
</head>
<body>
<div id="page">
<h1>Windows NFS 4.1 Client Instructions</h1>
<div id="content">
<div id="index">
<ol>
    <li><a href="#build">Building</a></li>
    <li><a href="#install">Installation</a></li>
    <li><a href="#mount">Mounting</a></li>
    <li><a href="#cthon">Connectation</a></li>
    <li><a href="#issues">Known Issues</a></li>
</ol>
</div>
<h2>1. <a name="build">Building</a></h2>
<h3>Requirements</h3>
<ul>
    <li>Windows Vista x64, Windows Server 2008 R2 x64, or Windows 7 x64. (Windows XP and previous versions are not supported. 32-bit builds have not been tested.)</li>
    <li>Windows Driver Development Kit (WinDDK 6000 or later)</li>
    <li>ms-nfs41-client source code:
    <br/><code>&gt; git clone git://citi.umich.edu/projects/ms-nfs41-client.git</code></li>
</ul>
<h3>Instructions</h3>
<ol>
    <li>From the Start menu, open the WinDDK 'x64 Checked Build Environment' for the target platform.</li>
    <li>Change directory to <strong>ms-nfs41-client</strong> and type <code>build</code>. The project should build without errors.</li>
</ol>
<h2>2. <a name="install">Installation</a></h2>
<h3>Requirements</h3>
<ul>
    <li>ms-nfs41-client binaries: <strong>nfs41_driver.sys</strong>, <strong>nfs41_np.dll</strong>, <strong>libtirpc.dll</strong>, <strong>nfs_install.exe</strong>, <strong>nfsd.exe</strong>, <strong>nfs_mount.exe</strong></li>
    <li>ms-nfs41-client configuration files: <strong>nfs41rdr.inf</strong>, <strong>install.bat</strong>, <strong>uninstall.bat</strong>, <strong>etc_netconfig</strong></li>
</ul>
<h3>Instructions</h3>
<ol>
    <li>Copy or extract all ms-nfs41-client binaries and configuration files into a directory that's convenient for testing.</li>
    <li>Open a WinDDK 'x64 Checked Build Environment' as Administrator in this directory (right click and 'Run as administrator').</li>
    <li>Create a certificate for test-signing the driver (<a href="http://msdn.microsoft.com/en-us/library/ff540213%28VS.85%29.aspx" title="msdn.microsoft.com">Creating Test Certificates</a>):
    <br/><code>&gt; makecert /pe /ss PrivateCertStore /n CN=nfs41_test nfs41_test.cer</code></li>
    <li>Use the certificate to sign <strong>nfs41_driver.sys</strong> (<a href="http://msdn.microsoft.com/en-us/library/ff553467%28VS.85%29.aspx" title="msdn.microsoft.com">Test-Signing a Driver File</a>):
    <br/><code>&gt; signtool sign /v /s PrivateCertStore /n nfs41_test /t http://timestamp.verisign.com/scripts/timestamp.dll nfs41_driver.sys</code></li>
    <li>Install the certificate to the 'Trusted Root Certificate Authorities' store:
    <br/><code>&gt; certmgr /add /c nfs41_test.cer /s /r localMachine root</code></li>
    <li>Install the driver and update the registry:
    <br/><code>&gt; install.bat</code></li>
    <li>Copy the libtirpc configuration:
    <br/><code>&gt; mkdir C:\etc</code>
    <br/><code>&gt; copy etc_netconfig C:\etc\netconfig</code></li>
    <li>Allow windows to load test-signed drivers:
    <br/><code>&gt; bcdedit /set testsigning on</code></li>
    <li>Reboot.</li>
</ol>
<h2>3. <a name="mount">Mounting</a></h2>
<h3>Instructions</h3>
<ol>
    <li>From a Windows command prompt, run <strong>nfsd.exe</strong>.</li>
    <li>Open a new Windows command prompt and run <strong>nfs_mount.exe</strong> to mount a share:
    <br/><code>&gt; nfs_mount.exe Z: nfs.citi.umich.edu:\</code></li>
    <li>You can later unmount with:
    <br/><code>&gt; nfs_mount.exe -d Z</code></li>
</ol>
<h2>4. <a name="cthon">Connectathon</a></h2>
<h3>Requirements</h3>
<ul>
    <li><a href="http://www.cygwin.com" title="www.cygwin.com">Cygwin</a>, including packages gcc-core, make, time, tirpc, git</li>
    <li><a href="http://www.connectathon.org/nfstests.html" title="www.connectathon.org">Connectathon Test Suite</a></li>
    <li>ms-nfs41-client source code (patches for connectathon are located in <strong>ms-nfs41-client\tests</strong>)</li>
</ul>
<h3>Instructions</h3>
<ol>
    <li>Extract <strong>nfstests.zip</strong> into a directory that's convenient for testing (i.e. <strong>cthon04</strong>).</li>
    <li>Open a Cygwin shell, and change directory to <strong>cthon04</strong>.</li>
    <li>Create a git repository to track changes:
    <br/><code>&gt; git init</code>
    <br/><code>&gt; git add *</code>
    <br/><code>&gt; git commit -m "files from nfstests.zip"</code></li>
    <li>Apply all cthon patches:
    <br/><code>&gt; git am /path/to/ms-nfs41-client/tests/*.patch</code></li>
    <li>Build the tests:
    <br/><code>&gt; make</code></li>
    <li>Run the test suite on a mounted directory:
    <br/><code>&gt; ./runtests -a -t z:/testdir</code></li>
</ol>
<h2>5. <a name="issues">Known Issues</a></h2>
<ul>
    <li>AUTH_SYS is not fully implemented, and uses a fake uid=666 and gid=777.  Keep this in mind when setting up exports.</li>
    <li>When nfs_mount.exe is run without arguments, it does not properly list mounted drives.</li>
    <li>If nfsd.exe is restarted while a drive is mapped, that drive needs to be remounted before further use.</li>
    <li>Symbolic links are not supported in Cygwin. Connectathon's basic test8 and special test nfsidem have been commented out.</li>
    <li>Does not properly handle renaming a file on top of an existing open file- the existing file is removed on rename, and not preserved until last close. Connectathon's special test op_ren has been commented out.</li>
</ul>
</div>
</div>
</body>
</html>