-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* GPL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2012, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
ssize_t ret;
char *filename = "/mnt/lustre/write_disjoint";
int numloops = 1000;
+ int random = 0;
error = MPI_Init(&argc, &argv);
if (error != MPI_SUCCESS)
if (ret != 0)
rprintf(rank, n, "truncate() returned %s\n",
strerror(errno) );
+ random = rand();
}
- CHUNK_SIZE(n) = rand() % CHUNK_MAX_SIZE;
+ MPI_Bcast(&random, 1, MPI_INT, 0, MPI_COMM_WORLD);
+ CHUNK_SIZE(n) = random % CHUNK_MAX_SIZE;
if (n % 1000 == 0 && rank == 0)
printf("loop %d: chunk_size %lu\n", n, CHUNK_SIZE(n));
+ if (stat(filename, &stat_buf) < 0)
+ rprintf(rank, n, "error stating %s: %s\n",
+ filename, strerror(errno));
+
+ if (stat_buf.st_size != 0)
+ rprintf(rank, n, "filesize = %lu. "
+ "Should be zero after truncate\n",
+ stat_buf.st_size);
+
MPI_Barrier(MPI_COMM_WORLD);
/* Do the race */
do {
ret = write(fd, chunk_buf[rank] + done,
CHUNK_SIZE(n) - done);
- if (ret < 0)
+ if (ret < 0 && errno != EINTR)
rprintf(rank, n, "write() returned %s\n",
strerror(errno));
- done += ret;
+ if (ret > 0)
+ done += ret;
} while (done != CHUNK_SIZE(n));
MPI_Barrier(MPI_COMM_WORLD);
for (i = 0; i < noProcessors; i++) {
char command[4096];
- int j, rc;
+ int j;
+
if (!memcmp(read_buf + (i * CHUNK_SIZE(n)),
chunk_buf[i], CHUNK_SIZE(n)))
continue;
}
sprintf(command, "od -Ad -a %s", filename);
- rc = system(command);
+ ret = system(command);
rprintf(0, n, "data check error - exiting\n");
}
}
+ MPI_Barrier(MPI_COMM_WORLD);
}
printf("Finished after %d loops\n", n);