From: Martin Brandenburg <mar...@omnibond.com>

Signed-off-by: Martin Brandenburg <mar...@omnibond.com>
---
 fs/orangefs/file.c | 95 +++++++++++-------------------------------------------
 1 file changed, 19 insertions(+), 76 deletions(-)

diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c
index 1668fd645c45..44879b1ff33e 100644
--- a/fs/orangefs/file.c
+++ b/fs/orangefs/file.c
@@ -41,70 +41,6 @@ static int flush_racache(struct inode *inode)
        return ret;
 }
 
-/*
- * Copy to client-core's address space from the buffers specified
- * by the iovec upto total_size bytes.
- * NOTE: the iovector can either contain addresses which
- *       can futher be kernel-space or user-space addresses.
- *       or it can pointers to struct page's
- */
-static int precopy_buffers(int buffer_index,
-                          struct iov_iter *iter,
-                          size_t total_size)
-{
-       int ret = 0;
-       /*
-        * copy data from application/kernel by pulling it out
-        * of the iovec.
-        */
-
-
-       if (total_size) {
-               ret = orangefs_bufmap_copy_from_iovec(iter,
-                                                     buffer_index,
-                                                     total_size);
-               if (ret < 0)
-               gossip_err("%s: Failed to copy-in buffers. Please make sure 
that the pvfs2-client is running. %ld\n",
-                          __func__,
-                          (long)ret);
-       }
-
-       if (ret < 0)
-               gossip_err("%s: Failed to copy-in buffers. Please make sure 
that the pvfs2-client is running. %ld\n",
-                       __func__,
-                       (long)ret);
-       return ret;
-}
-
-/*
- * Copy from client-core's address space to the buffers specified
- * by the iovec upto total_size bytes.
- * NOTE: the iovector can either contain addresses which
- *       can futher be kernel-space or user-space addresses.
- *       or it can pointers to struct page's
- */
-static int postcopy_buffers(int buffer_index,
-                           struct iov_iter *iter,
-                           size_t total_size)
-{
-       int ret = 0;
-       /*
-        * copy data to application/kernel by pushing it out to
-        * the iovec. NOTE; target buffers can be addresses or
-        * struct page pointers.
-        */
-       if (total_size) {
-               ret = orangefs_bufmap_copy_to_iovec(iter,
-                                                   buffer_index,
-                                                   total_size);
-               if (ret < 0)
-                       gossip_err("%s: Failed to copy-out buffers. Please make 
sure that the pvfs2-client is running (%ld)\n",
-                               __func__,
-                               (long)ret);
-       }
-       return ret;
-}
-
 /*
  * Post and wait for the I/O upcall to finish
  */
@@ -157,14 +93,15 @@ static ssize_t wait_for_direct_io(enum ORANGEFS_io_type 
type, struct inode *inod
                     total_size);
        /*
         * Stage 1: copy the buffers into client-core's address space
-        * precopy_buffers only pertains to writes.
         */
-       if (type == ORANGEFS_IO_WRITE) {
-               ret = precopy_buffers(buffer_index,
-                                     iter,
-                                     total_size);
-               if (ret < 0)
+       if (type == ORANGEFS_IO_WRITE && total_size) {
+               ret = orangefs_bufmap_copy_from_iovec(iter, buffer_index,
+                   total_size);
+               if (ret < 0) {
+                       gossip_err("%s: Failed to copy-in buffers. Please make 
sure that the pvfs2-client is running. %ld\n",
+                           __func__, (long)ret);
                        goto out;
+               }
        }
 
        gossip_debug(GOSSIP_FILE_DEBUG,
@@ -260,14 +197,20 @@ static ssize_t wait_for_direct_io(enum ORANGEFS_io_type 
type, struct inode *inod
 
        /*
         * Stage 3: Post copy buffers from client-core's address space
-        * postcopy_buffers only pertains to reads.
         */
-       if (type == ORANGEFS_IO_READ) {
-               ret = postcopy_buffers(buffer_index,
-                                      iter,
-                                      new_op->downcall.resp.io.amt_complete);
-               if (ret < 0)
+       if (type == ORANGEFS_IO_READ && new_op->downcall.resp.io.amt_complete) {
+               /*
+                * NOTE: the iovector can either contain addresses which
+                *       can futher be kernel-space or user-space addresses.
+                *       or it can pointers to struct page's
+                */
+               ret = orangefs_bufmap_copy_to_iovec(iter, buffer_index,
+                   new_op->downcall.resp.io.amt_complete);
+               if (ret < 0) {
+                       gossip_err("%s: Failed to copy-out buffers. Please make 
sure that the pvfs2-client is running (%ld)\n",
+                           __func__, (long)ret);
                        goto out;
+               }
        }
        gossip_debug(GOSSIP_FILE_DEBUG,
            "%s(%pU): Amount %s, returned by the sys-io call:%d\n",
-- 
2.15.1

Reply via email to