Hi,
On 11/13/2015 03:42 PM, Yan, Zheng
wrote:
*snipsnap*
it seems the hang is related to async invalidate. please try
the following patch
---
diff --git a/src/client/Client.cc b/src/client/Client.cc
index 0d85db2..afbb896 100644
--- a/src/client/Client.cc
+++ b/src/client/Client.cc
@@ -3151,8 +3151,6 @@ void Client::_async_invalidate(Inode *in,
int64_t off, int64_t len, bool keep_ca
ino_invalidate_cb(callback_handle, in->vino(), off, len);
client_lock.Lock();
- if (!keep_caps)
- check_caps(in, false);
put_inode(in);
client_lock.Unlock();
ldout(cct, 10) << "_async_invalidate " << off
<< "~" << len << (keep_caps ? " keep_caps" :
"") << " done" << dendl;
@@ -3163,7 +3161,7 @@ void
Client::_schedule_invalidate_callback(Inode *in, int64_t off,
int64_t len,
if (ino_invalidate_cb)
// we queue the invalidate, which calls the callback and
decrements the ref
async_ino_invalidator.queue(new
C_Client_CacheInvalidate(this, in, off, len, keep_caps));
- else if (!keep_caps)
+ if (!keep_caps)
check_caps(in, false);
}
I've deployed the patch together with the page cache patch on two
machines in the compute cluster. I've not been able to reproduce the
lockup on these machines.
Most cluster machines are currently under load, so I'll have to
postpone a rollout to more machines until the jobs are finished.
Thanks again for the fast patch.
Best regards,
Burkhard
|