[Ocfs2-test-devel] [PATCH 1/2] Ocfs2-test: Adjust verify_file() properly in directio_test for multi-node test.
Tristan Ye
tristan.ye at oracle.com
Mon Oct 11 02:23:50 PDT 2010
Verification for file among nodes will be using a in-memory list to store
the writing records.
Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
---
programs/directio_test/directio.h | 4 +++-
programs/directio_test/directio_test.c | 2 +-
programs/directio_test/directio_utils.c | 22 ++++++++++++++++------
3 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/programs/directio_test/directio.h b/programs/directio_test/directio.h
index 68e50f5..0c15857 100755
--- a/programs/directio_test/directio.h
+++ b/programs/directio_test/directio.h
@@ -34,6 +34,7 @@
#include <stdlib.h>
#include <string.h>
#include <getopt.h>
+#include <stdarg.h>
#include <sys/socket.h>
#include <netdb.h>
@@ -89,7 +90,8 @@ void prep_rand_dest_write_unit(struct write_unit *wu, unsigned long chunk_no);
int do_write_chunk(int fd, struct write_unit wu);
int do_read_chunk(int fd, unsigned long chunk_no, struct write_unit *wu);
int prep_orig_file_in_chunks(char *file_name, unsigned long filesize);
-int verify_file(FILE *logfile, char *filename, unsigned long filesize);
+int verify_file(int is_remote, FILE *logfile, struct write_unit *wus,
+ char *filename, unsigned long filesize);
int init_sock(char *serv, int port);
int set_semvalue(int sem_id, int val);
diff --git a/programs/directio_test/directio_test.c b/programs/directio_test/directio_test.c
index a471c0d..7154812 100755
--- a/programs/directio_test/directio_test.c
+++ b/programs/directio_test/directio_test.c
@@ -416,7 +416,7 @@ static int verify_test(void)
ret =
fprintf(stdout, "# Verify file %s in chunks\n", workfile);
- ret = verify_file(log.stream_log, workfile, file_size);
+ ret = verify_file(0, log.stream_log, NULL, workfile, file_size);
return ret;
}
diff --git a/programs/directio_test/directio_utils.c b/programs/directio_test/directio_utils.c
index da4a1a8..26f5524 100755
--- a/programs/directio_test/directio_utils.c
+++ b/programs/directio_test/directio_utils.c
@@ -354,7 +354,8 @@ int prep_orig_file_in_chunks(char *file_name, unsigned long filesize)
return 0;
}
-int verify_file(FILE *logfile, char *filename, unsigned long filesize)
+int verify_file(int is_remote, FILE *logfile, struct write_unit *remote_wus,
+ char *filename, unsigned long filesize)
{
int fd = 0, ret = 0;
struct write_unit *wus, wu, ewu;
@@ -368,6 +369,11 @@ int verify_file(FILE *logfile, char *filename, unsigned long filesize)
wus = (struct write_unit *)malloc(t_bytes);
memset(wus, 0, t_bytes);
+ if (is_remote) {
+ memcpy(wus, remote_wus, t_bytes);
+ goto verify_body;
+ }
+
for (i = 0; i < num_chunks; i++)
wus[i].wu_chunk_no = i;
@@ -401,6 +407,7 @@ int verify_file(FILE *logfile, char *filename, unsigned long filesize)
}
}
+verify_body:
fd = open_file(filename, open_ro_flags);
if (fd < 0)
return fd;
@@ -409,21 +416,21 @@ int verify_file(FILE *logfile, char *filename, unsigned long filesize)
/*
* Verification consists of two following parts:
*
- * - verify write records in logfile.
- * - verify pattern of chunks absent from logfile.
+ * - verify write records.
+ * - verify pattern of chunks absent from write records.
*/
ret = do_read_chunk(fd, i, &wu);
if (ret < 0)
return ret;
/*
- * verify pattern of chunks absent from logfile.
+ * verify pattern of chunks absent from write records.
*/
if (!wus[i].wu_timestamp) {
if (verbose)
fprintf(stdout, " verifying #%lu chunk "
- "out of log\n", i);
+ "out of write records\n", i);
/*
* skip holes
*/
@@ -454,7 +461,8 @@ int verify_file(FILE *logfile, char *filename, unsigned long filesize)
* verify write records in logfile.
*/
if (verbose)
- fprintf(stdout, " verifying #%lu chunk in log\n", i);
+ fprintf(stdout, " verifying #%lu chunk in write "
+ "records\n", i);
if (ret < CHUNK_SIZE) {
fprintf(stderr, "Short read(readed:%d, expected:%d)"
@@ -483,6 +491,8 @@ int verify_file(FILE *logfile, char *filename, unsigned long filesize)
}
}
+ ret = 0;
+
bail:
if (wus)
free(wus);
--
1.5.5
More information about the Ocfs2-test-devel
mailing list