mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 22:21:42 +00:00
xfs: remove duplicate code in xlog_cil_insert_format_items
Share code that was previously duplicated in two branches. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
f9b395a8ef
commit
9597df6b26
@ -254,29 +254,22 @@ xlog_cil_insert_format_items(
|
||||
*/
|
||||
*diff_iovecs -= lv->lv_niovecs;
|
||||
*diff_len -= lv->lv_buf_len;
|
||||
|
||||
/* Ensure the lv is set up according to ->iop_size */
|
||||
lv->lv_niovecs = niovecs;
|
||||
lv->lv_buf = (char *)lv + buf_size - nbytes;
|
||||
|
||||
lv->lv_buf_len = xlog_cil_lv_item_format(lip, lv);
|
||||
goto insert;
|
||||
} else {
|
||||
/* allocate new data chunk */
|
||||
lv = kmem_zalloc(buf_size, KM_SLEEP|KM_NOFS);
|
||||
lv->lv_item = lip;
|
||||
lv->lv_size = buf_size;
|
||||
if (ordered) {
|
||||
/* track as an ordered logvec */
|
||||
ASSERT(lip->li_lv == NULL);
|
||||
lv->lv_buf_len = XFS_LOG_VEC_ORDERED;
|
||||
goto insert;
|
||||
}
|
||||
lv->lv_iovecp = (struct xfs_log_iovec *)&lv[1];
|
||||
}
|
||||
|
||||
/* allocate new data chunk */
|
||||
lv = kmem_zalloc(buf_size, KM_SLEEP|KM_NOFS);
|
||||
lv->lv_item = lip;
|
||||
lv->lv_size = buf_size;
|
||||
/* Ensure the lv is set up according to ->iop_size */
|
||||
lv->lv_niovecs = niovecs;
|
||||
if (ordered) {
|
||||
/* track as an ordered logvec */
|
||||
ASSERT(lip->li_lv == NULL);
|
||||
lv->lv_buf_len = XFS_LOG_VEC_ORDERED;
|
||||
goto insert;
|
||||
}
|
||||
|
||||
/* The allocated iovec region lies beyond the log vector. */
|
||||
lv->lv_iovecp = (struct xfs_log_iovec *)&lv[1];
|
||||
|
||||
/* The allocated data region lies beyond the iovec region */
|
||||
lv->lv_buf = (char *)lv + buf_size - nbytes;
|
||||
|
Loading…
Reference in New Issue
Block a user