MDCache::MDCache(MDS *m) :
logger(0),
+ filer(m->objecter, &m->finisher),
recovery_queue(m),
stray_manager(m)
{
assert(in->last == CEPH_NOSNAP);
}
dout(10) << "_truncate_inode snapc " << snapc << " on " << *in << dendl;
- mds->filer->truncate(in->inode.ino, &in->inode.layout, *snapc,
- pi->truncate_size, pi->truncate_from-pi->truncate_size,
- pi->truncate_seq, utime_t(), 0,
- 0, new C_OnFinisher(new C_IO_MDC_TruncateFinish(this, in,
+ filer.truncate(in->inode.ino, &in->inode.layout, *snapc,
+ pi->truncate_size, pi->truncate_from-pi->truncate_size,
+ pi->truncate_seq, utime_t(), 0,
+ 0, new C_OnFinisher(new C_IO_MDC_TruncateFinish(this, in,
ls),
&mds->finisher));
}
#include "include/filepath.h"
#include "include/elist.h"
+#include "osdc/Filer.h"
#include "CInode.h"
#include "CDentry.h"
#include "CDir.h"
PerfCounters *logger;
+ Filer filer;
+
public:
void advance_stray() {
stray_index = (stray_index+1)%NUM_STRAY;
objecter = new Objecter(m->cct, messenger, monc, NULL, 0, 0);
objecter->unset_honor_osdmap_full();
- filer = new Filer(objecter, &finisher);
-
mdcache = new MDCache(this);
mdlog = new MDLog(this);
balancer = new MDBalancer(this);
if (server) { delete server; server = 0; }
if (locker) { delete locker; locker = 0; }
- if (filer) { delete filer; filer = 0; }
if (objecter) { delete objecter; objecter = 0; }
if (logger) {
MonClient *monc;
MDSMap *mdsmap;
Objecter *objecter;
- Filer *filer; // for reading/writing to/from osds
LogClient log_client;
LogChannelRef clog;
};
+RecoveryQueue::RecoveryQueue(MDS *mds_)
+ : mds(mds_), logger(NULL), filer(mds_->objecter, &mds_->finisher)
+{}
+
+
/**
* Progress the queue. Call this after enqueuing something or on
* completion of something.
file_recovering.insert(in);
C_MDC_Recover *fin = new C_MDC_Recover(this, in);
- mds->filer->probe(in->inode.ino, &in->inode.layout, in->last,
+ filer.probe(in->inode.ino, &in->inode.layout, in->last,
pi->get_max_size(), &fin->size, &fin->mtime, false,
0, fin);
} else {
#include <set>
+#include "osdc/Filer.h"
+
class CInode;
class MDS;
class PerfCounters;
void enqueue(CInode *in);
void advance();
void prioritize(CInode *in); ///< do this inode now/soon
- RecoveryQueue(MDS *mds_) : mds(mds_), logger(NULL) {}
+ RecoveryQueue(MDS *mds_);
void set_logger(PerfCounters *p) {logger=p;}
void _recovered(CInode *in, int r, uint64_t size, utime_t mtime);
MDS *mds;
PerfCounters *logger;
+ Filer filer;
friend class C_MDC_Recover;
};
uint64_t num = (to + period - 1) / period;
dout(10) << __func__ << " 0~" << to << " objects 0~" << num
<< " snapc " << snapc << " on " << *in << dendl;
- mds->filer->purge_range(in->inode.ino, &in->inode.layout, *snapc,
+ filer.purge_range(in->inode.ino, &in->inode.layout, *snapc,
0, num, ceph_clock_now(g_ceph_context), 0,
gather.new_sub());
}
mds->send_message_mds(req, to);
}
- StrayManager::StrayManager(MDS *mds)
+StrayManager::StrayManager(MDS *mds)
: delayed_eval_stray(member_offset(CDentry, item_stray)),
mds(mds), logger(NULL),
ops_in_flight(0), files_purging(0),
- num_strays(0), num_strays_purging(0), num_strays_delayed(0)
+ num_strays(0), num_strays_purging(0), num_strays_delayed(0),
+ filer(mds->objecter, &mds->finisher)
{
assert(mds != NULL);
update_op_limit();
uint64_t num = (to - 1) / period;
dout(10) << __func__ << " 0~" << to << " objects 0~" << num
<< " snapc " << snapc << " on " << *in << dendl;
- mds->filer->purge_range(in->ino(), &in->inode.layout, *snapc,
+ filer.purge_range(in->ino(), &in->inode.layout, *snapc,
1, num, ceph_clock_now(g_ceph_context),
0, gather.new_sub());
}
// keep backtrace object
if (period && to > 0) {
- mds->filer->zero(in->ino(), &in->inode.layout, *snapc,
+ filer.zero(in->ino(), &in->inode.layout, *snapc,
0, period, ceph_clock_now(g_ceph_context),
0, true, NULL, gather.new_sub());
}
#include "include/elist.h"
#include <list>
+#include "osdc/Filer.h"
class MDS;
class PerfCounters;
uint64_t num_strays_purging;
uint64_t num_strays_delayed;
+ Filer filer;
+
void truncate(CDentry *dn, uint32_t op_allowance);
/**