35 #include <boost/filesystem/path.hpp> 37 #include "mongo/base/status.h" 38 #include "mongo/base/string_data.h" 43 #include "mongo/platform/atomic_word.h" 44 #include "mongo/stdx/mutex.h" 49 class DataFileVersion;
50 class MmapV1RecordHeader;
51 class OperationContext;
80 virtual std::unique_ptr<ExtentManager>
create(StringData dbname,
82 bool directoryPerDB)
final;
122 void freeListStats(OperationContext* opCtx,
int* numExtents, int64_t* totalFreeSizeBytes)
const;
176 DataFile*
_addAFile(OperationContext* opCtx,
int sizeNeeded,
bool preallocateNextFile);
194 OperationContext* opCtx,
int fileNo,
DataFile* f,
int size,
bool enforceQuota);
196 boost::filesystem::path
_fileName(
int n)
const;
222 void close(OperationContext* opCtx);
229 invariant(n >= 0 && n < size());
boost::filesystem::path _fileName(int n) const
Definition: mmap_v1_extent_manager.cpp:131
const std::string _dbname
Definition: mmap_v1_extent_manager.h:200
bool empty() const
Returns true iff no files were added.
Definition: mmap_v1_extent_manager.h:236
MmapV1RecordHeader * _recordForV1(const DiskLoc &loc) const
Shared record retrieval logic used by the public recordForV1() and likelyInPhysicalMem() above...
Definition: mmap_v1_extent_manager.cpp:291
DiskLoc _allocFromFreeList(OperationContext *opCtx, int approxSize, bool capped)
will return NULL if nothing suitable in free list
Definition: mmap_v1_extent_manager.cpp:418
Definition: extent_manager.h:70
virtual std::unique_ptr< ExtentManager > create(StringData dbname, StringData path, bool directoryPerDB) final
Definition: mmap_v1_extent_manager.cpp:124
std::unique_ptr< RecordFetcher > recordNeedsFetch(const DiskLoc &loc) const
The extent manager tracks accesses to DiskLocs.
Definition: mmap_v1_extent_manager.cpp:309
RecordAccessTracker * _recordAccessTracker
Definition: mmap_v1_extent_manager.h:207
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
long long fileSize() const
Definition: mmap_v1_extent_manager.cpp:282
void _setFreeListEnd(OperationContext *opCtx, DiskLoc loc)
Definition: mmap_v1_extent_manager.cpp:594
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
void freeExtents(OperationContext *opCtx, DiskLoc firstExt, DiskLoc lastExt)
firstExt has to be == lastExt or a chain
Definition: mmap_v1_extent_manager.cpp:546
Definition: extent_manager.h:181
Definition: data_file.h:43
int size() const
Returns number of files added to the array.
Definition: mmap_v1_extent_manager.h:243
const bool _directoryPerDB
Definition: mmap_v1_extent_manager.h:202
HintType
Definition: extent_manager.h:180
represents a disk location/offset on disk in a database.
Definition: diskloc.h:53
DiskLoc _createExtentInFile(OperationContext *opCtx, int fileNo, DataFile *f, int size, bool enforceQuota)
Definition: mmap_v1_extent_manager.cpp:365
int numFiles() const
Definition: mmap_v1_extent_manager.cpp:278
Uniquely identifies a lockable resource.
Definition: lock_manager_defs.h:176
stdx::mutex _writersMutex
Definition: mmap_v1_extent_manager.h:251
MmapV1RecordHeader * recordForV1(const DiskLoc &loc) const
Definition: mmap_v1_extent_manager.cpp:303
ExtentManager basics.
Definition: mmap_v1_extent_manager.h:75
Definition: mmap_v1_extent_manager.h:79
virtual CacheHint * cacheHint(const DiskLoc &extentLoc, const HintType &hint)
Tell the system that for this extent, it will have this kind of disk access.
Definition: mmap_v1_extent_manager.cpp:631
DataFile * _addAFile(OperationContext *opCtx, int sizeNeeded, bool preallocateNextFile)
Definition: mmap_v1_extent_manager.cpp:221
void close(OperationContext *opCtx)
Must be called before destruction.
Definition: mmap_v1_extent_manager.h:95
AtomicInt32 _size
Definition: mmap_v1_extent_manager.h:252
DiskLoc extentLocForV1(const DiskLoc &loc) const
Definition: mmap_v1_extent_manager.cpp:330
const DataFile * getOpenFile(int n) const final
Definition: mmap_v1_extent_manager.h:158
void freeListStats(OperationContext *opCtx, int *numExtents, int64_t *totalFreeSizeBytes) const
Retrieve statistics on the the free list managed by this ExtentManger.
Definition: mmap_v1_extent_manager.cpp:600
virtual int maxSize() const
Definition: mmap_v1_extent_manager.cpp:361
FilesArray()
Definition: mmap_v1_extent_manager.h:216
void _setFreeListStart(OperationContext *opCtx, DiskLoc loc)
Definition: mmap_v1_extent_manager.cpp:588
DiskLoc _getFreeListEnd() const
Definition: mmap_v1_extent_manager.cpp:581
Extent * extentForV1(const DiskLoc &loc) const
Definition: mmap_v1_extent_manager.cpp:335
void setFileFormat(OperationContext *opCtx, DataFileVersion newVersion) final
Definition: mmap_v1_extent_manager.cpp:667
Simple wrapper around an array object to allow append-only modification of the array, as well as concurrent read-accesses.
Definition: mmap_v1_extent_manager.h:214
DiskLoc allocateExtent(OperationContext *opCtx, bool capped, int size, bool enforceQuota)
Definition: mmap_v1_extent_manager.cpp:504
void freeExtent(OperationContext *opCtx, DiskLoc extent)
frees a single extent ignores all fields in the Extent except: magic, myLoc, length ...
Definition: mmap_v1_extent_manager.cpp:525
Used to implement likelyInPhysicalMemory() for the MMAP v1 storage engine.
Definition: record_access_tracker.h:49
Status init(OperationContext *opCtx)
opens all current files, not thread safe
Definition: mmap_v1_extent_manager.cpp:142
MmapV1ExtentManager(StringData dbname, StringData path, bool directoryPerDB)
Definition: mmap_v1_extent_manager.cpp:113
DataFile * operator[](int n) const
Returns file at location 'n' in the array, with 'n' less than number of files added.
Definition: mmap_v1_extent_manager.h:228
ExtentManager basics.
Definition: extent_manager.h:64
DiskLoc _createExtent(OperationContext *opCtx, int approxSize, bool enforceQuota)
Definition: mmap_v1_extent_manager.cpp:385
const DataFile * _getOpenFile(int fileId) const
Definition: mmap_v1_extent_manager.cpp:207
FilesArray _files
Definition: mmap_v1_extent_manager.h:256
DataFileVersion getFileFormat(OperationContext *opCtx) const final
Not thread safe, requires a database exclusive lock.
Definition: mmap_v1_extent_manager.cpp:659
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
const std::string _path
Definition: mmap_v1_extent_manager.h:201
Extent * getExtent(const DiskLoc &loc, bool doSanityCheck=true) const
Definition: mmap_v1_extent_manager.cpp:340
Definition: data_file.h:196
MONGO_DISALLOW_COPYING(MmapV1ExtentManager)
DiskLoc _getFreeListStart() const
Definition: mmap_v1_extent_manager.cpp:574
const ResourceId _rid
Definition: mmap_v1_extent_manager.h:203
void close(OperationContext *opCtx)
Must be called before destruction.
Definition: mmap_v1_extent_manager.cpp:644