From 4ba239ddbe936322bd7f9a8b17715ebaeb1cb800 Mon Sep 17 00:00:00 2001
From: Sergey Bugaev <bugaevc@gmail.com>
Date: Tue, 9 May 2023 00:31:03 +0300
Subject: libdiskfs: Port to x86_64

Message-Id: <20230508213136.608575-9-bugaevc@gmail.com>
---
 libdiskfs/io-write.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

(limited to 'libdiskfs/io-write.c')

diff --git a/libdiskfs/io-write.c b/libdiskfs/io-write.c
index 9efed88f..2e47c81c 100644
--- a/libdiskfs/io-write.c
+++ b/libdiskfs/io-write.c
@@ -22,14 +22,15 @@
 /* Implement io_write as described in <hurd/io.defs>. */
 kern_return_t
 diskfs_S_io_write (struct protid *cred,
-		   const_data_t data,
-		   mach_msg_type_number_t datalen,
-		   off_t offset,
-		   vm_size_t *amt)
+                   const_data_t data,
+                   mach_msg_type_number_t datalen,
+                   off_t offset,
+                   vm_size_t *amt)
 {
   struct node *np;
   error_t err;
   off_t off = offset;
+  mach_msg_type_number_t nwritten;
 
   if (!cred)
     return EOPNOTSUPP;
@@ -75,18 +76,20 @@ diskfs_S_io_write (struct protid *cred,
 	diskfs_node_update (np, 1);
     }
 
-  *amt = datalen;
-  err = _diskfs_rdwr_internal (np, (char*) data, off, amt, 1, 0);
+  nwritten = datalen;
+  err = _diskfs_rdwr_internal (np, (char *) data, off, &nwritten, 1, 0);
+  if (!err)
+    *amt = nwritten;
 
   if (!err && offset == -1)
-    cred->po->filepointer += *amt;
+    cred->po->filepointer += nwritten;
 
   if (!err
       && ((cred->po->openstat & O_FSYNC) || diskfs_synchronous))
     diskfs_file_update (np, 1);
 
   if (!err && np->filemod_reqs)
-    diskfs_notice_filechange (np, FILE_CHANGED_WRITE, off, off + *amt);
+    diskfs_notice_filechange (np, FILE_CHANGED_WRITE, off, off + nwritten);
  out:
   pthread_mutex_unlock (&np->lock);
   return err;
-- 
cgit v1.2.3