diff options
-rw-r--r-- | fs/orangefs/file.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 40b38057b826..c767ec746c76 100644 --- a/fs/orangefs/file.c +++ b/fs/orangefs/file.c @@ -133,6 +133,7 @@ static ssize_t wait_for_direct_io(enum ORANGEFS_io_type type, struct inode *inod struct orangefs_khandle *handle = &orangefs_inode->refn.khandle; struct orangefs_bufmap *bufmap = NULL; struct orangefs_kernel_op_s *new_op = NULL; + struct iov_iter saved = *iter; int buffer_index = -1; ssize_t ret; @@ -211,6 +212,8 @@ populate_shared_memory: if (ret == -EAGAIN && op_state_purged(new_op)) { orangefs_bufmap_put(bufmap, buffer_index); buffer_index = -1; + if (type == ORANGEFS_IO_WRITE) + *iter = saved; gossip_debug(GOSSIP_FILE_DEBUG, "%s:going to repopulate_shared_memory.\n", __func__); |