summaryrefslogtreecommitdiffstats
path: root/src/mds/StrayManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mds/StrayManager.h')
-rw-r--r--src/mds/StrayManager.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/mds/StrayManager.h b/src/mds/StrayManager.h
index 86b6941a5..874fbbb9a 100644
--- a/src/mds/StrayManager.h
+++ b/src/mds/StrayManager.h
@@ -19,15 +19,30 @@
#include <list>
#include "Mutation.h"
#include "PurgeQueue.h"
+#include "MDSMetaRequest.h"
+#include "CDentry.h"
class MDSRank;
class CInode;
-class CDentry;
class StrayManager
{
// My public interface is for consumption by MDCache
public:
+ struct StrayEvalRequest : public MDSMetaRequest {
+ CDentry *dentry;
+ public:
+ explicit StrayEvalRequest(int o, ceph_tid_t t, CDentry *d) :
+ MDSMetaRequest(o, t), dentry(d) {
+ dentry->get(CDentry::PIN_PURGING);
+ dentry->reintegration_reqid = t;
+ }
+ ~StrayEvalRequest() {
+ dentry->reintegration_reqid = 0;
+ dentry->put(CDentry::PIN_PURGING);
+ }
+ };
+
explicit StrayManager(MDSRank *mds, PurgeQueue &purge_queue_);
void set_logger(PerfCounters *l) {logger = l;}
void activate();