#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
+#include "mount_utils.h"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <lustre_param.h>
#include <lnet/lnetctl.h>
#include <lustre_ver.h>
-#include "mount_utils.h"
#ifndef PATH_MAX
#define PATH_MAX 4096
"\t\t--erase-params: erase all old parameter settings\n"
"\t\t--nomgs: turn off MGS service on this MDT\n"
"\t\t--writeconf: erase all config logs for this fs.\n"
+ "\t\t--quota: enable space accounting on old 2.x device.\n"
#endif
"\t\t--comment=<user comment>: arbitrary string (%d bytes)\n"
"\t\t--dryrun: report what we would do; don't write to disk\n"
printf("Lustre FS: %s\n", ldd->ldd_fsname);
printf("Mount type: %s\n", MT_STR(ldd));
printf("Flags: %#x\n", ldd->ldd_flags);
- printf(" (%s%s%s%s%s%s%s%s%s%s)\n",
+ printf(" (%s%s%s%s%s%s%s%s%s)\n",
IS_MDT(ldd) ? "MDT ":"",
IS_OST(ldd) ? "OST ":"",
IS_MGS(ldd) ? "MGS ":"",
ldd->ldd_flags & LDD_F_VIRGIN ? "first_time ":"",
ldd->ldd_flags & LDD_F_UPDATE ? "update ":"",
ldd->ldd_flags & LDD_F_WRITECONF ? "writeconf ":"",
- ldd->ldd_flags & LDD_F_IAM_DIR ? "IAM_dir_format ":"",
ldd->ldd_flags & LDD_F_NO_PRIMNODE? "no_primnode ":"",
ldd->ldd_flags & LDD_F_UPGRADE14 ? "upgrade1.4 ":"");
printf("Persistent mount opts: %s\n", ldd->ldd_mount_opts);
char **mountopts)
{
static struct option long_opt[] = {
- {"iam-dir", 0, 0, 'a'},
{"backfstype", 1, 0, 'b'},
{"stripe-count-hint", 1, 0, 'c'},
{"comment", 1, 0, 'u'},
{"writeconf", 0, 0, 'w'},
{"upgrade_to_18", 0, 0, 'U'},
{"network", 1, 0, 't'},
+ {"quota", 0, 0, 'Q'},
{0, 0, 0, 0}
};
char *optstring = "b:c:C:d:ef:Ghi:k:L:m:MnNo:Op:Pqrs:t:Uu:vw";
while ((opt = getopt_long(argc, argv, optstring, long_opt, &longidx)) !=
EOF) {
switch (opt) {
- case 'a': {
- if (IS_MDT(&mop->mo_ldd))
- mop->mo_ldd.ldd_flags |= LDD_F_IAM_DIR;
- break;
- }
case 'b': {
int i = 0;
while (i < LDD_MT_LAST) {
case 'U':
upgrade_to_18 = 1;
break;
+ case 'Q':
+ mop->mo_flags |= MO_QUOTA;
+ break;
default:
if (opt != '?') {
fatal();
/* device is last arg */
strscpy(mop.mo_device, argv[argc - 1], sizeof(mop.mo_device));
+ ret = osd_init();
+ if (ret)
+ return ret;
+
#ifdef TUNEFS
/* For tunefs, we must read in the old values before parsing any
new ones. */
ret = ENODEV;
goto out;
}
+ mop.mo_ldd.ldd_mount_type = mount_type;
ret = osd_read_ldd(mop.mo_device, &mop.mo_ldd);
if (ret) {
print_ldd("Read previous values", &(mop.mo_ldd));
#endif
- ret = osd_init();
- if (ret)
- return ret;
-
ret = parse_opts(argc, argv, &mop, &mountopts);
if (ret)
goto out;
goto out;
}
- if (IS_OST(ldd) && (mop.mo_ldd.ldd_flags & LDD_F_NEED_INDEX))
+ if (mop.mo_ldd.ldd_flags & LDD_F_NEED_INDEX)
fprintf(stderr, "warning: %s: for Lustre 2.4 and later, the "
"target index must be specified with --index\n",
mop.mo_device);
+ /* If no index is supplied for MDT by default set index to zero */
+ if (IS_MDT(ldd) && (ldd->ldd_svindex == INDEX_UNASSIGNED)) {
+ mop.mo_ldd.ldd_flags &= ~LDD_F_NEED_INDEX;
+ mop.mo_ldd.ldd_svindex = 0;
+ }
+
#if 0
/*
* Comment out these 2 checks temporarily, since for multi-MDSes
opts.mo_source = mop.mo_device;
(void) osd_label_lustre(&opts);
}
+
+ /* Enable quota accounting */
+ if (mop.mo_flags & MO_QUOTA) {
+ ret = osd_enable_quota(&mop);
+ goto out;
+ }
+
#endif
/* Write our config files */