[PATCH] nfs: add support for new libnfs API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



New update of libnfs will have a new API that changes some signatures,
primarily in order to make nfs_[p]read[_async] calls
zero-copy in the sense that (almost) no data copy is done in the library
and READ3/READ4 payloads are read straigth from the socket into the
application buffer.

In-library zero-copy only works for !krb5 and !tls sessions but can provide
significant boost for read-intensive workloads when can be used.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@xxxxxxxxx>
---
 engines/nfs.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/engines/nfs.c b/engines/nfs.c
index 6bc4af1f..13b55038 100644
--- a/engines/nfs.c
+++ b/engines/nfs.c
@@ -157,16 +157,28 @@ static int queue_write(struct fio_libnfs_options *o, struct io_u *io_u)
 {
 	struct nfs_data *nfs_data = io_u->engine_data;
 
+#ifdef LIBNFS_API_V2
+	return nfs_pwrite_async(o->context, nfs_data->nfsfh,
+				io_u->buf, io_u->buflen, io_u->offset,
+				nfs_callback, io_u);
+#else
 	return nfs_pwrite_async(o->context, nfs_data->nfsfh, io_u->offset,
 				io_u->buflen, io_u->buf, nfs_callback, io_u);
+#endif
 }
 
 static int queue_read(struct fio_libnfs_options *o, struct io_u *io_u)
 {
 	struct nfs_data *nfs_data = io_u->engine_data;
 
+#ifdef LIBNFS_API_V2
+	return nfs_pread_async(o->context, nfs_data->nfsfh,
+				io_u->buf, io_u->buflen, io_u->offset,
+				nfs_callback, io_u);
+#else
 	return nfs_pread_async(o->context, nfs_data->nfsfh, io_u->offset,
 				io_u->buflen, nfs_callback, io_u);
+#endif
 }
 
 static enum fio_q_status fio_libnfs_queue(struct thread_data *td,
-- 
2.47.1





[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux