diff options
author | Sergey Bugaev <bugaevc@gmail.com> | 2023-05-09 00:31:03 +0300 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-05-10 02:16:00 +0200 |
commit | 4ba239ddbe936322bd7f9a8b17715ebaeb1cb800 (patch) | |
tree | 54d13689e60310babf35b5d9117278eade2ed758 /libdiskfs/io-write.c | |
parent | edc6fe07c5a7f9ade000b3bfc17c030fe2086e21 (diff) | |
download | hurd-4ba239ddbe936322bd7f9a8b17715ebaeb1cb800.tar.gz hurd-4ba239ddbe936322bd7f9a8b17715ebaeb1cb800.tar.bz2 hurd-4ba239ddbe936322bd7f9a8b17715ebaeb1cb800.zip |
libdiskfs: Port to x86_64
Message-Id: <20230508213136.608575-9-bugaevc@gmail.com>
Diffstat (limited to 'libdiskfs/io-write.c')
-rw-r--r-- | libdiskfs/io-write.c | 19 |
1 files changed, 11 insertions, 8 deletions
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; |