4040#include " mongo/db/storage/extent.h"
4141#include " mongo/db/storage/extent_manager.h"
4242#include " mongo/db/storage/record.h"
43- #include " mongo/db/structure/catalog/namespace_details.h"
44-
45- #include " mongo/db/pdfile.h"
4643
4744namespace mongo {
4845
@@ -168,7 +165,7 @@ namespace mongo {
168165 return preallocateOnly ? 0 : p;
169166 }
170167
171- DataFile* ExtentManager::addAFile ( int sizeNeeded, bool preallocateNextFile ) {
168+ DataFile* ExtentManager::_addAFile ( int sizeNeeded, bool preallocateNextFile ) {
172169 DEV Lock::assertWriteLocked ( _dbname );
173170 int n = (int ) _files.size ();
174171 DataFile *ret = getFile ( n, sizeNeeded );
@@ -353,7 +350,7 @@ namespace mongo {
353350 }
354351
355352
356- DiskLoc ExtentManager::createExtent ( int size, int maxFileNoForQuota ) {
353+ DiskLoc ExtentManager::_createExtent ( int size, int maxFileNoForQuota ) {
357354 size = quantizeExtentSize ( size );
358355
359356 if ( size > Extent::maxSize () )
@@ -378,7 +375,7 @@ namespace mongo {
378375 // no space in an existing file
379376 // allocate files until we either get one big enough or hit maxSize
380377 for ( int i = 0 ; i < 8 ; i++ ) {
381- DataFile* f = addAFile ( size, false );
378+ DataFile* f = _addAFile ( size, false );
382379
383380 if ( f->getHeader ()->unusedLength >= size ) {
384381 return _createExtentInFile ( numFiles () - 1 , f, size, maxFileNoForQuota );
@@ -390,7 +387,7 @@ namespace mongo {
390387 msgasserted (14810 , " couldn't allocate space for a new extent" );
391388 }
392389
393- DiskLoc ExtentManager::allocFromFreeList ( int approxSize, bool capped ) {
390+ DiskLoc ExtentManager::_allocFromFreeList ( int approxSize, bool capped ) {
394391 // setup extent constraints
395392
396393 int low, high;
@@ -473,54 +470,28 @@ namespace mongo {
473470 return best->myLoc ;
474471 }
475472
476-
477- Extent* ExtentManager::increaseStorageSize ( const string& ns,
478- NamespaceDetails* details,
479- int size,
480- int quotaMax ) {
473+ DiskLoc ExtentManager::allocateExtent ( const string& ns,
474+ bool capped,
475+ int size,
476+ int quotaMax ) {
481477
482478 bool fromFreeList = true ;
483- DiskLoc eloc = allocFromFreeList ( size, details-> isCapped () );
479+ DiskLoc eloc = _allocFromFreeList ( size, capped );
484480 if ( eloc.isNull () ) {
485481 fromFreeList = false ;
486- eloc = createExtent ( size, quotaMax );
482+ eloc = _createExtent ( size, quotaMax );
487483 }
488484
489- verify ( !eloc.isNull () );
490- verify ( eloc.isValid () );
485+ invariant ( !eloc.isNull () );
486+ invariant ( eloc.isValid () );
491487
492- LOG (1 ) << " ExtentManager::increaseStorageSize "
488+ LOG (1 ) << " ExtentManager::allocateExtent "
493489 << " ns:" << ns
494490 << " desiredSize:" << size
495491 << " fromFreeList: " << fromFreeList
496492 << " eloc: " << eloc;
497493
498- Extent *e = getExtent ( eloc, false );
499- verify ( e );
500-
501- DiskLoc emptyLoc = getDur ().writing (e)->reuse ( ns,
502- details->isCapped () );
503-
504- if ( details->lastExtent ().isNull () ) {
505- verify ( details->firstExtent ().isNull () );
506- details->setFirstExtent ( eloc );
507- details->setLastExtent ( eloc );
508- getDur ().writingDiskLoc ( details->capExtent () ) = eloc;
509- verify ( e->xprev .isNull () );
510- verify ( e->xnext .isNull () );
511- }
512- else {
513- verify ( !details->firstExtent ().isNull () );
514- getDur ().writingDiskLoc (e->xprev ) = details->lastExtent ();
515- getDur ().writingDiskLoc (getExtent (details->lastExtent ())->xnext ) = eloc;
516- details->setLastExtent ( eloc );
517- }
518-
519- details->setLastExtentSize ( e->length );
520-
521- details->addDeletedRec (emptyLoc.drec (), emptyLoc);
522-
523- return e;
494+ return eloc;
524495 }
525496
526497 void ExtentManager::freeExtents (DiskLoc firstExt, DiskLoc lastExt) {
0 commit comments