- sprintf(dir, dirfmt, dirnum);
-
- sprintf(mkdir_cmd, "/bin/mkdir -p %s", dir);
- #ifdef _LIGHTWEIGHT_KERNEL
- printf("NOTICE: not running system(%s)\n", mkdir_cmd);
- #else
- rc = system(mkdir_cmd);
- if (rc) {
- fatal(myrank, "'%s' failed.\n", mkdir_cmd);
- }
- #endif
+ int dir_len = 0;
+
+ if (mntfmt != NULL) {
+ sprintf(dir, mntfmt, (myrank / (nthreads/mnt_count)));
+ strcat(dir, "/");
+ dir_len = strlen(dir);
+ }
+ sprintf(dir + dir_len, dirfmt, dirnum);
+
+ if (mdt_count > 1) {
+ struct stat sb;
+ if (stat(dir, &sb) == 0) {
+ if (!S_ISDIR(sb.st_mode))
+ fatal(myrank, "'%s' is not dir\n", dir);
+ } else if (errno == ENOENT) {
+ sprintf(mkdir_cmd, "lfs mkdir -i %d %s",
+ myrank % mdt_count, dir);
+ } else {
+ fatal(myrank, "'%s' stat failed\n", dir);
+ }
+ } else {
+ sprintf(mkdir_cmd, "mkdir -p %s", dir);
+ }
+
+ dmesg("%d: %s\n", myrank, mkdir_cmd);
+#ifdef _LIGHTWEIGHT_KERNEL
+ printf("NOTICE: not running system(%s)\n", mkdir_cmd);
+#else
+ rc = system(mkdir_cmd);
+ if (rc)
+ fatal(myrank, "'%s' failed.\n", mkdir_cmd);
+#endif