Commit graph

387 commits

Author SHA1 Message Date
Olga Kornievskaia
0322f53cce make io offset unsigned 2012-02-28 12:11:01 -05:00
Casey Bodley
294f30baec deleg: release reference in nfs41_delegation_getattr()
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-02-16 12:09:17 -05:00
Olga Kornievskaia
60b73b282d lowering default debug level to 1 2012-02-16 11:07:37 -05:00
Casey Bodley
fb7c379f06 pnfs: fix for write length returned
fixes an issue introduced by commit 1f7e560a9a, "pnfs: fix for short write on ds error"

when a write is satisfied completely by pnfs, the upcall was returning out_len=0.  the only time i noticed this was against python server, where cp in cygwin would succeed but print 'No space left on device'

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-02-14 13:27:51 -05:00
Olga Kornievskaia
d42f769bff changing many printouts 2012-02-13 16:08:21 -05:00
Olga Kornievskaia
5b91c662c9 removing unused arg from nfs41_link 2012-02-08 18:33:37 -05:00
Olga Kornievskaia
13c3723191 propagating file change attr for setacl 2012-02-08 16:32:04 -05:00
Olga Kornievskaia
cdf31d3ee0 propagating file change attr on setattr 2012-02-08 16:31:17 -05:00
Olga Kornievskaia
aa7a680a40 propagating file change attr on writes 2012-02-08 16:29:25 -05:00
Olga Kornievskaia
ec034e7fd9 propagating file change attr on open 2012-02-08 11:11:09 -05:00
Olga Kornievskaia
3def6f5e24 propagating file change attr on getattr 2012-02-08 11:02:29 -05:00
Casey Bodley
63f499c4b7 cache: check for expiry on nfs41_attr_cache_lookup()
added expiration field to struct attr_cache_entry.  expiration timer is reset whenever attr_cache_update() is called with a 'change' attribute

new function attr_cache_entry_expired() is used by nfs41_attr_cache_lookup() and name_cache_lookup()/entry_invis() to prevent the use of expired attributes

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-02-03 18:26:34 -05:00
Olga Kornievskaia
b779ab07fc add a timestamp printout to upcall 2012-02-03 18:26:18 -05:00
Casey Bodley
e553ede209 deleg: release reference in remove_srvopen()
nfs41_delegation_remove_srvopen() gets a reference to a delegation via delegation_find().  this reference wasn't being released

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-01-31 15:46:22 -05:00
Olga Kornievskaia
fb87e417fc enforcing data consistency
given a delegation type received on open, set buffering flags accordingly.

however, provide -o nocoherence mount options that will enable read/write
buffering regardless
2012-01-20 15:01:11 -05:00
Olga Kornievskaia
c22c2b6080 data cache invalidation on delegation recalls
when we receive a delegation recall, we need to make a downcall
to the kernel and change a buffering/caching policy on this file.

on each open and close we pass an srv_open pointer to the nfsd to
keep in case it receives a cb_recall. we store srv_open in the
delegation state if we got a delegation.
2012-01-19 19:46:03 -05:00
Casey Bodley
909947f07a name cache: bug fix for delegations
when open_update_cache() calls open_delegation_return() to return its delegation, it doesn't update its local variable 'delegation_type' to reflect the new delegation->type.  this causes the next call to nfs41_name_cache_insert() to continue failing

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-01-19 15:25:50 -05:00
Olga Kornievskaia
8e0e2d2718 remove erronous permanent disable of ldap lookups 2012-01-19 15:25:37 -05:00
Casey Bodley
ab8a958e35 pnfs: remove code for unused PNFS_THREAD_BY_SERVER
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-12-22 12:36:04 -05:00
Olga Kornievskaia
62dfd87bda [driver] using InterlockedIncrement for open_owner_id 2011-12-21 17:42:04 -05:00
Olga Kornievskaia
9efa410e5a [driver] using InterlockedIncrement64 for xid 2011-12-21 17:19:38 -05:00
Casey Bodley
f14231fd3b recovery: only reclaim delegations on RECALLABLE_STATE_REVOKED
when only the SEQ4_STATUS_RECALLABLE_STATE_REVOKED flag is set, we only have to test/free delegation stateids.  nfs41_client_state_revoked() handles this by calling stateid_array() with an empty list of opens

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-12-19 19:50:57 -05:00
Casey Bodley
6c1c300a3b recovery: trigger recovery on RESTART_RECLAIM_NEEDED
adds a check for sequence flag SEQ4_STATUS_RESTART_RECLAIM_NEEDED in nfs41_recover_sequence_flags().  if other _STATE_REVOKED flags are set, call nfs41_client_state_revoked() as normal but follow it up with a RECLAIM_COMPLETE.  otherwise, reclaim all locks with nfs41_recover_client_state().  like other callers of nfs41_recover_client_state(), we need to handle BADSESSION errors because the recovery operations are sent with try_recovery=FALSE.  because this logic is similar to our default NFS4ERR_BADSESSION handling, i moved the common code into a new nfs41_recover_session() function in recovery.c

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2011-12-19 19:50:50 -05:00
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