[LTP] [PATCH] lib: tlibio.c: Restore LIO_IO_SYNCV

Cyril Hrubis chrubis@suse.cz
Wed Apr 30 15:36:15 CEST 2025


There was a single case of "#ifndef CRAY" in all the "#ifdef CRAY"
macros that got removed accidentally. This patch restores that piece.

Fixes: fed3e3ee6399 ('lib/tlibio: Get rid of support for old UNIXes')
Reported-by: Avinesh Kumar <akumar@suse.de>
Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
---
 lib/tlibio.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 56 insertions(+), 1 deletion(-)

diff --git a/lib/tlibio.c b/lib/tlibio.c
index 451244525..b3e723aa7 100644
--- a/lib/tlibio.c
+++ b/lib/tlibio.c
@@ -767,6 +767,34 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 			return -errno;
 		}
 	}
+	else if (method & LIO_IO_SYNCV) {
+		io_type = "writev(2)";
+
+		sprintf(Lio_SysCall, "writev(%d, &iov, 1) nbyte:%d", fd, size);
+
+		if (Debug_level) {
+			printf("DEBUG %s/%d: %s\n", __FILE__, __LINE__,
+			       Lio_SysCall);
+		}
+		if ((ret = writev(fd, &iov, 1)) == -1) {
+			sprintf(Errormsg,
+				"%s/%d writev(%d, iov, 1) nbyte:%d ret:-1, errno=%d %s",
+				__FILE__, __LINE__, fd, size, errno,
+				strerror(errno));
+			return -errno;
+		}
+
+		if (ret != size) {
+			sprintf(Errormsg,
+				"%s/%d writev(%d, iov, 1) nbyte:%d returned=%d",
+				__FILE__, __LINE__, fd, size, ret);
+		} else if (Debug_level > 1)
+			printf
+			    ("DEBUG %s/%d: writev completed without error (ret %d)\n",
+			     __FILE__, __LINE__, ret);
+
+		return ret;
+	}			/* LIO_IO_SYNCV */
 	/* LIO_IO_ALISTIO */
 	else if (method & LIO_IO_SYNCP) {
 		io_type = "pwrite(2)";
@@ -1150,6 +1178,34 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 		}
 	}
 	/* LIO_IO_ALISTIO */
+	else if (method & LIO_IO_SYNCV) {
+		io_type = "readv(2)";
+
+		sprintf(Lio_SysCall, "readv(%d, &iov, 1) nbyte:%d", fd, size);
+
+		if (Debug_level) {
+			printf("DEBUG %s/%d: %s\n", __FILE__, __LINE__,
+			       Lio_SysCall);
+		}
+		if ((ret = readv(fd, &iov, 1)) == -1) {
+			sprintf(Errormsg,
+				"%s/%d readv(%d, iov, 1) nbyte:%d ret:-1, errno=%d %s",
+				__FILE__, __LINE__, fd, size, errno,
+				strerror(errno));
+			return -errno;
+		}
+
+		if (ret != size) {
+			sprintf(Errormsg,
+				"%s/%d readv(%d, iov, 1) nbyte:%d returned=%d",
+				__FILE__, __LINE__, fd, size, ret);
+		} else if (Debug_level > 1)
+			printf
+			    ("DEBUG %s/%d: readv completed without error (ret %d)\n",
+			     __FILE__, __LINE__, ret);
+
+		return ret;
+	}			/* LIO_IO_SYNCV */
 	else if (method & LIO_IO_SYNCP) {
 		io_type = "pread(2)";
 
-- 
2.49.0



More information about the ltp mailing list