xfs: remove duplicate code in xlog_cil_insert_format_items
authorChristoph Hellwig <hch@infradead.org>
Fri, 13 Dec 2013 00:00:42 +0000 (11:00 +1100)
committerDave Chinner <david@fromorbit.com>
Fri, 13 Dec 2013 00:00:42 +0000 (11:00 +1100)
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>
fs/xfs/xfs_log_cil.c

index 5eb51fc..0a7a8ce 100644 (file)
@@ -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;