void RecordStoreV1Base::increaseStorageSize( TransactionExperiment* txn, int size, int quotaMax ) { DiskLoc eloc = _extentManager->allocateExtent( txn, _ns, isCapped(), size, quotaMax ); Extent *e = _extentManager->getExtent( eloc, false ); invariant( e ); DiskLoc emptyLoc = e->reuse(txn, _ns, isCapped() ); if ( _details->lastExtent().isNull() ) { verify( _details->firstExtent().isNull() ); _details->setFirstExtent( txn, eloc ); _details->setLastExtent( txn, eloc ); _details->setCapExtent( txn, eloc ); verify( e->xprev.isNull() ); verify( e->xnext.isNull() ); } else { verify( !_details->firstExtent().isNull() ); *txn->writing(&e->xprev) = _details->lastExtent(); *txn->writing(&_extentManager->getExtent(_details->lastExtent())->xnext) = eloc; _details->setLastExtent( txn, eloc ); } _details->setLastExtentSize( txn, e->length ); addDeletedRec(txn, emptyLoc); }