Commit graph

364 commits

Author SHA1 Message Date
Casey Bodley
ab51beeb98 cosmetic: move sequence status recovery to separate function
new function nfs41_recover_sequence_flags() in recovery.c takes care of checking status flags, entering recovery mode, and reclaiming state

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-12-19 19:50:42 -05:00
Casey Bodley
aacff9d721 pnfs: thread-by-stripe instead of by-server
the thread-by-server model breaks down when using dense layouts, because multiple stripes could be mapped to a single data server, and the per-data-server thread would have to send a COMMIT for each stripe

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-12-19 19:50:36 -05:00
Olga Kornievskaia
4be25baaee moved getdomainname into start of nfsd
acquire machine's domain name at the start of nfsd and store
in global memory, make is accessible for acl operations.
2011-12-19 19:37:35 -05:00
Olga Kornievskaia
8e64984183 close file before remove in case of silly rename
windows server does not allow for removing of opened file and instead
errors with nfs41err_file_open. we were failing the remove the silly
renamed file.
2011-12-14 13:11:06 -05:00
Olga Kornievskaia
9af1b590ff [cosmetic] dprintf changes in acl, getattr, name_cache, namespace 2011-11-07 10:50:00 -05:00
Casey Bodley
7f82baf13f namecache: fix for negative entries on rename
this addresses two error cases:

1) when the src entry is negative or does not exist: the dst entry could be negative or point to something else, so it needs to be removed
2) when the dst_parent entry is negative or does not exist: src needs to be made a negative entry

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-11-04 17:01:46 -04:00
Casey Bodley
68252b6522 recovery: avoid delegation_return_lru() on delegation recovery
the namecache/delegation feedback code in nfs41_ops.c:open_update_cache() is interfering with delegation recovery.  if its call to nfs41_name_cache_insert() fails with ERROR_TOO_MANY_OPEN_FILES, the delegation is returned instead of being recovered.  this shouldn't happen during recovery, because we're replacing a delegation rather than adding a new one

nfs41_open() now remembers whether we already had a delegation.  if we did, open_update_cache() will pass OPEN_DELEGATE_NONE to nfs41_name_cache_insert() to prevent it from returning ERROR_TOO_MANY_OPEN_FILES.  if we didn't already have a delegation, the nfs41_delegreturn() needs to be called with the same try_recovery flag from nfs41_open()

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-11-04 17:01:34 -04:00
Casey Bodley
f988c89bf4 namecache: fix for numlinks on remove
nfs41_name_cache_remove() needs to update the 'numlinks' attribute for other links, even if the file being removed is not found in the cache.  to search for its attr cache entry, nfs41_name_cache_remove() now requires a fileid argument.  nfs41_remove() only gets a pointer to the parent's filehandle, so it also needs the target fileid argument

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-11-04 13:14:40 -04:00
Casey Bodley
06b025a89c build: pacified compiler warnings in x86/x64
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-11-02 12:08:48 -04:00
Olga Kornievskaia
0694415a95 free critical sections with DeleteCriticalSection 2011-11-02 12:05:33 -04:00
Olga Kornievskaia
2642d0c459 check that netconfig is present and readable 2011-11-02 11:59:52 -04:00
Olga Kornievskaia
5032d46633 return success if received empty acl 2011-11-02 11:58:54 -04:00
Casey Bodley
78a0bb0ac5 recovery: handle state revocation flags in SEQUENCE response
if any of (SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED | SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED | SEQ4_STATUS_ADMIN_STATE_REVOKED) are set in the session flags returned by SEQUENCE:
* enter client recovery mode
* determine which state was lost with TEST_STATEID (consider all delegations, opens, locks, and layouts)
* send FREE_STATEID for each stateid revoked
* recall all layouts and forget devices (required by 12.7.2: Dealing with Lease Expiration on the Client)
* call recover_delegation(), recover_open() or recover_locks() to reclaim each lock

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-11-02 11:58:45 -04:00
Olga Kornievskaia
ed2ec18d2d recovery xdr for free_stateid and test_stateid 2011-11-02 11:58:19 -04:00
Casey Bodley
7efeb31a16 pnfs: send GETATTR after FILE_SYNC ds writes
in the case of ds writes returning FILE_SYNC, we don't need to send a COMMIT or LAYOUTCOMMIT to the mds.  COMMIT and LAYOUTCOMMIT, however, are the places where we do GETATTR(size) to update the attribute cache.  so we must add a separate call to GETATTR to accomplish this after ds writes return FILE_SYNC

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-10-25 11:45:03 -04:00
Casey Bodley
1f7e560a9a pnfs: fix for short write on ds error
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-10-25 11:44:53 -04:00
Casey Bodley
03e810ce83 write: use FILE_SYNC for small writes
small mds writes were using DATA_SYNC4 and were not followed by COMMITs, so there was no guarantee of an updated file size before returning success

use FILE_SYNC4 for these small writes, and send COMMITs for both UNSTABLE4 and DATA_SYNC4

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-10-25 11:44:46 -04:00
Olga Kornievskaia
861941944f [bakeathon] [acl] fixing inheritance flags
windows inherite directory flag was translated to file inherite flag

cosmetic: print ace type
2011-10-24 12:09:49 -04:00
Olga Kornievskaia
7485d53f64 [bakeathon] server compare logic
to determine if the server is the same don't rely on clientids returned
by the server
2011-10-24 11:54:19 -04:00
Olga Kornievskaia
ac9e621c44 [bakeathon] [session] fixing seq_id in recovery
when we are resending a create_session op we need to get possibly
updated initial sequence number from the client data structure.
2011-10-24 11:42:54 -04:00
Casey Bodley
fd870e6ce9 fix warning on ZeroMemory
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-10-12 15:14:25 -04:00
Olga Kornievskaia
4c52473527 hooking up rsize-wsize mount options
after parsing read and write rpc size from the mount command,
add the values to mount upcall, then pass these values when creating
a CLIENT structure.
2011-10-11 16:03:59 -04:00
Casey Bodley
5dd3ef1e8c limit retries on WRITE/COMMIT verifier mismatch
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-10-07 14:54:18 -04:00
Casey Bodley
f435606a16 check write verifiers on COMMIT
we were previously only verifying that the server didn't reboot between WRITEs.  COMMIT returns a verifier that needs to be checked as well

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-10-07 14:53:59 -04:00
Olga Kornievskaia
fc6ac77f28 including useridentity when creating clientowner 2011-09-30 16:36:30 -04:00
Olga Kornievskaia
c90811be75 dont use named events or mutexs
in case of multiple sessions (in multiuser environment)
we can't create event with the same name.
2011-09-30 12:41:54 -04:00
Olga Kornievskaia
96e334be8c [cosmetic] expand on getdomainname error message 2011-09-29 18:46:55 -04:00
Olga Kornievskaia
436df23cba making downcall downcall buffer static
now that readdir doesn't require memory allocation, we can use
static memory for inbuf
2011-09-27 14:38:16 -04:00
Olga Kornievskaia
27030b1764 removing copies from readdir path 2011-09-27 12:21:26 -04:00
Olga Kornievskaia
7e52f53097 [acls] removing unneeded safety checks 2011-09-23 12:12:45 -04:00
Olga Kornievskaia
6eea9faa2e first draft of named attributes 2011-09-22 14:56:11 -04:00
Olga Kornievskaia
1c5935865b [setattr] uses memory out upcall buffer 2011-09-16 17:05:57 -04:00
Casey Bodley
3a115a39fa hardcode value of filetime epoch
avoid unnecessary calls to SystemTimeToFileTime() in get_file_epoch() by hardcoding the FILETIME value of jan_1_1970

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-09-15 17:24:27 -04:00
Casey Bodley
5880a8bb1d deleg: support for CB_GETATTR
on CB_GETATTR, search for a delegation with the given filehandle.  if found, use its fileid to get its cached attributes.  when encoding the response, only include change and size attributes

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-09-15 13:22:14 -04:00
Olga Kornievskaia
0184804498 [acl] setacl uses memory out of upcall buffer 2011-09-07 15:07:23 -04:00
Olga Kornievskaia
756f92120c [acl] using static memory for main getacl structure 2011-09-07 13:04:32 -04:00
Casey Bodley
27fa6e93be namecache: fix for counting of delegations
the out_err_deleg: case of nfs41_name_cache_insert() was forgetting to increment cache->delegations, leading to a decrement past 0.  once that happens, the cache stops accepting delegations because it's comparing cache->max_delegations against UINT_MAX

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-09-06 17:58:23 -04:00
Olga Kornievskaia
f1311b1108 [pnfs] tag ds commits with ds 2011-09-06 17:57:55 -04:00
Casey Bodley
6872152317 pnfs: track last_offset for layoutcommit
iozone tests were failing intermittently against emc-2 due to out-of-order LAYOUTCOMMITs that both specified new_last_offset

nfs41_open_state now maintains a cached value of the last_offset, and avoids sending it with LAYOUTCOMMIT unless the new last_offset is greater than the cached offset.  this cached value is initialized on open/delegation, and updated on setattr for size

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-09-06 17:55:30 -04:00
Casey Bodley
93a907082c pnfs: fix commit-to-ds for dense layouts
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-09-06 17:55:21 -04:00
Casey Bodley
641d9cf14b revert patch: threading by io unit instead of stripe
sorry, earlier Casey, but the patch 'threading by io unit instead of stripe' from 6/20/2010 was nuts!  with PNFS_THREAD_BY_SERVER disabled, we definitely -don't- want to create a separate thread for each io unit (each READ/WRITE request to a ds).  we just want the one per stripe, as the intended alternative to PNFS_THREAD_BY_SERVER

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-09-06 17:55:14 -04:00
unknown
c5878eb662 Merge branch 'master' of ssh://screamer.citi.umich.edu/home/projects/ms-nfs41-client-dev 2011-08-26 16:31:24 -04:00
Olga Kornievskaia
971762498b fixing null pointer deref in setowner/group 2011-08-26 16:27:19 -04:00
Casey Bodley
6c3bb06eca callback: fix for nfs41_callback_session_init()
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-08-26 15:03:25 -04:00
Olga Kornievskaia
fa09329167 fixing compile warning in upcall.c 2011-08-26 13:54:54 -04:00
Casey Bodley
d107131f78 lock: fix for upcall.status on cancel_lock()
cancel_lock() can't rely on checking upcall.status, because a handle_lock() success could be overwritten by upcall_marshall() or failure to allocate the upcall reply buffer.  added new flag lock_upcall_args.acquired for this purpose

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-08-26 13:44:32 -04:00
Casey Bodley
d08d3774fd lock: allocate lock state before LOCK, fail on error
now that cancel_lock() and handle_unlock() depend on finding lock state in the open, the comment /* ignore errors from open_lock_add(); they just mean we won't be able to recover the lock after reboot */ no longer applies.  allocate the lock state at the top of handle_lock(), so we can bail immediately on failure

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-08-26 13:43:41 -04:00
Casey Bodley
ead5bc78a2 namecache: cleanup name_cache_entry_update()
added goto out on attr_cache_find_or_create() failure to avoid calling name_cache_entry_updated()

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-08-26 13:06:01 -04:00
Casey Bodley
a4b39031b9 namecache: cleanup nfs41_name_cache_insert()
removed unused variable 'grandparent'
factored out the call to name_cache_entry_update() from root/non-root paths

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-08-26 13:05:49 -04:00
Casey Bodley
af80ded902 namecache: check for empty list before scavenging
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-08-26 13:05:38 -04:00