33 #include "mongo/bson/util/builder.h" 36 #include "mongo/platform/bits.h" 40 class OperationContext;
54 sb <<
"The data files have major version " <<
_major 55 <<
", but this version of mongod only supports version " <<
kCurrentMajor;
56 return {ErrorCodes::MustUpgrade, sb.str()};
60 if (unrecognizedMinorBits) {
62 sb <<
"The data files use features not recognized by this version of mongod; the" 63 " feature bits in positions [ ";
64 bool firstIteration =
true;
65 while (unrecognizedMinorBits) {
66 const int lowestSetBitPosition = countTrailingZeros64(unrecognizedMinorBits);
67 if (!firstIteration) {
70 sb << lowestSetBitPosition;
71 unrecognizedMinorBits ^= (1 << lowestSetBitPosition);
72 firstIteration =
false;
74 sb <<
" ] aren't recognized by this version of mongod";
76 return {ErrorCodes::MustUpgrade, sb.str()};
82 sb <<
"The data files have index plugin version " << indexCleanliness
85 return {ErrorCodes::MustUpgrade, sb.str()};
175 char reserved[8192 - 4 * 4 - 8 * 3];
179 enum { HeaderSize = 8192 };
185 void init(OperationContext*
opCtx,
int fileno,
int filelength,
const char* filename);
187 void checkUpgrade(OperationContext* opCtx);
190 return uninitialized() || (unusedLength == fileLength - HeaderSize - 16);
198 DataFile(OperationContext*
opCtx,
int fn) : _fileNo(fn), mmf(opCtx), _mb(NULL) {}
201 Status openExisting(OperationContext*
opCtx,
const char* filename);
204 void open(OperationContext* opCtx,
205 const char* filename,
206 int requestedDataSize = 0,
207 bool preallocateOnly =
false);
212 void close(OperationContext* opCtx) {
217 DiskLoc allocExtentArea(OperationContext* opCtx,
int size);
234 static int maxSize();
237 void flush(
bool sync);
243 void badOfs(
int)
const;
244 int _defaultSize()
const;
246 void grow(
DiskLoc dl,
int size);
uint32_t minorRaw() const
Definition: data_file.h:117
void * _mb
Definition: data_file.h:262
const int _fileNo
Definition: data_file.h:259
DurableMappedFile mmf
Definition: data_file.h:261
static const uint32_t kCurrentMajor
Definition: data_file.h:122
DataFileHeader * getHeader()
Definition: data_file.h:219
HANDLE getFd()
Definition: data_file.h:226
static const uint32_t kMayHave30Freelist
Definition: data_file.h:134
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
uint32_t _major
Definition: data_file.h:142
static const uint32_t kIndexes24AndNewer
Definition: data_file.h:132
bool mayHave30Freelist() const
Definition: data_file.h:100
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
unsigned long long length() const
Definition: data_file.h:229
Definition: data_file.h:43
static const uint32_t kUsedMinorFlagsMask
Definition: data_file.h:139
void setMayHave30Freelist()
Definition: data_file.h:103
DataFileHeader * header()
Definition: data_file.h:251
represents a disk location/offset on disk in a database.
Definition: diskloc.h:53
void close(OperationContext *opCtx)
Must be called before destruction.
Definition: data_file.h:212
static const uint32_t kIndexPluginMask
Definition: data_file.h:130
int HANDLE
Definition: mmap.h:42
std::shared_ptr< void > data
Definition: ephemeral_for_test_record_store_test.cpp:74
void setIs24IndexClean()
Definition: data_file.h:96
static const uint32_t kMayHaveCollationMetadata
Definition: data_file.h:136
ExtentManager basics.
Definition: mmap_v1_extent_manager.h:75
DurableMappedFile adds some layers atop memory mapped files - specifically our handling of private vi...
Definition: durable_mapped_file.h:47
Status isCompatibleWithCurrentCode() const
Definition: data_file.h:51
void setMayHaveCollationMetadata()
Definition: data_file.h:110
DataFileVersion(uint32_t major, uint32_t minor)
Definition: data_file.h:45
uint32_t majorRaw() const
Definition: data_file.h:114
static const uint32_t kIndexes22AndOlder
Definition: data_file.h:131
bool is24IndexClean() const
Definition: data_file.h:93
static DataFileVersion defaultForNewFiles()
Definition: data_file.h:47
DataFile(OperationContext *opCtx, int fn)
Definition: data_file.h:198
uint32_t _minor
Definition: data_file.h:143
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
bool getMayHaveCollationMetadata() const
Definition: data_file.h:107
Definition: data_file.h:196
char * p() const
Definition: data_file.h:248
const DataFileHeader * getHeader() const
Definition: data_file.h:222
const DataFileHeader * header() const
Definition: data_file.h:254