From f9b92420fbf2107b050d41f3cb304ac285ed3be0 Mon Sep 17 00:00:00 2001 From: Eliot Horowitz Date: Fri, 2 Nov 2012 15:42:17 -0400 Subject: [PATCH] SERVER-7543 - don't over allocate extents, just round --- jstests/capped_server7543.js | 11 +++++++++++ src/mongo/db/pdfile.cpp | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 jstests/capped_server7543.js diff --git a/jstests/capped_server7543.js b/jstests/capped_server7543.js new file mode 100644 index 0000000000000..514cd7964b299 --- /dev/null +++ b/jstests/capped_server7543.js @@ -0,0 +1,11 @@ + +mydb = db.getSisterDB( "capped_server7543" ); +mydb.dropDatabase(); + +mydb.createCollection( "foo" , { capped : true , size : 12288 } ); + +assert.eq( 12288, mydb.foo.stats().storageSize ); +assert.eq( 1, mydb.foo.validate(true).extentCount ); + +mydb.dropDatabase(); + diff --git a/src/mongo/db/pdfile.cpp b/src/mongo/db/pdfile.cpp index 34bc17999da19..dd8f4896cf909 100644 --- a/src/mongo/db/pdfile.cpp +++ b/src/mongo/db/pdfile.cpp @@ -242,8 +242,10 @@ namespace mongo { BSONElement e = options.getField("size"); if ( e.isNumber() ) { size = e.numberLong(); - size += 256; + size += 0xff; size &= 0xffffffffffffff00LL; + if ( size < Extent::minSize() ) + size = Extent::minSize(); } }