34 #include "mongo/base/disallow_copying.h" 35 #include "mongo/db/client.h" 37 #include "mongo/db/operation_context.h" 74 dassert(opCtx == cc().getOperationContext() || !cc().getOperationContext());
103 dassert(opCtx == cc().getOperationContext() || !cc().getOperationContext());
117 virtual void flush(OperationContext*
opCtx) = 0;
136 static void forEach(OperationContext*
opCtx, F fun);
142 static std::set<MongoFile*>& getAllFiles();
144 static int flushAll(OperationContext*
opCtx,
bool sync);
145 static void closeAllFiles(OperationContext*
opCtx, std::stringstream& message);
154 void setFilename(OperationContext*
opCtx,
const std::string& fn);
156 virtual uint64_t getUniqueId()
const = 0;
160 static int _flushAll(OperationContext* opCtx,
bool sync);
167 virtual void close(OperationContext* opCtx) = 0;
168 virtual void flush(
bool sync) = 0;
178 virtual bool isClosed() = 0;
180 void created(OperationContext* opCtx);
190 void destroyed(OperationContext* opCtx);
192 virtual unsigned long long length()
const = 0;
195 return _options & option;
214 MongoFile* findByPath(
const std::string& path)
const;
223 if (views.size() == 0)
225 verify(views.size() == 1);
237 virtual void close(OperationContext* opCtx);
242 void* map(OperationContext* opCtx,
const char* filename);
248 void* create(OperationContext* opCtx,
249 const std::string& filename,
250 unsigned long long len,
253 void flush(
bool sync);
255 virtual bool isClosed();
273 void* createPrivateMap();
280 return static_cast<int>(totalMappedLength.load() / 1024 / 1024);
284 static void updateLength(
const char* filename,
unsigned long long&
length);
287 HANDLE maphandle = 0;
289 unsigned long long len = 0u;
300 stdx::mutex _flushMutex;
308 void* map(OperationContext* opCtx,
const char* filename,
unsigned long long& length);
321 for (std::set<MongoFile*>::const_iterator i = mmfiles.begin(); i != mmfiles.end(); i++)
Advice
Definition: mmap.h:55
look up a MMF by filename.
Definition: mmap.h:205
std::vector< void * > views
Definition: mmap.h:288
unsigned long long length() const
Definition: mmap.h:262
static unsigned getEra()
era changes anytime memory maps come and go.
Definition: mmap.h:91
static void forEach(OperationContext *opCtx, F fun)
p is called from within a mutex that MongoFile uses.
Definition: mmap.h:318
MongoFileFinder(OperationContext *opCtx)
Definition: mmap.h:209
bool isExclusivelyLocked(Locker *locker)
Definition: d_concurrency.cpp:131
size_t length
Definition: record_store_v1_base.cpp:852
Options
Definition: mmap.h:120
~MAdvise()
Definition: mmap_posix.cpp:158
virtual uint64_t getUniqueId() const
Definition: mmap.h:275
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
std::string _filename
Definition: mmap.h:159
static void assertExclusivelyLocked(OperationContext *opCtx)
Definition: mmap.h:77
static int totalMappedLengthInMB()
Definition: mmap.h:279
static AtomicUInt64 totalMappedLength
Definition: mmap.h:290
static void assertAtLeastReadLocked(OperationContext *opCtx)
Definition: mmap.h:81
HANDLE getFd() const
Definition: mmap.h:265
virtual bool isDurableMappedFile()
Definition: mmap.h:147
virtual ~Flushable()
Definition: mmap.h:116
virtual void * viewForFlushing()
Definition: mmap.h:222
std::underlying_type< Options >::type OptionSet
Definition: mmap.h:127
int HANDLE
Definition: mmap.h:42
bool isAtLeastReadLocked(Locker *locker)
Definition: d_concurrency.cpp:135
const uint64_t _uniqueId
Definition: mmap.h:291
LockMongoFilesExclusive(OperationContext *opCtx)
Definition: mmap.h:100
Lock::ExclusiveLock lk
Definition: mmap.h:97
const OptionSet _options
Definition: mmap.h:161
bool isOptionSet(Options option) const
Definition: mmap.h:194
void minOSPageSizeBytesTest(size_t minOSPageSizeBytes)
Definition: mmap.cpp:59
MONGO_DISALLOW_COPYING(MAdvise)
Obtains a ResourceMutex for shared/non-exclusive use.
Definition: d_concurrency.h:163
unsigned _len
Definition: mmap.h:60
static void remapPrivateView(OperationContext *opCtx, double fraction)
Remaps the private view from the shared view so that it does not consume too much copy-on-write/swap ...
Definition: dur.cpp:631
static Lock::ResourceMutex mmmutex
Definition: mmap.h:66
Flushable has to fail nicely if the underlying object gets killed.
Definition: mmap.h:114
void * _p
Definition: mmap.h:59
std::size_t getMinOSPageSizeBytes()
Definition: mmap_posix.cpp:72
static unsigned era
Definition: mmap.h:67
OperationContext Database StringData BSONObj options
Definition: database_impl.cpp:949
void dataSyncFailedHandler()
Definition: mmap.cpp:246
For use as general mutex or readers/writers lock, outside the general multi-granularity model...
Definition: d_concurrency.h:121
LockMongoFilesShared(OperationContext *opCtx)
Definition: mmap.h:72
Lock::SharedLock lk
Definition: mmap.h:69
LockMongoFilesShared _lk
Definition: mmap.h:217
long shortLength() const
Definition: mmap.h:259
std::string filename() const
Definition: mmap.h:151
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
static std::set< MongoFile * > & getAllFiles()
note: you need to be in mmmutex when using this.
Definition: mmap.cpp:144
MAdvise(void *p, unsigned len, Advice a)
Definition: mmap_posix.cpp:139
Obtains a ResourceMutex for exclusive use.
Definition: d_concurrency.h:152