* 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.
*/
/*
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);
rprintf(0, n, "data check error - exiting\n");
}
}
+ MPI_Barrier(MPI_COMM_WORLD);
}
printf("Finished after %d loops\n", n);