diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-04-27 23:48:33 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:10:01 -0400 |
commit | 34dfa5db191fe227c0c413624b7387f1f1804029 (patch) | |
tree | 44af501b23067b94c95d40191829a88917f7c08e /fs/bcachefs/io.c | |
parent | d67a16df9c5e03e3e4a672bd6547812baad0bf2c (diff) | |
download | lwn-34dfa5db191fe227c0c413624b7387f1f1804029.tar.gz lwn-34dfa5db191fe227c0c413624b7387f1f1804029.zip |
bcachefs: bch2_bkey_get_mut() improvements
- bch2_bkey_get_mut() now handles types increasing in size, allocating
a buffer for the type's current size when necessary
- bch2_bkey_make_mut_typed()
- bch2_bkey_get_mut() now initializes the iterator, like
bch2_bkey_get_iter()
Also, refactor so that most of the code is in functions - now macros are
only used for wrappers.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/io.c')
-rw-r--r-- | fs/bcachefs/io.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/fs/bcachefs/io.c b/fs/bcachefs/io.c index 01911db786f5..c0471a4144ff 100644 --- a/fs/bcachefs/io.c +++ b/fs/bcachefs/io.c @@ -257,15 +257,14 @@ static inline int bch2_extent_update_i_size_sectors(struct btree_trans *trans, unsigned inode_update_flags = BTREE_UPDATE_NOJOURNAL; int ret; - bch2_trans_iter_init(trans, &iter, BTREE_ID_inodes, - SPOS(0, - extent_iter->pos.inode, - extent_iter->snapshot), - BTREE_ITER_INTENT|BTREE_ITER_CACHED); - k = bch2_bkey_get_mut(trans, &iter); + k = bch2_bkey_get_mut(trans, &iter, BTREE_ID_inodes, + SPOS(0, + extent_iter->pos.inode, + extent_iter->snapshot), + BTREE_ITER_CACHED); ret = PTR_ERR_OR_ZERO(k); if (unlikely(ret)) - goto err; + return ret; if (unlikely(k->k.type != KEY_TYPE_inode_v3)) { k = bch2_inode_to_v3(trans, k); |