Commit Graph

39 Commits

Author SHA1 Message Date
Ming-Hung Tsai cb0a77e2ae [block-manager] remove unused copy-assignment operator
block_cache::block is non-copyable, and so are the containing structures.
2020-02-29 00:29:01 +08:00
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