Commit graph

125 commits

Author SHA1 Message Date
Casey Bodley
575200952a tirpc: memory corruption in clnt_vc_destroy()
stop the callback thread before freeing any memory!

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-11-08 11:17:25 -05:00
Casey Bodley
50dbd847f0 driver: open files for one mount won't prevent unmount another
IOCTL_NFS41_DELCONN had a check for RxDeviceObject->NumberOfActiveFcbs before calling nfs41_DeleteConnection().  this prevents us from unmounting even if the netroot has no open files, and is redundant because nfs41_FinalizeNetRoot() already has the necessary check for NetRoot->NumberOfFcbs/SrvOpens

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-11-05 15:36:10 -04:00
Casey Bodley
38813e13d8 cosmetic: cleaning up small functions
attempted to get rid of short functions that are only called from one place

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-11-05 15:10:20 -04:00
Casey Bodley
f70e454988 driver: added error mapping for symlink outside filesystem
also fixed print_open_error() to check STATUS_ values, since map_open_errors() is called first

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-11-05 14:35:28 -04:00
Casey Bodley
b8f0f5673f driver: nfs41_FsCtl() calls print_debug_header()
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-11-05 14:35:27 -04:00
Casey Bodley
3bdabdf918 driver: link and rename print target filename
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-11-05 14:35:27 -04:00
Casey Bodley
bfb5a55861 driver: print_error() for error messages
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-11-05 14:35:27 -04:00
Casey Bodley
4398678517 symlinks: GetReparsePoint will return NOT_A_REPARSE_POINT
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-11-04 11:53:04 -04:00
unknown
7eae229661 setting SUPPORTS_HARD_LINKS if link_support is enabled 2010-11-04 11:51:26 -04:00
unknown
8688d75574 adding env.props to mount 2010-11-03 14:18:02 -04:00
unknown
c9bbf91d4b [cosmetic] bumping debug level for remove_unsupported_attrs 2010-11-02 15:55:38 -04:00
unknown
6df50ba65c adding refcount on nfs41_root to callback server 2010-11-02 15:54:50 -04:00
unknown
7d5e6eead2 storing backpointer to nfs41_root from nfs41_client 2010-11-02 15:17:22 -04:00
unknown
7527c022a1 making upcall_marshal void 2010-11-02 14:40:52 -04:00
unknown
a57e7a78f1 removed unnecessary free_open_state() function 2010-11-02 14:31:12 -04:00
unknown
db1c02cc28 set REPARSE_POINT attr only if symlink_support attr is set 2010-11-02 14:21:06 -04:00
unknown
9c84f71623 fixing timestamps off by 3 days 2010-11-02 13:45:08 -04:00
Casey Bodley
bcc707d3b8 ref counting for nfs41_root
very similar to the issue with nfs41_open_state, an abandoned upcall could outlive its mount. to prevent their nfs41_root from being freed, upcalls need to hold a reference until they're finished. this also keeps all of its clients/sessions/rpc connections alive

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-27 16:18:23 -04:00
Olga Kornievskaia
006bdfa47a ref counting for nfs41_open_state 2010-10-27 16:18:12 -04:00
Casey Bodley
ae4c67c21e upcall: added upcall_cleanup() to interface
added call to upcall_cleanup() after both upcall_marshall() and upcall_cancel()
individual upcall operations define their nfs41_upcall_op structs locally, instead of putting tons of function prototypes in upcall.c
made the upcall_marshall() function optional; most marshall functions are noops

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-27 16:16:17 -04:00
Casey Bodley
7e7f73766d readdir cookie is stored with nfs41_open_state
fixes a memory leak that occurs when a readdir loop doesn't complete, since the cookie was only freed on the last readdir upcall.  by storing the cookie with nfs41_open_state, we can avoid passing the cookie to the driver and back, and not worry about having to free it separately

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-27 15:25:27 -04:00
Casey Bodley
4930e7caca each mount has unique client_owner
add the netroot name to the hash for generating its client_owner

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-27 15:21:57 -04:00
unknown
f61bd10560 fixing timestamps for cygwin 2010-10-27 15:00:13 -04:00
Olga Kornievskaia
e51ba46d8b adding tags to compounds
contributed by Tigran
2010-10-27 15:00:12 -04:00
Casey Bodley
dd5dc2289e cthon: added missing patches 2010-10-27 13:02:16 -04:00
Casey Bodley
5c4f9e789f readme: formatting changes
use <strong> instead of <span class="filename"> and <code> instead of <span class="code">

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-21 08:45:51 -04:00
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
unknown
aa49d80acc removing libraries needed for service-version only 2010-10-20 12:21:54 -04:00
Casey Bodley
bff723a91b symlink: report symlinks to cygwin in NfsV3Attributes
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-19 15:40:39 -04:00
Olga Kornievskaia
a7e2d6ad2a checking functions return values
while following symlinks on open, after we break from the loop we need to respect that nfs41_lookup could have returned some kind of error value. thus only return error_reparse if nfs41_lookup returned success or file_not_found error.

