clear_bit(LL_SBI_NOROOTSQUASH, sbi->ll_flags);
else {
/* Do not apply root squash as soon as one of our NIDs is
- * in the nosquash_nids list */
+ * in the nosquash_nids list
+ */
+ struct lustre_sb_info *lsi = sbi->lsi;
+ bool large_nid = false;
+
+ if (exp_connect_flags2(lsi->lsi_mgc->u.cli.cl_mgc_mgsexp) &
+ OBD_CONNECT2_LARGE_NID)
+ large_nid = true;
+
matched = false;
i = 0;
- while (LNetGetId(i++, &id, false) != -ENOENT) {
+ while (LNetGetId(i++, &id, large_nid) != -ENOENT) {
if (nid_is_lo0(&id.nid))
continue;
if (cfs_match_nid(&id.nid,
* initialize rr_index to lower 32bit of netid, so that client
* can distribute subdirs evenly from the beginning.
*/
- while (LNetGetId(i++, &lnet_id, false) != -ENOENT) {
+ while (LNetGetId(i++, &lnet_id, true) != -ENOENT) {
if (!nid_is_lo0(&lnet_id.nid)) {
- lmv->lmv_qos_rr_index = ntohl(lnet_id.nid.nid_addr[0]);
+ lmv->lmv_qos_rr_index = nidhash(&lnet_id.nid);
break;
}
}
RETURN(rc);
}
-static int lmv_select_statfs_mdt(struct lmv_obd *lmv, __u32 flags)
+static int lmv_select_statfs_mdt(struct obd_export *exp, struct lmv_obd *lmv,
+ u32 flags)
{
+ bool large_nid = exp_connect_flags2(exp) & OBD_CONNECT2_LARGE_NID;
int i;
if (flags & OBD_STATFS_FOR_MDT0)
/* choose initial MDT for this client */
for (i = 0;; i++) {
struct lnet_processid lnet_id;
- if (LNetGetId(i, &lnet_id, false) == -ENOENT)
+
+ if (LNetGetId(i, &lnet_id, large_nid) == -ENOENT)
break;
if (!nid_is_lo0(&lnet_id.nid)) {
RETURN(-ENOMEM);
/* distribute statfs among MDTs */
- idx = lmv_select_statfs_mdt(lmv, flags);
+ idx = lmv_select_statfs_mdt(exp, lmv, flags);
for (i = 0; i < lmv->lmv_mdt_descs.ltd_tgts_size; i++, idx++) {
idx = idx % lmv->lmv_mdt_descs.ltd_tgts_size;