ceph: define ceph_writepages_osd_request()
authorAlex Elder <elder@inktank.com>
Thu, 14 Mar 2013 19:09:05 +0000 (14:09 -0500)
committerSage Weil <sage@inktank.com>
Thu, 2 May 2013 04:17:59 +0000 (21:17 -0700)
Mostly for readability, define ceph_writepages_osd_request() and
use it to allocate the osd request for ceph_writepages_start().

Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
fs/ceph/addr.c

index 681463d5459bf6e1515df1650a985512a1bf9a10..f2de9ec27db346b827013d20843b073ead0e4fb5 100644 (file)
@@ -654,6 +654,26 @@ static void alloc_page_vec(struct ceph_fs_client *fsc,
        }
 }
 
+static struct ceph_osd_request *
+ceph_writepages_osd_request(struct inode *inode, u64 offset, u64 *len,
+                               struct ceph_snap_context *snapc,
+                               int num_ops, struct ceph_osd_req_op *ops)
+{
+       struct ceph_fs_client *fsc;
+       struct ceph_inode_info *ci;
+       struct ceph_vino vino;
+
+       fsc = ceph_inode_to_client(inode);
+       ci = ceph_inode(inode);
+       vino = ceph_vino(inode);
+       /* BUG_ON(vino.snap != CEPH_NOSNAP); */
+
+       return ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout,
+                       vino, offset, len, num_ops, ops, CEPH_OSD_OP_WRITE,
+                       CEPH_OSD_FLAG_WRITE|CEPH_OSD_FLAG_ONDISK,
+                       snapc, ci->i_truncate_seq, ci->i_truncate_size, true);
+}
+
 /*
  * initiate async writeback
  */
@@ -835,16 +855,9 @@ get_more_pages:
                                /* prepare async write request */
                                offset = (u64) page_offset(page);
                                len = wsize;
-                               vino = ceph_vino(inode);
-                               /* BUG_ON(vino.snap != CEPH_NOSNAP); */
-                               req = ceph_osdc_new_request(&fsc->client->osdc,
-                                           &ci->i_layout, vino, offset, &len,
-                                           num_ops, ops,
-                                           CEPH_OSD_OP_WRITE,
-                                           CEPH_OSD_FLAG_WRITE |
-                                                   CEPH_OSD_FLAG_ONDISK,
-                                           snapc, ci->i_truncate_seq,
-                                           ci->i_truncate_size, true);
+                               req = ceph_writepages_osd_request(inode,
+                                                       offset, &len, snapc,
+                                                       num_ops, ops);
 
                                if (IS_ERR(req)) {
                                        rc = PTR_ERR(req);
@@ -852,6 +865,7 @@ get_more_pages:
                                        break;
                                }
 
+                               vino = ceph_vino(inode);
                                ceph_osdc_build_request(req, offset,
                                        num_ops, ops, snapc, vino.snap,
                                        &inode->i_mtime);