similarly in after calling nfs41_symlink_follow() only set the reparse_error if function was successful.
2010-10-19 12:14:40 -04:00
unknown
bacbf060e3 making eprintfs include filename in symlink 2010-10-19 11:18:32 -04:00
Casey Bodley
f8885dbad0 warnings from WDK 6000
fixed a few cases of warning 4242: possible loss of data

wincrypt.h appears to come with windows.h in later versions of the ddk, but nfs41_client.c fails to compile in WDK 6001 without #include <wincrypt.h>

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-19 11:17:29 -04:00
Casey Bodley
3613a75914 install: disabled warning 4711
nfs_install was failing to build in 'free' configurations because of warning 4711: function 'foo' selected for automatic inline expansion

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-19 11:17:13 -04:00
Casey Bodley
3df69e4749 readme: updated for next release
specified requirement of 64-bit version of Windows Vista or later
clarified which commands are run from the Cygwin shell, Windows command prompt, or WinDDK build environment
adding instructions for applying patches to connectathon
added known issue regarding AUTH_SYS
added which connectathon tests have been disabled in known issues

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-19 11:16:54 -04:00
unknown
caf8d3afaf fixing readlink buffer size in decode 2010-10-18 12:15:35 -04:00
unknown
fdd55e729a adding error mapping for TOO_MANY_LINKS in the drivers 2010-10-15 17:53:47 -04:00
Casey Bodley
64480d0aca symlink: on open for mklink, only check for FILE_EXISTS
avoid calling map_disposition_2_nfsopen() for this, because FILE_CREATE->ERROR_FILE_EXISTS is the only case we care about

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-15 17:24:10 -04:00
Casey Bodley
870b389e8f symlink: limit symlink depth to avoid following cyclical links
/* msdn: There is a maximum of 31 reparse points (and
 * therefore symbolic links) allowed in a particular path. */
#define NFS41_MAX_SYMLINK_DEPTH     31

also added checks for the return value of nfs41_symlink_target() on open/link/rename

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-15 17:24:04 -04:00
Casey Bodley
59526ba9d8 symlink: convert windows slashes when setting symlink
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-15 14:56:13 -04:00
Casey Bodley
1ad1c0f262 symlink: rename and link handle ERROR_REPARSE
when rename or link call nfs41_lookup() for the destination directory, they need to be able to handle ERROR_REPARSE and find the real dest dir

open now does the same thing when it sees ERROR_REPARSE; previously, it was only replacing the first symlink in the path, and could require multiple reparses on a path

modified nfs41_symlink_target() to support the case where the source and destination paths are the same (used by rename/link)

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-15 14:56:06 -04:00
unknown
e37b33a4df fixing memory mngmt of symlink name on open 2010-10-15 12:06:16 -04:00
Casey Bodley
eb9d9bbd4c symlink: nfs41_symlink_follow() for readdir and open
added nfs41_file_info.symlink_dir to replace readdir's info.cansettime hack.  when nfs_file_info_to_attributes() finds info.type==NF4LNK, it adds the FILE_ATTRIBUTE_DIRECTORY flag if info.symlink_dir is set

renamed nfs41_symlink_follow() to nfs41_symlink_target()
generalized lookup_symlink() into nfs41_symlink_follow(), which is called by readdir and open (also avoids an extra lookup)

added queries for symlink target type when doing normal GETATTRs (getattr.c) and opens with OPEN_REPARSE_POINT set (open.c)

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-14 16:57:53 -04:00
unknown
a8f66804d5 [cosmetic] adding DbgEn/Ex to symlink functions 2010-10-14 13:46:14 -04:00
unknown
c414d5b84e fixing license in symlink.c 2010-10-14 13:23:48 -04:00
unknown
e535711acf fixing DbgP in marshal_nfs41_link 2010-10-14 13:23:25 -04:00
unknown
0be2b4e495 adding symlink.c to sources 2010-10-14 12:44:20 -04:00
Casey Bodley
f8d92d5894 symlink: bug fix for garbage characters in reparse path
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-14 12:42:39 -04:00
Casey Bodley
4bc7853cd6 symlink: driver uses vnetroot name for reparse path
instead of using the netroot name, use the vnetroot name (which includes \;Y:\) so that reparse requests go to the same vnetroot.  was seeing it create new vnetroots otherwise

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-14 12:42:39 -04:00
Casey Bodley
e27299d066 symlink: open handles embedded symlinks
returns symlink_embedded=TRUE when the symlink isn't the last component, which gets passed to RxPrepareToReparseSymbolicLink()

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-14 12:42:38 -04:00
Casey Bodley
a92fb8930e symlink: lookup handles ERR_SYMLINK
modified nfs41_lookup() to handle NFS4ERR_SYMLINK by setting parent=symlink and returning ERROR_REPARSE

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-14 12:42:38 -04:00