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;
167 virtual void close(OperationContext*
opCtx) = 0;
168 virtual void flush(
bool sync) = 0;
192 virtual unsigned long long length()
const = 0;
223 if (
views.size() == 0)
225 verify(
views.size() == 1);
250 unsigned long long len,
253 void flush(
bool sync);
289 unsigned long long len = 0u;
300 stdx::mutex _flushMutex;
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 len
Definition: mmap.h:289
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
void setFilename(OperationContext *opCtx, const std::string &fn)
Definition: mmap.cpp:231
MongoFile * findByPath(const std::string &path) const
Definition: mmap.cpp:240
MongoFileFinder(OperationContext *opCtx)
Definition: mmap.h:209
bool isExclusivelyLocked(Locker *locker)
Definition: d_concurrency.cpp:131
Options
Definition: mmap.h:120
~MAdvise()
Definition: mmap_posix.cpp:158
static void updateLength(const char *filename, unsigned long long &length)
Definition: mmap.cpp:108
virtual void close(OperationContext *opCtx)
Callers must be holding a LockMongoFilesExclusive.
Definition: mmap_posix.cpp:83
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
MONGO_DISALLOW_COPYING(MongoFileFinder)
static int totalMappedLengthInMB()
Definition: mmap.h:279
void * create(OperationContext *opCtx, const std::string &filename, unsigned long long len, bool zero)
uasserts if file exists.
Definition: mmap.cpp:91
static AtomicUInt64 totalMappedLength
Definition: mmap.h:290
void flush(bool sync)
Definition: mmap_posix.cpp:269
virtual void flush(OperationContext *opCtx)=0
static void assertAtLeastReadLocked(OperationContext *opCtx)
Definition: mmap.h:81
static int _flushAll(OperationContext *opCtx, bool sync)
Definition: mmap.cpp:184
HANDLE getFd() const
Definition: mmap.h:265
virtual bool isDurableMappedFile()
Definition: mmap.h:147
virtual ~Flushable()
Definition: mmap.h:116
static void closeAllFiles(OperationContext *opCtx, std::stringstream &message)
Definition: mmap.cpp:160
virtual void * viewForFlushing()
Definition: mmap.h:222
virtual unsigned long long length() const =0
std::underlying_type< Options >::type OptionSet
Definition: mmap.h:127
int HANDLE
Definition: mmap.h:42
virtual bool isClosed()
Returns true iff the file is closed.
Definition: mmap_posix.cpp:283
MemoryMappedFile(OperationContext *opCtx, OptionSet options=NONE)
Definition: mmap.cpp:72
bool isAtLeastReadLocked(Locker *locker)
Definition: d_concurrency.cpp:135
virtual ~MemoryMappedFile()
Definition: mmap.cpp:77
const uint64_t _uniqueId
Definition: mmap.h:291
LockMongoFilesExclusive(OperationContext *opCtx)
Definition: mmap.h:100
Lock::ExclusiveLock lk
Definition: mmap.h:97
virtual uint64_t getUniqueId() const =0
const OptionSet _options
Definition: mmap.h:161
bool isOptionSet(Options option) const
Definition: mmap.h:194
void created(OperationContext *opCtx)
Definition: mmap.cpp:223
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 Lock::ResourceMutex mmmutex
Definition: mmap.h:66
Flushable has to fail nicely if the underlying object gets killed.
Definition: mmap.h:114
void destroyed(OperationContext *opCtx)
Implementations may assume this is called from within LockMongoFilesExclusive.
Definition: mmap.cpp:153
void * _p
Definition: mmap.h:59
MONGO_DISALLOW_COPYING(MongoFile)
std::size_t getMinOSPageSizeBytes()
Definition: mmap_posix.cpp:72
virtual void flush(bool sync)=0
virtual Flushable * prepareFlush()
returns a thread safe object that you can call flush on Flushable has to fail nicely if the underlyin...
Definition: mmap_posix.cpp:329
static int flushAll(OperationContext *opCtx, bool sync)
Definition: mmap.cpp:180
HANDLE maphandle
Definition: mmap.h:287
static unsigned era
Definition: mmap.h:67
void dataSyncFailedHandler()
Definition: mmap.cpp:246
virtual bool isClosed()=0
Returns true iff the file is closed.
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
void * createPrivateMap()
Creates a new view with the specified properties.
Definition: mmap_posix.cpp:226
virtual void close(OperationContext *opCtx)=0
Implementations may assume this is called from within LockMongoFilesExclusive.
LockMongoFilesShared _lk
Definition: mmap.h:217
long shortLength() const
Definition: mmap.h:259
void * map(OperationContext *opCtx, const char *filename)
uasserts if file doesn't exist.
Definition: mmap.cpp:116
MongoFile(OptionSet options)
Definition: mmap.cpp:137
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
void * remapPrivateView(OperationContext *opCtx, void *oldPrivateAddr)
Close the current private view and open a new replacement.
Definition: mmap_posix.cpp:247
virtual Flushable * prepareFlush()=0
returns a thread safe object that you can call flush on Flushable has to fail nicely if the underlyin...
MAdvise(void *p, unsigned len, Advice a)
Definition: mmap_posix.cpp:139
virtual ~MongoFile()=default
Obtains a ResourceMutex for exclusive use.
Definition: d_concurrency.h:152
HANDLE fd
Definition: mmap.h:286