No description
Find a file
Olga Kornievskaia 1b88791f6f always make an upcall
if the thread placing an upcall was woken up from the sleep, but have not been picked up by the daemon thread from the upcall queue, we would just cancel the upcall. thus nfsd would never see it. however, it was causing leaks in the open state. we would allocate open state but matching close would never make it to the daemon.

instead, always place an upcall to the daemon, but mark it that nobody is waiting for it if the requesting thread gets interrupted and goes away.
2010-10-20 17:04:26 -04:00
build.vc9 fresh git tree for public release 2010-10-12 10:15:48 -04:00
build.vc10 symlink: daemon parses SYMLINK upcall 2010-10-14 12:42:33 -04:00
daemon removing libraries needed for service-version only 2010-10-20 12:21:54 -04: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 fresh git tree for public release 2010-10-12 10:15:48 -04:00
mount mount: make persist optional on mount, default to false 2010-10-12 10:35:57 -04:00
sys always make an upcall 2010-10-20 17:04:26 -04:00
tests cthon: added patches for connectathon 2010-10-12 10:18:14 -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
nfs41rdr.inf fresh git tree for public release 2010-10-12 10:15:48 -04:00
README.html readme: updated for next release 2010-10-19 11:16:54 -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; }
    span.filename { font-weight: bold; }
    span.code { font-family: Courier; }
    /*]]>*/
    </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>ms-nfs41-client source code:
    <br/><span class="code">&gt; git clone git://citi.umich.edu/projects/ms-nfs41-client.git</span></li>
    <li>Windows Driver Development Kit (WinDDK 6000 or later)</li>
</ul>
<h3>Instructions</h3>
<ol>
    <li>Open the WinDDK 'x64 Checked Build Environment' for the target platform.</li>
    <li>Change directory to <span class="filename">ms-nfs41-client</span> and type <span class="code">build</span>. 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: <span class="filename">nfs41_driver.sys</span>, <span class="filename">nfs41_np.dll</span>, <span class="filename">libtirpc.dll</span>, <span class="filename">nfs_install.exe</span>, <span class="filename">nfsd.exe</span>, <span class="filename">nfs_mount.exe</span></li>
    <li>ms-nfs41-client configuration files: <span class="filename">nfs41rdr.inf</span>, <span class="filename">install.bat</span>, <span class="filename">uninstall.bat</span>, <span class="filename">etc_netconfig</span></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/><span class="code">&gt; makecert /pe /ss PrivateCertStore /n CN=nfs41_test nfs41_test.cer</span></li>
    <li>Use the certificate to sign <span class="filename">nfs41_driver.sys</span> (<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/><span class="code">&gt; signtool sign /v /s PrivateCertStore /n nfs41_test /t http://timestamp.verisign.com/scripts/timestamp.dll nfs41_driver.sys</span></li>
    <li>Install the certificate to the 'Trusted Root Certificate Authorities' store:
    <br/><span class="code">&gt; certmgr /add /c nfs41_test.cer /s /r localMachine root</span></li>
    <li>Install the driver and update the registry:
    <br/><span class="code">&gt; install.bat</span></li>
    <li>Copy the libtirpc configuration:
    <br/><span class="code">&gt; mkdir C:\etc</span>
    <br/><span class="code">&gt; copy etc_netconfig C:\etc\netconfig</span></li>
    <li>Allow windows to load test-signed drivers:
    <br/><span class="code">&gt; bcdedit /set testsigning on</span></li>
    <li>Reboot.</li>
</ol>
<h2>3. <a name="mount">Mounting</a></h2>
<h3>Instructions</h3>
<ol>
    <li>From a Windows command prompt, run <span class="filename">nfsd.exe</span>.</li>
    <li>Open a new Windows command prompt and run <span class="filename">nfs_mount.exe</span> to mount a share:
    <br/><span class="code">&gt; nfs_mount.exe Z: nfs.citi.umich.edu:\</span></li>
    <li>You can later unmount with:
    <br/><span class="code">&gt; nfs_mount.exe -d Z</span></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 <span class="filename">ms-nfs41-client\tests</span>)</li>
</ul>
<h3>Instructions</h3>
<ol>
    <li>Extract <span class="filename">nfstests.zip</span> into a directory that's convenient for testing (i.e. <span class="filename">cthon04</span>).</li>
    <li>Open a Cygwin shell, and change directory to <span class="filename">cthon04</span>.</li>
    <li>Create a git repository to track changes:
    <br/><span class="code">&gt; git init</span>
    <br/><span class="code">&gt; git add *</span>
    <br/><span class="code">&gt; git commit -m "files from nfstests.zip"</span></li>
    <li>Apply all cthon patches:
    <br/><span class="code">&gt; git am /path/to/ms-nfs41-client/tests/*.patch</span></li>
    <li>Build the tests:
    <br/><span class="code">&gt; make</span></li>
    <li>Run the test suite on a mounted directory:
    <br/><span class="code">&gt; ./runtests -a -t z:/testdir</span></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>