summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-07-16search for null from start of dirent, not endkill-alloc-btree-hackKent Overstreet
2018-07-16add a mount opt to kill alloc btreeKent Overstreet
2018-07-16bcachefs: Fix a bug when dropping invalid btree keysKent Overstreet
There was a missing set_btree_bset_end() call, leading to popped assertions later. Also add a quick and dirty debug option for injecting invalid keys. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2018-07-16bcachefs: Fix __bch2_strtohKent Overstreet
when looking up the unit, it was matching against the trailing null in si_units Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2018-07-14bcachefs: work around an older xattr bugKent Overstreet
similar to the dirent bug - making struct bch_dirent and bch_xattr 8 byte aligned changed sizeof, and size calculations that used sizeof(bch_xattr)/sizeof(bch_dirent) wrong
2018-07-12bcachefs: acl code improvementsKent Overstreet
Fewer allocations, and to_disk/from_disk are considerably less sketchy now Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2018-07-12bcachefs: work around an older dirent bugKent Overstreet
2018-07-10bcachefs: fix BTREE_INSERT_NOUNLOCKKent Overstreet
btree_node_merge -> get_sibling -> btree_node_lock could drop locks, when using linked iterators
2018-07-06bcachefs: fix a btree iter error pathKent Overstreet
2018-07-01bcachefs: refactor bch2_btree_node_prefetch()Kent Overstreet
2018-07-01bcachefs: bch2_btree_iter_traverse() no longer has to go up for intent locksKent Overstreet
2018-07-01bcachefs: don't expose extent whiteouts outside of btree codeKent Overstreet
2018-06-30bcachefs: btree_iter_prev()Kent Overstreet
2018-06-30bcachefs: kill BTREE_ITER_ENDKent Overstreet
prep work for btree_iter_prev()
2018-06-30bcachefs: BTREE_ITER_TYPEKent Overstreet
also factor out bch2_btree_iter_checks()
2018-06-30bcachefs: refactor bch2_btree_node_get_sibling() a bitKent Overstreet
2018-06-30bcachefs: improve btree_node_iter_prev()Kent Overstreet
2018-06-30bcachefs: improve bkey_prev()Kent Overstreet
2018-06-30bcachefs: fix __btree_node_iter_used()Kent Overstreet
2018-06-30bcachefs: bch2_btree_iter_set_pos() can now go backwardsKent Overstreet
2018-06-30bcachefs: More btree unit testsKent Overstreet
2018-06-30bcachefs: fix btree reserve calculationsKent Overstreet
2018-06-28fixup! bcachefs: fix an assertionKent Overstreet
2018-06-27bcachefs: fix an assertionKent Overstreet
bch2_btree_iter_peek_slot() -> bch2_bkey_debugcheck() was popping, because __bch2_btree_iter_peek_slot() was using KEY_TYPE_DELETED for an extent hole
2018-06-27bcachefs: delete some debug codeKent Overstreet
2018-06-27bcachefs: add missing includeKent Overstreet
2018-06-27bcachefs: BCH_NAME_MAXKent Overstreet
also fix some dirent bugs
2018-06-27bcachefs: optimize __bch2_btree_iter_relock()Kent Overstreet
bch2_btree_node_relock() and __bch2_btree_iter_relock() are now only used for relocking, not upgrading or downgrading locks, so we can split out bch2_btree_node_upgrade() and slim down the fast path.
2018-06-27bcachefs: btree_node_lock_increment()Kent Overstreet
2018-06-27bcachefs: btree_iter_get_locks()Kent Overstreet
2018-06-27bcachefs: bch2_btree_iter_upgrade()/downgrade()Kent Overstreet
Replaces bch2_btree_iter_set_locks_want() - also add more assertions Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2018-06-27bcachefs: Fix a minor memory leakKent Overstreet
2018-06-12bcachefs: Fix a bug in the str_hash codeKent Overstreet
fixes b0f3e786995cb3b12975503f963e469db5a4f09b
2018-06-11bcachefs: bch_sb_field_cleanKent Overstreet
Implement a superblock field so we don't have to read the journal after a clean shutdown (and more importantly, we can verify what we find in the journal after a clean shutdown) Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2018-06-11bcachefs: Make some improvements to the journal shutdown codeKent Overstreet
2018-06-11bcachefs: split out recovery.cKent Overstreet
2018-06-11bcachefs: btree gc refactoringKent Overstreet
2018-06-11bcachefs: fix a btree iter traverse error pathKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2018-06-07bcachefs: btree perf/unit testsKent Overstreet
The sysfs interface is crap and will be changed Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2018-06-05bcachefs: fix missing bch_crc_bytes entriesKent Overstreet
2018-06-05bcachefs: add a discard mount optionKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2018-06-03bcachefs: fix a minor fsync bugKent Overstreet
2018-06-03bcachefs: drop locks when needed in bch2_btree_node_get_sibling()Kent Overstreet
2018-06-03bcachefs: btree iter refactoringKent Overstreet
2018-06-03bcachefs: fix a fun truncate bugKent Overstreet
truncate was leaving extents past the end of i_size. Turns out, it was doing so because it thought it wasn't shrinking the file when it was, and it thought it wasn't shrinking because i_size had gotten screwed up - the in memory i_size was smaller than the on disk i_size, which is never supposed to happen. Also turns out, the thing that was screwing up i_size was truncate - specifically, the error path when the filemap_write_and_wait_range() call fails. Besides fixing truncate itself, this patch also fixes and makes rigorous a lot of the locking pertaining to i_size and ei_inode (the cached on disk inode in bch_inode_info). Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2018-06-03bcachefs: add a journal_seq_verify debug optionKent Overstreet
2018-06-03bcachefs: implement BTREE_INSERT_NOUNLOCKKent Overstreet
BTREE_INSERT_NOUNLOCK means after a sucessful btree update, do not drop any locks (e.g. while merging nodes). This is going to be used to fix some locking primarily related to bi_size in bch_inode_info.
2018-06-03bcachefs: use BTREE_ITER_END more consistentlyKent Overstreet
2018-06-02bcachefs: better bch2_strtoh()Kent Overstreet
2018-06-01bcachefs: Fix a spurious error in fsckKent Overstreet
If fsck finds an unreachable directory, it could just be because we crashed between deleting the dirent and deleting the inode, since that isn't done atomically yet - it's only a real error if the directory isn't empty