We need at least none non-pure virtual method to tell gcc where the
vtable goes. The destructor wins!
libosd.a(libosd_a-ReplicatedPG.o): In function `~PG':
/home/sage/src/ceph/src/osd/PG.h:1367: undefined reference to `vtable for PG'
libosd.a(libosd_a-ReplicatedPG.o):(.rodata._ZTI12ReplicatedPG[typeinfo for ReplicatedPG]+0x10): undefined reference to `typeinfo for PG'
libosd.a(libosd_a-PG.o): In function `PG':
/home/sage/src/ceph/src/osd/PG.cc:85: undefined reference to `vtable for PG'
...
Signed-off-by: Sage Weil <sage@inktank.com>
scrub_reserved(false), scrub_reserve_failed(false),
scrub_waiting_on(0),
active_rep_scrub(0),
- recovery_state(this) {}
+ recovery_state(this)
+{
+}
+
+PG::~PG()
+{
+}
void PG::lock(bool no_lockdep)
{
public:
PG(OSDService *o, OSDMapRef curmap,
PGPool pool, pg_t p, const hobject_t& loid, const hobject_t& ioid);
- virtual ~PG() {}
+ virtual ~PG();
private:
// Prevent copying