Storage Engine API
logfile.h
Go to the documentation of this file.
1 // @file logfile.h simple file log writing / journaling
2 
31 #pragma once
32 
33 #include <string>
34 
35 
36 namespace mongo {
37 
38 class LogFile {
39 public:
43  LogFile(const std::string& name, bool readwrite = false);
44 
46  ~LogFile();
47 
52  void synchronousAppend(const void* buf, size_t len);
53 
56  void writeAt(unsigned long long offset, const void* _bug, size_t _len);
57 
58  void readAt(unsigned long long offset, void* _buf, size_t _len);
59 
60  const std::string _name;
61 
62  void truncate(); // Removes extra data after current position
63 
64 private:
65  // Originally disks had a sector size of 512 bytes, after Advanced Format disks were deployed in
66  // 2011, the default minimium size became 4096.
67  // The direct io size is based on the physical disk sector, not the VM page size.
68  const size_t minDirectIOSizeBytes = 4096;
69 
70 private:
71 #if defined(_WIN32)
72  typedef HANDLE fd_type;
73 #else
74  typedef int fd_type;
75 #endif
76  fd_type _fd;
77  bool _direct; // are we using direct I/O
78 
79  // Block size, in case of direct I/O we need to test alignment against the page size,
80  // which can be different than 4kB.
81  size_t _blkSize;
82 };
83 }
size_t _blkSize
Definition: logfile.h:81
void readAt(unsigned long long offset, void *_buf, size_t _len)
Definition: logfile.cpp:224
Definition: logfile.h:38
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
LogFile(const std::string &name, bool readwrite=false)
create the file and open.
Definition: logfile.cpp:153
const std::string _name
Definition: logfile.h:60
bool _direct
Definition: logfile.h:77
void writeAt(unsigned long long offset, const void *_bug, size_t _len)
write at specified offset.
Definition: logfile.cpp:211
int HANDLE
Definition: mmap.h:42
void truncate()
Definition: logfile.cpp:199
fd_type _fd
Definition: logfile.h:76
~LogFile()
closes
Definition: logfile.cpp:193
int fd_type
Definition: logfile.h:74
void synchronousAppend(const void *buf, size_t len)
append to file.
Definition: logfile.cpp:230
Database *const OperationContext *const const StringData name
Definition: database_impl.cpp:82
const size_t minDirectIOSizeBytes
Definition: logfile.h:68