[Bugs] [Bug 1347903] disperse volume, after add-brick success, postmark create file failed by NFS service.

bugzilla at redhat.com bugzilla at redhat.com
Wed Jun 22 10:38:20 UTC 2016


https://bugzilla.redhat.com/show_bug.cgi?id=1347903



--- Comment #4 from jiademing.dd <iesool at 126.com> ---
I modify code like this:

index 229bfee..9808f12 100644
--- a/xlators/nfs/server/src/nfs3-helpers.c
+++ b/xlators/nfs/server/src/nfs3-helpers.c
@@ -3791,6 +3791,14 @@ nfs3_fh_resolve_entry_hard (nfs3_call_state_t *cs)
                    (nfs3_create_op (cs) && !nfs3_create_exclusive_op (cs))) {
                         cs->lookuptype = GF_NFS3_FRESH;
                         cs->resolve_ret = 0;
+                        /*Make sure cs->hardresolved == 0
+                         * before nfs3_call_resume(cs).
+                         * add by Jiademing*/
+                        if (cs->hardresolved) {
+                                gf_msg (GF_NFS3, GF_LOG_INFO, 0,
+                                        NFS_MSG_LOOKUP_ROOT_FAIL, "reset
cs->hardresolved = 0");
+                                cs->hardresolved = 0;
+                        }
                         nfs3_call_resume (cs);
                 } else {
                        cs->hardresolved = 1;
then test is OK.

when nfsd re-init, inode->parent not found, 
1)then call lookup to resolve parent, cs->hardresolved = 1;
2)lookup success, recall nfs3_fh_resolve_entry_hard().then its own inode not
found, retry lookup(its inode), but because cs->hardresolved == 1,so direct
return at nfs3_lookup_resume(), not dispatch this lookup operation, so failed.  
Can we reset cs->hardresolved = 0 at nfs3_fh_resolve_entry_hard()?

-- 
You are receiving this mail because:
You are on the CC list for the bug.
Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=F3SJY55scI&a=cc_unsubscribe


More information about the Bugs mailing list