cct->_conf->client_oc_max_dirty_age,
true);
objecter_finisher.start();
- filer = new Filer(objecter);
+ filer = new Filer(objecter, &objecter_finisher);
}
objecter = new Objecter(m->cct, messenger, monc, 0, 0);
objecter->unset_honor_osdmap_full();
- filer = new Filer(objecter);
+ filer = new Filer(objecter, &finisher);
mdcache = new MDCache(this);
mdlog = new MDLog(this);
#include "include/Context.h"
+#include "common/Finisher.h"
#include "common/config.h"
#define dout_subsys ceph_subsys_filer
for (std::vector<ObjectExtent>::iterator i = stat_extents.begin();
i != stat_extents.end(); ++i) {
C_Probe *c = new C_Probe(this, probe, i->oid);
- objecter->stat(i->oid, i->oloc, probe->snapid, &c->size, &c->mtime,
- probe->flags | CEPH_OSD_FLAG_RWORDERED, c);
+ objecter->stat(i->oid, i->oloc, probe->snapid, &c->size, &c->mtime,
+ probe->flags | CEPH_OSD_FLAG_RWORDERED,
+ new C_OnFinisher(c, finisher));
}
}
const OSDMap *osdmap = objecter->get_osdmap_read();
const object_locator_t oloc = osdmap->file_to_object_locator(pr->layout);
objecter->put_osdmap_read();
- objecter->remove(oid, oloc, pr->snapc, pr->mtime, pr->flags,
- NULL, new C_PurgeRange(this, pr));
+ objecter->remove(oid, oloc, pr->snapc, pr->mtime, pr->flags, NULL,
+ new C_OnFinisher(new C_PurgeRange(this, pr), finisher));
}
}
class Context;
class Messenger;
class OSDMap;
-
+class Finisher;
/**** Filer interface ***/
class Filer {
CephContext *cct;
Objecter *objecter;
+ Finisher *finisher;
// probes
struct Probe {
Filer(const Filer& other);
const Filer operator=(const Filer& other);
- Filer(Objecter *o) : cct(o->cct), objecter(o) {}
+ Filer(Objecter *o, Finisher *f) : cct(o->cct), objecter(o), finisher(f) {}
~Filer() {}
bool is_active() {
ino(ino_), pg_pool(pool), readonly(true),
stream_format(-1), journal_stream(-1),
magic(mag),
- objecter(obj), filer(objecter), logger(l), logger_key_lat(lkey),
+ objecter(obj), filer(objecter, f), logger(l), logger_key_lat(lkey),
timer(tim), delay_flush_event(0),
state(STATE_UNDEF), error(0),
prezeroing_pos(0), prezero_pos(0), write_pos(0), flush_pos(0), safe_pos(0),
cout << "journal is " << start << "~" << len << std::endl;
- Filer filer(objecter);
+ Filer filer(objecter, &finisher);
bufferlist bl;
C_SaferCond cond;
return r;
}
- Filer filer(objecter);
+ Filer filer(objecter, &finisher);
/* Erase any objects at the end of the region to which we shall write
* the new log data. This is to avoid leaving trailing junk after