| summaryrefslogtreecommitdiff |
| author | NeilBrown <neilb@suse.de> | 2011-02-08 06:02:54 (GMT) |
|---|---|---|
| committer | NeilBrown <neilb@suse.de> | 2011-02-08 06:02:54 (GMT) |
| commit | 1e04cd848db1f4c29904f547413c5f388fae8387 (patch) (side-by-side diff) | |
| tree | f21e712e9b7de3fd65db0ff7e35a92de05140829 | |
| parent | 124a070aadef0eccbe2478279a4d2d93ecaff065 (diff) | |
- patches.fixes/nfs-idmap-fix: Fix the wait in idmap_lookuprpm-2.6.16.60-0.81
(bnc#663198).
| -rw-r--r-- | kernel-source.changes | 6 | ||||
| -rw-r--r-- | patches.fixes/nfs-idmap-fix | 28 | ||||
| -rw-r--r-- | series.conf | 1 |
3 files changed, 35 insertions, 0 deletions
diff --git a/kernel-source.changes b/kernel-source.changes index c4b18e6..5290dff 100644 --- a/kernel-source.changes +++ b/kernel-source.changes @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Tue Feb 8 07:02:49 CET 2011 - nfbrown@suse.de + +- patches.fixes/nfs-idmap-fix: Fix the wait in idmap_lookup + (bnc#663198). + +------------------------------------------------------------------- Mon Feb 7 12:14:59 CET 2011 - hare@suse.de - patches.fixes/megaraid_sas-reset-msi-x-after-kdump: kdump diff --git a/patches.fixes/nfs-idmap-fix b/patches.fixes/nfs-idmap-fix new file mode 100644 index 0000000..856bcd7 --- a/dev/null +++ b/patches.fixes/nfs-idmap-fix @@ -0,0 +1,28 @@ +From: NeilBrown <neilb@suse.de> +Subject: Fix the wait in idmap_lookup +Patch-mainline: not-needed +References: bnc#663198 + +Waiting for the item to be VALID is wrong as it could already be +'valid', just 'expired'. Rather we should wait for the upcall to no +longer be 'pending', as that confirms that whatever we no see is all +that we will get. + +Acked-by: Neil Brown <neilb@suse.de> +Signed-off-by: Neil Brown <neilb@suse.de> + +--- + fs/nfsd/nfs4idmap.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- linux-2.6.16-SLES10_SP4_BRANCH.orig/fs/nfsd/nfs4idmap.c ++++ linux-2.6.16-SLES10_SP4_BRANCH/fs/nfsd/nfs4idmap.c +@@ -512,7 +512,7 @@ idmap_lookup(struct svc_rqst *rqstp, + ret = do_idmap_lookup(lookup_fn, key, detail, item, mdr); + if (ret == -EAGAIN) { + wait_event_interruptible_timeout(mdr->waitq, +- test_bit(CACHE_VALID, &(*item)->h.flags), 1 * HZ); ++ !test_bit(CACHE_PENDING, &(*item)->h.flags), 1 * HZ); + ret = do_idmap_lookup_nowait(lookup_fn, key, detail, item); + } + put_mdr(mdr); diff --git a/series.conf b/series.conf index 205c72d..6019229 100644 --- a/series.conf +++ b/series.conf @@ -3806,6 +3806,7 @@ patches.fixes/sunrpc-monotonic-expiry patches.fixes/sunrpc-fix-rpc_execute-race patches.fixes/nfsd4-fix-bad-seqid-on-lock + patches.fixes/nfs-idmap-fix ######################################################## # cifs and smbfs patches |