RDS: Inline rdma_prepare into cmsg_rdma_args
authorAndy Grover <andy.grover@oracle.com>
Thu, 28 Jan 2010 00:07:30 +0000 (16:07 -0800)
committerAndy Grover <andy.grover@oracle.com>
Thu, 9 Sep 2010 01:11:56 +0000 (18:11 -0700)
cmsg_rdma_args just calls rdma_prepare and does a little
arg checking -- not quite enough to justify its existence.
Plus, it is the only caller of rdma_prepare().

Signed-off-by: Andy Grover <andy.grover@oracle.com>
net/rds/rdma.c

index 4df545a6eab8b2a4bd6361ee5b067be88abd93ea..91967c8bc572eb5f057332992a07f0c2c6e4179f 100644 (file)
@@ -497,12 +497,13 @@ int rds_rdma_extra_size(struct rds_rdma_args *args)
 }
 
 /*
- * args is a pointer to an in-kernel copy in the sendmsg cmsg.
+ * The application asks for a RDMA transfer.
+ * Extract all arguments and set up the rdma_op
  */
-static int rds_rdma_prepare(struct rds_message *rm,
-                           struct rds_sock *rs,
-                           struct rds_rdma_args *args)
+int rds_cmsg_rdma_args(struct rds_sock *rs, struct rds_message *rm,
+                         struct cmsghdr *cmsg)
 {
+       struct rds_rdma_args *args;
        struct rds_iovec vec;
        struct rds_rdma_op *op = &rm->rdma.m_rdma_op;
        unsigned int nr_pages;
@@ -513,6 +514,11 @@ static int rds_rdma_prepare(struct rds_message *rm,
        unsigned int i, j;
        int ret = 0;
 
+       if (cmsg->cmsg_len < CMSG_LEN(sizeof(struct rds_rdma_args))
+           || rm->rdma.m_rdma_op.r_active)
+               return -EINVAL;
+
+       args = CMSG_DATA(cmsg);
 
        if (rs->rs_bound_addr == 0) {
                ret = -ENOTCONN; /* XXX not a great errno */
@@ -623,7 +629,6 @@ static int rds_rdma_prepare(struct rds_message *rm,
                op->r_nents += nr;
        }
 
-
        if (nr_bytes > args->remote_vec.bytes) {
                rdsdebug("RDS nr_bytes %u remote_bytes %u do not match\n",
                                nr_bytes,
@@ -639,28 +644,9 @@ out:
        if (ret)
                rds_rdma_free_op(op);
 
-       return ret;
-}
-
-/*
- * The application asks for a RDMA transfer.
- * Extract all arguments and set up the rdma_op
- */
-int rds_cmsg_rdma_args(struct rds_sock *rs, struct rds_message *rm,
-                         struct cmsghdr *cmsg)
-{
-       int ret;
-
-       if (cmsg->cmsg_len < CMSG_LEN(sizeof(struct rds_rdma_args)) ||
-           rm->rdma.m_rdma_op.r_active)
-               return -EINVAL;
-
-       ret = rds_rdma_prepare(rm, rs, CMSG_DATA(cmsg));
-       if (ret)
-               return ret;
-
        rds_stats_inc(s_send_rdma);
-       return 0;
+
+       return ret;
 }
 
 /*