- glob_t glob_info = { 0 };
- struct stat stat_buf;
- char *chk_major, *chk_minor;
- char *savept = NULL, *dev;
- char *ret_path;
- char buf[PATH_MAX] = {'\0'}, path[PATH_MAX] = {'\0'};
- char real_path[PATH_MAX] = {'\0'};
- int i, rc = 0;
- int major, minor;
-
- if (!source)
- return -EINVAL;
-
- ret_path = realpath(source, real_path);
- if (ret_path == NULL) {
- if (verbose)
- fprintf(stderr, "warning: %s: cannot resolve: %s\n",
- source, strerror(errno));
- return -EINVAL;
- }
-
- if (strncmp(real_path, "/dev/loop", 9) == 0)
- return 0;
-
- if ((real_path[0] != '/') && (strpbrk(real_path, ",:") != NULL))
- return 0;
-
- snprintf(path, sizeof(path), "/sys/block%s", real_path + 4);
- if (access(path, X_OK) == 0)
- goto set_params;
+ char always_mountopts[512] = "";
+ char default_mountopts[512] = "";
+ struct mkfs_opts mkop;
+ int ret;
+ int ret2;
+
+ memset(&mkop, 0, sizeof(mkop));
+ mkop.mo_ldd = *ldd;
+ mkop.mo_ldd.ldd_flags &= ~LDD_F_UPDATE;
+ if (strlen(source) > sizeof(mkop.mo_device)-1) {
+ fatal();
+ fprintf(stderr, "Device name too long: %s\n", source);
+ return -E2BIG;
+ }
+ strncpy(mkop.mo_device, source, sizeof(mkop.mo_device));
+
+ ret = osd_prepare_lustre(&mkop,
+ default_mountopts, sizeof(default_mountopts),
+ always_mountopts, sizeof(always_mountopts));
+ if (ret) {
+ fatal();
+ fprintf(stderr, "Can't prepare device %s: %s\n",
+ source, strerror(ret));
+ return ret;
+ }