summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/mmap_v1/extent_manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/mmap_v1/extent_manager.cpp')
-rw-r--r--src/mongo/db/storage/mmap_v1/extent_manager.cpp96
1 files changed, 47 insertions, 49 deletions
diff --git a/src/mongo/db/storage/mmap_v1/extent_manager.cpp b/src/mongo/db/storage/mmap_v1/extent_manager.cpp
index 8efc2cbc50f..15222fac01a 100644
--- a/src/mongo/db/storage/mmap_v1/extent_manager.cpp
+++ b/src/mongo/db/storage/mmap_v1/extent_manager.cpp
@@ -34,66 +34,64 @@
namespace mongo {
- int ExtentManager::quantizeExtentSize( int size ) const {
+int ExtentManager::quantizeExtentSize(int size) const {
+ if (size == maxSize()) {
+ // no point doing quantizing for the entire file
+ return size;
+ }
- if ( size == maxSize() ) {
- // no point doing quantizing for the entire file
- return size;
- }
+ invariant(size <= maxSize());
- invariant( size <= maxSize() );
+ // make sizes align with VM page size
+ int newSize = (size + 0xfff) & 0xfffff000;
- // make sizes align with VM page size
- int newSize = (size + 0xfff) & 0xfffff000;
+ if (newSize > maxSize()) {
+ return maxSize();
+ }
- if ( newSize > maxSize() ) {
- return maxSize();
- }
+ if (newSize < minSize()) {
+ return minSize();
+ }
- if ( newSize < minSize() ) {
- return minSize();
- }
+ return newSize;
+}
- return newSize;
+int ExtentManager::followupSize(int len, int lastExtentLen) const {
+ invariant(len < maxSize());
+ int x = initialSize(len);
+ // changed from 1.20 to 1.35 in v2.1.x to get to larger extent size faster
+ int y = (int)(lastExtentLen < 4000000 ? lastExtentLen * 4.0 : lastExtentLen * 1.35);
+ int sz = y > x ? y : x;
+
+ if (sz < lastExtentLen) {
+ // this means there was an int overflow
+ // so we should turn it into maxSize
+ return maxSize();
+ } else if (sz > maxSize()) {
+ return maxSize();
}
- int ExtentManager::followupSize( int len, int lastExtentLen ) const {
- invariant( len < maxSize() );
- int x = initialSize(len);
- // changed from 1.20 to 1.35 in v2.1.x to get to larger extent size faster
- int y = (int) (lastExtentLen < 4000000 ? lastExtentLen * 4.0 : lastExtentLen * 1.35);
- int sz = y > x ? y : x;
-
- if ( sz < lastExtentLen ) {
- // this means there was an int overflow
- // so we should turn it into maxSize
- return maxSize();
- }
- else if ( sz > maxSize() ) {
- return maxSize();
- }
-
- sz = quantizeExtentSize( sz );
- verify( sz >= len );
-
- return sz;
- }
+ sz = quantizeExtentSize(sz);
+ verify(sz >= len);
- int ExtentManager::initialSize( int len ) const {
- invariant( len <= maxSize() );
+ return sz;
+}
- long long sz = len * 16;
- if ( len < 1000 )
- sz = len * 64;
+int ExtentManager::initialSize(int len) const {
+ invariant(len <= maxSize());
- if ( sz >= maxSize() )
- return maxSize();
+ long long sz = len * 16;
+ if (len < 1000)
+ sz = len * 64;
- if ( sz <= minSize() )
- return minSize();
+ if (sz >= maxSize())
+ return maxSize();
- int z = ExtentManager::quantizeExtentSize( sz );
- verify( z >= len );
- return z;
- }
+ if (sz <= minSize())
+ return minSize();
+
+ int z = ExtentManager::quantizeExtentSize(sz);
+ verify(z >= len);
+ return z;
+}
}