[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH 1/3] lib/vfscore: Reduce pread() and pwrite() to their -v() counterparts.
This commit reorganizes the pread() and pwrite() method such that they rely on preadv() and pwritev(), respectively. This is due the overlap in functionality, where pread() and pwrite() simply create a struct iovec method which is to be passed in their relevant sys_ method. Signed-off-by: Alexander Jung <alexander.jung@xxxxxxxxx> --- lib/vfscore/main.c | 37 ++++++++++--------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c index 846e2ef..3dcbd51 100644 --- a/lib/vfscore/main.c +++ b/lib/vfscore/main.c @@ -307,7 +307,6 @@ static inline int has_error(int error, int bytes) (error != EWOULDBLOCK && error != EINTR)); } - ssize_t pread(int fd, void *buf, size_t count, off_t offset) { trace_vfs_pread(fd, buf, count, offset); @@ -315,25 +314,17 @@ ssize_t pread(int fd, void *buf, size_t count, off_t offset) .iov_base = buf, .iov_len = count, }; - struct vfscore_file *fp; - size_t bytes; int error; - error = fget(fd, &fp); - if (error) + error = preadv(fd, &iov, 1, offset); + if (error < 0) goto out_errno; - error = sys_read(fp, &iov, 1, offset, &bytes); - fdrop(fp); - - if (has_error(error, bytes)) - goto out_errno; - trace_vfs_pread_ret(bytes); - return bytes; + trace_vfs_pread_ret(error); + return error; - out_errno: +out_errno: trace_vfs_pread_err(error); - errno = error; return -1; } @@ -356,25 +347,17 @@ ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset) .iov_base = (void *)buf, .iov_len = count, }; - struct vfscore_file *fp; - size_t bytes; int error; - error = fget(fd, &fp); - if (error) + error = pwritev(fd, &iov, 1, offset); + if (error < 0) goto out_errno; - error = sys_write(fp, &iov, 1, offset, &bytes); - fdrop(fp); - - if (has_error(error, bytes)) - goto out_errno; - trace_vfs_pwrite_ret(bytes); - return bytes; + trace_vfs_pwrite_ret(error); + return error; - out_errno: +out_errno: trace_vfs_pwrite_err(error); - errno = error; return -1; } -- 2.11.0
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |