[Ocfs2-test-devel] [PATCH 07/59] ocfs2-test: fix in splice test

Junxiao Bi junxiao.bi at oracle.com
Sun Sep 13 19:43:53 PDT 2015


From: Tiger Yang <tiger.yang at oracle.com>

Signed-off-by: Tiger Yang <tiger.yang at oracle.com>
Signed-off-by: Junxiao Bi <junxiao.bi at oracle.com>
---
 programs/splice/splice_test.py |    5 +++--
 programs/splice/splice_write.c |   21 +++++++++++++++------
 2 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/programs/splice/splice_test.py b/programs/splice/splice_test.py
index a5dca4c..c3637b0 100644
--- a/programs/splice/splice_test.py
+++ b/programs/splice/splice_test.py
@@ -70,8 +70,9 @@ def SpliceWrite():
 	from os import access, F_OK
 	if access(os.path.join(directory, filename), F_OK) ==1:
 		os.system('rm -fr ' + os.path.join(directory, filename))
-	os.system('cat %s | %s %s' % (os.path.join('/tmp', filename), \
-		SPLICEWRITE_BIN, os.path.join(directory, filename)))
+	os.system('cat %s | %s %s %i' % (os.path.join('/tmp', filename), \
+		SPLICEWRITE_BIN, os.path.join(directory, filename), \
+		os.stat(os.path.join('/tmp', filename)).st_size))
 	TEMPMD5SUM=getoutput('%s %s|cut -f1 -d" "' % \
 		(MD5SUM, os.path.join(directory, filename)))
 	if BASEMD5SUM == TEMPMD5SUM:
diff --git a/programs/splice/splice_write.c b/programs/splice/splice_write.c
index e273fbc..4f08369 100644
--- a/programs/splice/splice_write.c
+++ b/programs/splice/splice_write.c
@@ -11,7 +11,8 @@
 int main(int argc, char *argv[])
 {
 	int fd;
-	int slen;
+	long int slen = 0;
+	long int to_write = 1000000;
 
 	if (argc < 2) {
 		printf("Usage: ls | ./splice_write out\n");
@@ -22,11 +23,19 @@ int main(int argc, char *argv[])
 		printf("open file failed.\n");
 		exit(-1);
 	}
-	slen = splice(STDIN_FILENO, NULL, fd, NULL, 10000000, 0);
-	if (slen < 0)
-		fprintf(stderr, "splice failed.\n");
-	else
-		fprintf(stderr, "spliced length = %d\n",slen);
+	if (argc == 3)
+		to_write = atol(argv[2]);
+	while (to_write > 0) {
+		slen = splice(STDIN_FILENO, NULL, fd, NULL, to_write, 0);
+		if (slen < 0)
+			fprintf(stderr, "splice failed.\n");
+		else if (slen == 0)
+			break;
+		else {
+			to_write -= slen;
+			fprintf(stderr, "spliced length = %ld\n",slen);
+		}
+	}
 	close(fd);
 	if (slen < 0)
 		exit(-1);
-- 
1.7.9.5




More information about the Ocfs2-test-devel mailing list