diff options
Diffstat (limited to 'src/mongo/db/storage/mmap_v1/catalog/namespace_details_rsv1_metadata.cpp')
-rw-r--r-- | src/mongo/db/storage/mmap_v1/catalog/namespace_details_rsv1_metadata.cpp | 258 |
1 files changed, 127 insertions, 131 deletions
diff --git a/src/mongo/db/storage/mmap_v1/catalog/namespace_details_rsv1_metadata.cpp b/src/mongo/db/storage/mmap_v1/catalog/namespace_details_rsv1_metadata.cpp index 5c95ec2bbc7..51fc1c1ed75 100644 --- a/src/mongo/db/storage/mmap_v1/catalog/namespace_details_rsv1_metadata.cpp +++ b/src/mongo/db/storage/mmap_v1/catalog/namespace_details_rsv1_metadata.cpp @@ -35,169 +35,165 @@ namespace mongo { - using std::unique_ptr; - using std::numeric_limits; +using std::unique_ptr; +using std::numeric_limits; - BOOST_STATIC_ASSERT(RecordStoreV1Base::Buckets - == NamespaceDetails::SmallBuckets + NamespaceDetails::LargeBuckets); +BOOST_STATIC_ASSERT(RecordStoreV1Base::Buckets == + NamespaceDetails::SmallBuckets + NamespaceDetails::LargeBuckets); - NamespaceDetailsRSV1MetaData::NamespaceDetailsRSV1MetaData( StringData ns, - NamespaceDetails* details ) - : _ns( ns.toString() ), - _details( details ) { - } - - const DiskLoc& NamespaceDetailsRSV1MetaData::capExtent() const { - return _details->capExtent; - } +NamespaceDetailsRSV1MetaData::NamespaceDetailsRSV1MetaData(StringData ns, NamespaceDetails* details) + : _ns(ns.toString()), _details(details) {} - void NamespaceDetailsRSV1MetaData::setCapExtent( OperationContext* txn, const DiskLoc& loc ) { - *txn->recoveryUnit()->writing( &_details->capExtent ) = loc; - } +const DiskLoc& NamespaceDetailsRSV1MetaData::capExtent() const { + return _details->capExtent; +} - const DiskLoc& NamespaceDetailsRSV1MetaData::capFirstNewRecord() const { - return _details->capFirstNewRecord; - } +void NamespaceDetailsRSV1MetaData::setCapExtent(OperationContext* txn, const DiskLoc& loc) { + *txn->recoveryUnit()->writing(&_details->capExtent) = loc; +} - void NamespaceDetailsRSV1MetaData::setCapFirstNewRecord( OperationContext* txn, - const DiskLoc& loc ) { - *txn->recoveryUnit()->writing( &_details->capFirstNewRecord ) = loc; - } +const DiskLoc& NamespaceDetailsRSV1MetaData::capFirstNewRecord() const { + return _details->capFirstNewRecord; +} - bool NamespaceDetailsRSV1MetaData::capLooped() const { - return _details->capFirstNewRecord.isValid(); - } +void NamespaceDetailsRSV1MetaData::setCapFirstNewRecord(OperationContext* txn, const DiskLoc& loc) { + *txn->recoveryUnit()->writing(&_details->capFirstNewRecord) = loc; +} - long long NamespaceDetailsRSV1MetaData::dataSize() const { - return _details->stats.datasize; - } - long long NamespaceDetailsRSV1MetaData::numRecords() const { - return _details->stats.nrecords; - } +bool NamespaceDetailsRSV1MetaData::capLooped() const { + return _details->capFirstNewRecord.isValid(); +} - void NamespaceDetailsRSV1MetaData::incrementStats( OperationContext* txn, - long long dataSizeIncrement, - long long numRecordsIncrement ) { - // durability todo : this could be a bit annoying / slow to record constantly - NamespaceDetails::Stats* s = txn->recoveryUnit()->writing( &_details->stats ); - s->datasize += dataSizeIncrement; - s->nrecords += numRecordsIncrement; - } +long long NamespaceDetailsRSV1MetaData::dataSize() const { + return _details->stats.datasize; +} +long long NamespaceDetailsRSV1MetaData::numRecords() const { + return _details->stats.nrecords; +} - void NamespaceDetailsRSV1MetaData::setStats( OperationContext* txn, - long long dataSize, - long long numRecords ) { - NamespaceDetails::Stats* s = txn->recoveryUnit()->writing( &_details->stats ); - s->datasize = dataSize; - s->nrecords = numRecords; - } +void NamespaceDetailsRSV1MetaData::incrementStats(OperationContext* txn, + long long dataSizeIncrement, + long long numRecordsIncrement) { + // durability todo : this could be a bit annoying / slow to record constantly + NamespaceDetails::Stats* s = txn->recoveryUnit()->writing(&_details->stats); + s->datasize += dataSizeIncrement; + s->nrecords += numRecordsIncrement; +} - DiskLoc NamespaceDetailsRSV1MetaData::deletedListEntry( int bucket ) const { - invariant(bucket >= 0 && bucket < RecordStoreV1Base::Buckets); - const DiskLoc head = (bucket < NamespaceDetails::SmallBuckets) - ? _details->deletedListSmall[bucket] - : _details->deletedListLarge[bucket - NamespaceDetails::SmallBuckets]; +void NamespaceDetailsRSV1MetaData::setStats(OperationContext* txn, + long long dataSize, + long long numRecords) { + NamespaceDetails::Stats* s = txn->recoveryUnit()->writing(&_details->stats); + s->datasize = dataSize; + s->nrecords = numRecords; +} - if (head == DiskLoc(0,0)) { - // This will happen the first time we use a "large" bucket since they were previously - // zero-initialized. - return DiskLoc(); - } +DiskLoc NamespaceDetailsRSV1MetaData::deletedListEntry(int bucket) const { + invariant(bucket >= 0 && bucket < RecordStoreV1Base::Buckets); + const DiskLoc head = (bucket < NamespaceDetails::SmallBuckets) + ? _details->deletedListSmall[bucket] + : _details->deletedListLarge[bucket - NamespaceDetails::SmallBuckets]; - return head; + if (head == DiskLoc(0, 0)) { + // This will happen the first time we use a "large" bucket since they were previously + // zero-initialized. + return DiskLoc(); } - void NamespaceDetailsRSV1MetaData::setDeletedListEntry( OperationContext* txn, - int bucket, - const DiskLoc& loc ) { - DiskLoc* head = (bucket < NamespaceDetails::SmallBuckets) - ? &_details->deletedListSmall[bucket] - : &_details->deletedListLarge[bucket - NamespaceDetails::SmallBuckets]; - *txn->recoveryUnit()->writing( head ) = loc; - } + return head; +} - DiskLoc NamespaceDetailsRSV1MetaData::deletedListLegacyGrabBag() const { - return _details->deletedListLegacyGrabBag; - } +void NamespaceDetailsRSV1MetaData::setDeletedListEntry(OperationContext* txn, + int bucket, + const DiskLoc& loc) { + DiskLoc* head = (bucket < NamespaceDetails::SmallBuckets) + ? &_details->deletedListSmall[bucket] + : &_details->deletedListLarge[bucket - NamespaceDetails::SmallBuckets]; + *txn->recoveryUnit()->writing(head) = loc; +} - void NamespaceDetailsRSV1MetaData::setDeletedListLegacyGrabBag(OperationContext* txn, - const DiskLoc& loc) { - *txn->recoveryUnit()->writing(&_details->deletedListLegacyGrabBag) = loc; - } +DiskLoc NamespaceDetailsRSV1MetaData::deletedListLegacyGrabBag() const { + return _details->deletedListLegacyGrabBag; +} - void NamespaceDetailsRSV1MetaData::orphanDeletedList( OperationContext* txn ) { - for( int i = 0; i < RecordStoreV1Base::Buckets; i++ ) { - setDeletedListEntry( txn, i, DiskLoc() ); - } - setDeletedListLegacyGrabBag(txn, DiskLoc()); - } +void NamespaceDetailsRSV1MetaData::setDeletedListLegacyGrabBag(OperationContext* txn, + const DiskLoc& loc) { + *txn->recoveryUnit()->writing(&_details->deletedListLegacyGrabBag) = loc; +} - const DiskLoc& NamespaceDetailsRSV1MetaData::firstExtent( OperationContext* txn ) const { - return _details->firstExtent; +void NamespaceDetailsRSV1MetaData::orphanDeletedList(OperationContext* txn) { + for (int i = 0; i < RecordStoreV1Base::Buckets; i++) { + setDeletedListEntry(txn, i, DiskLoc()); } + setDeletedListLegacyGrabBag(txn, DiskLoc()); +} - void NamespaceDetailsRSV1MetaData::setFirstExtent( OperationContext* txn, const DiskLoc& loc ) { - *txn->recoveryUnit()->writing( &_details->firstExtent ) = loc; - } +const DiskLoc& NamespaceDetailsRSV1MetaData::firstExtent(OperationContext* txn) const { + return _details->firstExtent; +} - const DiskLoc& NamespaceDetailsRSV1MetaData::lastExtent( OperationContext* txn ) const { - return _details->lastExtent; - } +void NamespaceDetailsRSV1MetaData::setFirstExtent(OperationContext* txn, const DiskLoc& loc) { + *txn->recoveryUnit()->writing(&_details->firstExtent) = loc; +} - void NamespaceDetailsRSV1MetaData::setLastExtent( OperationContext* txn, const DiskLoc& loc ) { - *txn->recoveryUnit()->writing( &_details->lastExtent ) = loc; - } +const DiskLoc& NamespaceDetailsRSV1MetaData::lastExtent(OperationContext* txn) const { + return _details->lastExtent; +} - bool NamespaceDetailsRSV1MetaData::isCapped() const { - return _details->isCapped; - } +void NamespaceDetailsRSV1MetaData::setLastExtent(OperationContext* txn, const DiskLoc& loc) { + *txn->recoveryUnit()->writing(&_details->lastExtent) = loc; +} - bool NamespaceDetailsRSV1MetaData::isUserFlagSet( int flag ) const { - return _details->userFlags & flag; - } +bool NamespaceDetailsRSV1MetaData::isCapped() const { + return _details->isCapped; +} - int NamespaceDetailsRSV1MetaData::userFlags() const { - return _details->userFlags; - } +bool NamespaceDetailsRSV1MetaData::isUserFlagSet(int flag) const { + return _details->userFlags & flag; +} - bool NamespaceDetailsRSV1MetaData::setUserFlag( OperationContext* txn, int flag ) { - if ( ( _details->userFlags & flag ) == flag ) - return false; +int NamespaceDetailsRSV1MetaData::userFlags() const { + return _details->userFlags; +} - txn->recoveryUnit()->writingInt( _details->userFlags) |= flag; - return true; - } +bool NamespaceDetailsRSV1MetaData::setUserFlag(OperationContext* txn, int flag) { + if ((_details->userFlags & flag) == flag) + return false; - bool NamespaceDetailsRSV1MetaData::clearUserFlag( OperationContext* txn, int flag ) { - if ( ( _details->userFlags & flag ) == 0 ) - return false; + txn->recoveryUnit()->writingInt(_details->userFlags) |= flag; + return true; +} - txn->recoveryUnit()->writingInt(_details->userFlags) &= ~flag; - return true; - } +bool NamespaceDetailsRSV1MetaData::clearUserFlag(OperationContext* txn, int flag) { + if ((_details->userFlags & flag) == 0) + return false; - bool NamespaceDetailsRSV1MetaData::replaceUserFlags( OperationContext* txn, int flags ) { - if ( _details->userFlags == flags ) - return false; + txn->recoveryUnit()->writingInt(_details->userFlags) &= ~flag; + return true; +} - txn->recoveryUnit()->writingInt(_details->userFlags) = flags; - return true; - } +bool NamespaceDetailsRSV1MetaData::replaceUserFlags(OperationContext* txn, int flags) { + if (_details->userFlags == flags) + return false; - int NamespaceDetailsRSV1MetaData::lastExtentSize( OperationContext* txn ) const { - return _details->lastExtentSize; - } + txn->recoveryUnit()->writingInt(_details->userFlags) = flags; + return true; +} - void NamespaceDetailsRSV1MetaData::setLastExtentSize( OperationContext* txn, int newMax ) { - if ( _details->lastExtentSize == newMax ) - return; - txn->recoveryUnit()->writingInt(_details->lastExtentSize) = newMax; - } +int NamespaceDetailsRSV1MetaData::lastExtentSize(OperationContext* txn) const { + return _details->lastExtentSize; +} - long long NamespaceDetailsRSV1MetaData::maxCappedDocs() const { - invariant( _details->isCapped ); - if ( _details->maxDocsInCapped == 0x7fffffff ) - return numeric_limits<long long>::max(); - return _details->maxDocsInCapped; - } +void NamespaceDetailsRSV1MetaData::setLastExtentSize(OperationContext* txn, int newMax) { + if (_details->lastExtentSize == newMax) + return; + txn->recoveryUnit()->writingInt(_details->lastExtentSize) = newMax; +} + +long long NamespaceDetailsRSV1MetaData::maxCappedDocs() const { + invariant(_details->isCapped); + if (_details->maxDocsInCapped == 0x7fffffff) + return numeric_limits<long long>::max(); + return _details->maxDocsInCapped; +} } |