X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fcreatemany.c;h=466c1561b8d04a6f7830e77ec828c7bb8ec7dc88;hb=60ea5e49e11678edaa11223a3d6aa3d502964e4c;hp=839982475485ec9868d342e78602a99d277f7c45;hpb=93acd158c57c4c5d0fc751d46741231490c04707;p=fs%2Flustre-release.git diff --git a/lustre/tests/createmany.c b/lustre/tests/createmany.c index 8399824..466c156 100644 --- a/lustre/tests/createmany.c +++ b/lustre/tests/createmany.c @@ -1,3 +1,7 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + */ + #include #include #include @@ -10,30 +14,33 @@ void usage(char *prog) { - printf("usage: %s {-o|-m} filenamefmt count\n", prog); - printf(" %s {-o|-m} filenamefmt -seconds\n", prog); - printf(" %s {-o|-m} filenamefmt start count\n", prog); + printf("usage: %s {-o|-m|-d|-l} filenamefmt count\n", prog); + printf(" %s {-o|-m|-d|-l} filenamefmt -seconds\n", prog); + printf(" %s {-o|-m|-d|-l} filenamefmt start count\n", prog); } int main(int argc, char ** argv) { - int i, rc = 0, do_open; - char format[4096], *fmt; + int i, rc = 0, do_open = 0, do_link = 0, do_mkdir = 0; + char format[4096], *fmt, *tgt = NULL; char filename[4096]; long start, last, end; - long begin = 0, count; + long begin = 0, count; if (argc < 4 || argc > 5) { - usage(argv[0]); + usage(argv[0]); return 1; } - if (strcmp(argv[1], "-o") == 0) { + if (strcmp(argv[1], "-d") == 0) { + do_mkdir = 1; + } else if (strcmp(argv[1], "-o") == 0) { do_open = 1; - } else if (strcmp(argv[1], "-m") == 0) { - do_open = 0; - } else { - usage(argv[0]); + } else if (strncmp(argv[1], "-l", 2) == 0 && argv[1][2]) { + tgt = argv[1] + 2; + do_link = 1; + } else if (strcmp(argv[1], "-m") != 0) { + usage(argv[0]); return 1; } @@ -44,27 +51,27 @@ int main(int argc, char ** argv) start = last = time(0); - if (argc == 4) { - end = strtol(argv[3], NULL, 0); - if (end > 0) { - count = end; - end = -1UL >> 1; - } else { - end = start - end; - count = -1UL >> 1; - } - } else { - end = -1UL >> 1; - begin = strtol(argv[3], NULL, 0); - count = strtol(argv[4], NULL, 0); - } + if (argc == 4) { + end = strtol(argv[3], NULL, 0); + } else { + begin = strtol(argv[3], NULL, 0); + end = strtol(argv[4], NULL, 0); + } - if (strchr(argv[2], '%')) - fmt = argv[2]; - else { - sprintf(format, "%s%%d", argv[2]); - fmt = format; - } + if (end > 0) { + count = end; + end = -1UL >> 1; + } else { + end = start - end; + count = -1UL >> 1; + } + + if (strchr(argv[2], '%')) + fmt = argv[2]; + else { + sprintf(format, "%s%%d", argv[2]); + fmt = format; + } for (i = 0; i < count && time(0) < end; i++, begin++) { sprintf(filename, fmt, begin); if (do_open) { @@ -76,6 +83,22 @@ int main(int argc, char ** argv) break; } close(fd); + } else if (do_link) { + rc = link(tgt, filename); + if (rc) { + printf("link(%s, %s) error: %s\n", + tgt, filename, strerror(errno)); + rc = errno; + break; + } + } else if (do_mkdir) { + rc = mkdir(filename, 0755); + if (rc) { + printf("mkdir(%s) error: %s\n", + filename, strerror(errno)); + rc = errno; + break; + } } else { rc = mknod(filename, S_IFREG| 0444, 0); if (rc) { @@ -86,7 +109,7 @@ int main(int argc, char ** argv) } } if ((i % 10000) == 0) { - printf(" - created %d (time %ld ; total %ld ; last %ld)\n", + printf(" - created %d (time %ld total %ld last %ld)\n", i, time(0), time(0) - start, time(0) - last); last = time(0); }