Ming-Hung Tsai
955e11bc28
[block-cache] fix potential file descriptor leak
...
Encapsulate file descriptor into an object, to ensure that an fd will be
closed properly while exception raised, e.g., the block_cache throws
exception during the block_manager's construction.
2020-02-23 15:41:16 +08:00
Joe Thornber
209af19a02
[block manager] Don't allow the cache to be bigger than the block dev.
2017-07-24 15:28:23 +01:00
Ming-Hung Tsai
b7d418131d
Spin-off syscall-related file operations ( #78 )
...
* [file_utils] spin-off syscall-related file operations
1. Eliminate the potential circular dependency between
persistent-data/block.h and persistent-data/file_utils.h,
if the former one wants to include the latter.
2. Avoid namespace pollution by removing the "using namespace std"
declaration in block.tcc.
3. Correct the header hierarchy: base/xml_utils.h now no longer
depends on the higher-level persistent-data/file_utils.h
* [file_utils] support block files in get_file_length()
2017-04-29 18:51:52 +01:00
Joe Thornber
73ae456175
[persistent-data/block] ::exit() if write_ref drops below zero
...
We were throwing before, which obviously isn't allowed in a destructor.
2017-03-13 13:18:44 +00:00
Joe Thornber
b77ba14a2a
[block] Use the definition of SECTOR_SHIFT from block-cache
2016-06-14 16:28:14 +01:00
Joe Thornber
59a622670c
[thin_show_duplicates] wip
2015-08-19 12:32:57 +01:00
Joe Thornber
8fab56680c
[all tools] Improve the error message if opening the metadata fails.
...
Remind the admin that you shouldn't run the tools on live data.
2015-08-13 12:57:07 +01:00
Joe Thornber
642ae6e7c2
Tools now open the metadata device in O_EXCL mode.
...
An attempt to stop people running the tools on active metadata.
2015-07-07 13:47:00 +01:00
Joe Thornber
25b4b526f4
Introduce error_string() as a portable replacement for strerror_r()
2015-01-16 12:54:09 +00:00
Joe Thornber
930cc9d412
[block-manager] Superblocks weren't being marked as DIRTY
...
Gulp
2014-08-21 14:25:02 +01:00
Joe Thornber
0d3942cae8
[block-manager] ensure the superblock cannot be taken concurrently with any other lock.
2014-08-21 12:18:05 +01:00
Joe Thornber
6f804cab24
[block_manager] Track the number of superblocks, throw an exception if someone tries to open two a once.
2014-08-21 11:17:20 +01:00
Joe Thornber
f06a2673c5
wip
2014-07-29 11:34:26 +01:00
Joe Thornber
840be1b6c9
wip
2014-07-28 14:13:28 +01:00
Joe Thornber
ab6d31f136
fluff
2014-07-25 17:53:37 +01:00
Joe Thornber
ecb6bee2b2
prefetch btree nodes when walking a tree
2014-07-25 16:32:59 +01:00
Joe Thornber
11469a2fda
Beginning to work
2014-07-25 16:14:24 +01:00
Joe Thornber
7e870ea5a6
start removing block_manager<>::block
2014-07-25 14:46:51 +01:00
Joe Thornber
b32908d5c2
work in progress
2014-07-25 10:35:04 +01:00
Joe Thornber
d517684c95
Initial code drop for merging block_cache
2014-07-22 16:41:39 +01:00
Joe Thornber
8531a2befa
[era] switch from bloom filters to writesets
2014-01-29 21:37:25 +00:00
Joe Thornber
e7816d2f43
[block] Open block files with O_DIRECT | O_SYNC.
...
Putting this back in. Dumping metadata snapshots fails without. So
there's more caching in the kernel than I expected.
2013-10-07 09:58:17 +01:00
Joe Thornber
77286e0bc7
Take out some 'typename's to support older versions of gcc (Heinz).
2013-08-15 10:35:07 +01:00
Joe Thornber
4deb1751a6
stop using O_DIRECT until the cach does async io
2013-07-09 16:52:31 +01:00
Joe Thornber
6706493304
Remove some global 'using namespace's
2013-05-28 13:48:10 +01:00
Joe Thornber
0dba0abe88
Bump up the nr of blocks in the cache from 64 to 1024.
2013-05-13 12:34:52 +01:00
Joe Thornber
a7c0b0c39b
[block, lock_checker] add an is_locked() method for use in unit tests.
2013-04-29 12:31:30 +01:00
Joe Thornber
b1e0ca2207
[block] make sure we can change validators
2013-04-26 15:54:15 +01:00
Joe Thornber
53ac7b8119
[block_manager] Allow people to change the validator for a block
2013-04-26 14:14:28 +01:00
Joe Thornber
0b4c359a63
[block manager] The dirty flag for blocks was never being cleared, causes redundant writes.
2013-04-26 13:18:24 +01:00
Joe Thornber
0455cfbf13
[block] use lseek to size a new block file rather than fallocate.
...
Which sadly returned operation not supported for some reason.
2013-01-15 04:06:57 +00:00
Joe Thornber
fb1ad01e19
Add a CREATE mode to the block_io class.
2013-01-15 03:23:55 +00:00
Joe Thornber
779f8e1fd4
Introduce a mode enum to block_io<>
2013-01-11 20:16:40 +00:00
Joe Thornber
1cc6737c26
Remove the typedef block_ptr and change code to use block::ptr instead
2013-01-10 11:02:06 +00:00
Joe Thornber
3e39e8bfeb
A big raft of changes to the unit-tests
2013-01-09 20:24:11 +00:00
Joe Thornber
26b97908bd
Add superblock_lock method to lock_tracker.
2013-01-07 15:30:51 +00:00
Joe Thornber
2a427ca925
Add persistent_data/lock_tracker for more sanity checking.
2013-01-07 14:59:41 +00:00
Joe Thornber
282e98a6b1
Move source into separate sub directories.
2013-01-02 12:55:41 +00:00