#endif
static int ldd_parse(struct lvfs_run_ctxt *mount_ctxt,
- struct lustre_disk_data *ldd)
+ struct lustre_disk_data *ldd)
{
struct lvfs_run_ctxt saved;
struct file *file;
mti->mti_lustre_ver = LUSTRE_VERSION_CODE;
mti->mti_config_ver = 0;
+ if (lsi->lsi_lmd->lmd_flags & LMD_FLG_WRITECONF)
+ ldd->ldd_flags |= LDD_F_WRITECONF;
mti->mti_flags = ldd->ldd_flags;
mti->mti_stripe_index = ldd->ldd_svindex;
memcpy(mti->mti_uuid, ldd->ldd_uuid, sizeof(mti->mti_uuid));
unsigned long page, s_flags;
struct page *__page;
int rc;
+ int len;
ENTRY;
OBD_ALLOC(ldd, sizeof(*ldd));
/* Glom up mount options */
memset(options, 0, CFS_PAGE_SIZE);
- strncpy(options, ldd->ldd_mount_opts, CFS_PAGE_SIZE - 2);
+ if (IS_MDT(ldd)) {
+ /* enable 64bithash for MDS by force */
+ strcpy(options, "64bithash,");
+ len = CFS_PAGE_SIZE - strlen(options) - 2;
+ strncat(options, ldd->ldd_mount_opts, len);
+ } else {
+ strncpy(options, ldd->ldd_mount_opts, CFS_PAGE_SIZE - 2);
+ }
/* Add in any mount-line options */
if (lmd->lmd_opts && (*(lmd->lmd_opts) != 0)) {
- int len = CFS_PAGE_SIZE - strlen(options) - 2;
+ len = CFS_PAGE_SIZE - strlen(options) - 2;
if (*options != 0)
strcat(options, ",");
strncat(options, lmd->lmd_opts, len);
} else if (strncmp(s1, "nomgs", 5) == 0) {
lmd->lmd_flags |= LMD_FLG_NOMGS;
clear++;
+ } else if (strncmp(s1, "writeconf", 9) == 0) {
+ lmd->lmd_flags |= LMD_FLG_WRITECONF;
+ clear++;
} else if (strncmp(s1, "mgssec=", 7) == 0) {
rc = lmd_parse_mgssec(lmd, s1 + 7);
if (rc)