[XFS] implement generic xfs_btree_split
Make the btree split code generic. Based on a patch from David Chinner with lots of changes to follow the original btree implementations more closely. While this loses some of the generic helper routines for inserting/moving/removing records it also solves some of the one off bugs in the original code and makes it easier to verify. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32198a Signed-off-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: Lachlan McIlroy <lachlan@sgi.com> Signed-off-by: Bill O'Donnell <billodo@sgi.com> Signed-off-by: David Chinner <david@fromorbit.com>
This commit is contained in:

committed by
Lachlan McIlroy

parent
687b890a18
commit
f5eb8e7ca5
@@ -187,6 +187,12 @@ struct xfs_btree_ops {
|
||||
/* cursor operations */
|
||||
struct xfs_btree_cur *(*dup_cursor)(struct xfs_btree_cur *);
|
||||
|
||||
/* block allocation / freeing */
|
||||
int (*alloc_block)(struct xfs_btree_cur *cur,
|
||||
union xfs_btree_ptr *start_bno,
|
||||
union xfs_btree_ptr *new_bno,
|
||||
int length, int *stat);
|
||||
|
||||
/* update last record information */
|
||||
void (*update_lastrec)(struct xfs_btree_cur *cur,
|
||||
struct xfs_btree_block *block,
|
||||
@@ -535,6 +541,8 @@ int xfs_btree_updkey(struct xfs_btree_cur *, union xfs_btree_key *, int);
|
||||
int xfs_btree_update(struct xfs_btree_cur *, union xfs_btree_rec *);
|
||||
int xfs_btree_lshift(struct xfs_btree_cur *, int, int *);
|
||||
int xfs_btree_rshift(struct xfs_btree_cur *, int, int *);
|
||||
int xfs_btree_split(struct xfs_btree_cur *, int, union xfs_btree_ptr *,
|
||||
union xfs_btree_key *, struct xfs_btree_cur **, int *);
|
||||
|
||||
/*
|
||||
* Helpers.
|
||||
|
Reference in New Issue
Block a user