This looks good on its face but I haven't had the chance to dig through the recovery queue stuff yet (it's on my list following some issues with recovery speed). How'd you run across this? If it's being added to the recovery queue multiple times I want to make sure we don't have some other machinery trying to dequeue it multiple times, or a single waiter which needs to be a list or something. -Greg On Sun, Mar 17, 2013 at 7:51 AM, Yan, Zheng <zheng.z.yan@xxxxxxxxx> wrote: > From: "Yan, Zheng" <zheng.z.yan@xxxxxxxxx> > > Signed-off-by: Yan, Zheng <zheng.z.yan@xxxxxxxxx> > --- > src/mds/MDCache.cc | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc > index 973a4d0..e9a79cd 100644 > --- a/src/mds/MDCache.cc > +++ b/src/mds/MDCache.cc > @@ -5502,8 +5502,10 @@ void MDCache::_queue_file_recover(CInode *in) > dout(15) << "_queue_file_recover " << *in << dendl; > assert(in->is_auth()); > in->state_clear(CInode::STATE_NEEDSRECOVER); > - in->state_set(CInode::STATE_RECOVERING); > - in->auth_pin(this); > + if (!in->state_test(CInode::STATE_RECOVERING)) { > + in->state_set(CInode::STATE_RECOVERING); > + in->auth_pin(this); > + } > file_recover_queue.insert(in); > } > > -- > 1.7.11.7 > -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html