And fold the now otherwise unused xfs_bmap_del_free into xfs_bmap_cancel. Signed-off-by: Christoph Hellwig <hch@xxxxxx> --- fs/xfs/xfs_bmap.c | 33 +++++++++------------------------ fs/xfs/xfs_bmap_util.c | 6 +----- fs/xfs/xfs_bmap_util.h | 3 --- fs/xfs/xfs_log_recover.c | 8 ++------ 4 files changed, 12 insertions(+), 38 deletions(-) diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 66bf92a..3a5383f 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -646,39 +646,24 @@ xfs_bmap_add_free( } /* - * Remove the entry "free" from the free item list. Prev points to the - * previous entry, unless "free" is the head of the list. - */ -void -xfs_bmap_del_free( - xfs_bmap_free_t *flist, /* free item list header */ - xfs_bmap_free_item_t *prev, /* previous item on list, if any */ - xfs_bmap_free_item_t *free) /* list item to be freed */ -{ - if (prev) - prev->xbfi_next = free->xbfi_next; - else - flist->xbf_first = free->xbfi_next; - flist->xbf_count--; - kmem_zone_free(xfs_bmap_free_item_zone, free); -} - -/* * Free up any items left in the list. */ void xfs_bmap_cancel( - xfs_bmap_free_t *flist) /* list of bmap_free_items */ + struct xfs_bmap_free *flist) { - xfs_bmap_free_item_t *free; /* free list item */ - xfs_bmap_free_item_t *next; + struct xfs_bmap_free_item *free; if (flist->xbf_count == 0) return; + ASSERT(flist->xbf_first != NULL); - for (free = flist->xbf_first; free; free = next) { - next = free->xbfi_next; - xfs_bmap_del_free(flist, NULL, free); + while ((free = flist->xbf_first)) { + flist->xbf_first = free->xbfi_next; + flist->xbf_count--; + + kmem_zone_free(xfs_bmap_free_item_zone, free); + } ASSERT(flist->xbf_count == 0); } diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index d90ce2c..268dbcf 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c @@ -139,11 +139,7 @@ xfs_bmap_finish( } efd = xfs_trans_log_efd(ntp, efi, flist); - - for (free = flist->xbf_first; free != NULL; free = next) { - next = free->xbfi_next; - xfs_bmap_del_free(flist, NULL, free); - } + xfs_bmap_cancel(flist); return 0; } diff --git a/fs/xfs/xfs_bmap_util.h b/fs/xfs/xfs_bmap_util.h index 900747b..54f81f8 100644 --- a/fs/xfs/xfs_bmap_util.h +++ b/fs/xfs/xfs_bmap_util.h @@ -80,9 +80,6 @@ int xfs_getbmap(struct xfs_inode *ip, struct getbmapx *bmv, xfs_bmap_format_t formatter, void *arg); /* functions in xfs_bmap.c that are only needed by xfs_bmap_util.c */ -void xfs_bmap_del_free(struct xfs_bmap_free *flist, - struct xfs_bmap_free_item *prev, - struct xfs_bmap_free_item *free); int xfs_bmap_extsize_align(struct xfs_mount *mp, struct xfs_bmbt_irec *gotp, struct xfs_bmbt_irec *prevp, xfs_extlen_t extsz, int rt, int eof, int delay, int convert, diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index b679a0b..e4b2de0 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -3617,7 +3617,7 @@ xlog_recover_process_efi( { struct xfs_trans *tp; struct xfs_efd_log_item *efdp; - struct xfs_bmap_free_item *free, *next; + struct xfs_bmap_free_item *free; xfs_fsblock_t startblock_fsb; int error = 0; @@ -3659,11 +3659,7 @@ xlog_recover_process_efi( } efdp = xfs_trans_log_efd(tp, efip, &efip->efi_flist); - - for (free = efip->efi_flist.xbf_first; free != NULL; free = next) { - next = free->xbfi_next; - xfs_bmap_del_free(&efip->efi_flist, NULL, free); - } + xfs_bmap_cancel(&efip->efi_flist); set_bit(XFS_EFI_RECOVERED, &efip->efi_flags); error = xfs_trans_commit(tp, 0); -- 1.7.10.4 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs