[REINT_OPEN] "open",
};
-static int mds_set_info(struct obd_export *exp, struct ptlrpc_request *req)
+static int mds_set_info_rpc(struct obd_export *exp, struct ptlrpc_request *req)
{
char *key;
__u32 *val;
case MDS_SET_INFO:
DEBUG_REQ(D_INODE, req, "set_info");
- rc = mds_set_info(req->rq_export, req);
+ rc = mds_set_info_rpc(req->rq_export, req);
break;
case MDS_QUOTACHECK:
return rc;
}
+static int mds_set_info(struct obd_export *exp, obd_count keylen,
+ void *key, obd_count vallen, void *val)
+{
+ struct obd_device *obd = exp->exp_obd;
+ struct mds_obd *mds = &obd->u.mds;
+ int rc = -EINVAL;
+ ENTRY;
+
+ if (KEY_IS("next_id")) {
+ int idx = (int)*((obd_id*)val);
+ obd_id id = *(((obd_id*)val) + 1);
+
+ if (vallen != sizeof(obd_id) * 2)
+ RETURN(-EINVAL);
+
+ if (idx > mds->mds_lov_desc.ld_tgt_count)
+ RETURN(-EINVAL);
+
+ mds->mds_lov_objids[idx] = id;
+ //mds->mds_lov_objids_valid = 1;
+
+ CWARN("got last object "LPU64" from OST %d\n",
+ mds->mds_lov_objids[idx], idx);
+
+ rc = mds_lov_write_objids(obd);
+ if (rc)
+ CERROR("got last objids from OSTs, but error "
+ "writing objids file: %d\n", rc);
+ }
+
+ RETURN(rc);
+}
+
+
struct lvfs_callback_ops mds_lvfs_ops = {
l_fid2dentry: mds_lvfs_fid2dentry,
};
.o_llog_finish = mds_llog_finish,
.o_notify = mds_notify,
.o_health_check = mds_health_check,
+ .o_set_info = mds_set_info,
};
static struct obd_ops mdt_obd_ops = {
lustre_cfg_string(lcfg, 0),
cfg->cfg_instance);
lustre_cfg_bufs_set_string(&bufs, 0, inst_name);
- CERROR("cmd %x, instance name: %s\n",
+ CDEBUG(D_CONFIG, "cmd %x, instance name: %s\n",
lcfg->lcfg_command, inst_name);
}
break;
}
out:
+ if (rc) {
+ CERROR("Err %d on cfg command:\n", rc);
+ class_config_dump_handler(handle, rec, data);
+ }
RETURN(rc);
}
rc = llog_process(llh, class_config_llog_handler, cfg, &cd);
- CERROR("Processed %d-%d\n", cd.first_idx, cd.last_idx);
- cfg->cfg_last_idx = cd.last_idx;
+ CDEBUG(D_CONFIG|D_ERROR, "Processed log %s gen %d-%d (%d)\n", name,
+ cd.first_idx, cd.last_idx, rc);
+ if (cfg)
+ cfg->cfg_last_idx = cd.last_idx;
parse_out:
rc2 = llog_close(llh);
lustre_cfg_string(lcfg, i));
}
}
- LCONSOLE_INFO(" %s\n", outstr);
+ LCONSOLE(D_WARNING, " %s\n", outstr);
} else if (rec->lrh_type == PTL_CFG_REC) {
- LCONSOLE_INFO("Obsolete pcfg command\n");
+ LCONSOLE(D_WARNING, "Obsolete pcfg command\n");
} else {
- LCONSOLE_INFO("unhandled lrh_type: %#x\n", rec->lrh_type);
+ LCONSOLE(D_WARNING, "unhandled lrh_type: %#x\n", rec->lrh_type);
rc = -EINVAL;
}
out:
#define DEBUG_SUBSYSTEM S_MGMT
#define D_MOUNT D_SUPER|D_CONFIG|D_ERROR
+#define PRINT_CMD LCONSOLE
+#define PRINT_MASK D_WARNING
#include <linux/obd.h>
#include <linux/lvfs.h>
list_add(&lmi->lmi_list_chain, &server_mount_info_list);
up(&lustre_mount_info_lock);
+
+ CDEBUG(D_MOUNT, "reg_mnt %p from %s, vfscount=%d\n",
+ lmi->lmi_mnt, name, atomic_read(&lmi->lmi_mnt->mnt_count));
+
return 0;
}
CERROR("%s not registered\n", name);
return -ENOENT;
}
+
+ CDEBUG(D_MOUNT, "dereg_mnt %p from %s, vfscount=%d\n",
+ lmi->lmi_mnt, name, atomic_read(&lmi->lmi_mnt->mnt_count));
+
OBD_FREE(lmi->lmi_name, strlen(lmi->lmi_name) + 1);
list_del(&lmi->lmi_list_chain);
OBD_FREE(lmi, sizeof(*lmi));
up(&lustre_mount_info_lock);
+
return 0;
}
up(&lustre_mount_info_lock);
- CDEBUG(D_MOUNT, "get_mnt %p from %s, vfscount=%d\n",
- lmi->lmi_mnt, name, atomic_read(&lmi->lmi_mnt->mnt_count));
+ CDEBUG(D_MOUNT, "get_mnt %p from %s, refs=%d, vfscount=%d\n",
+ lmi->lmi_mnt, name, atomic_read(&lsi->lsi_mounts),
+ atomic_read(&lmi->lmi_mnt->mnt_count));
return lmi;
}
CERROR("Can't find mount for %s\n", name);
return -ENOENT;
}
-
- CDEBUG(D_MOUNT, "put_mnt %p from %s, vfscount=%d\n",
- lmi->lmi_mnt, name, atomic_read(&lmi->lmi_mnt->mnt_count));
-
lsi = s2lsi(lmi->lmi_sb);
LASSERT(lmi->lmi_mnt == mnt);
unlock_mntput(lmi->lmi_mnt);
atomic_read(&lmi->lmi_mnt->mnt_count));
/* last mount is the One True Mount */
if (atomic_read(&lmi->lmi_mnt->mnt_count) > 1)
- CERROR("%s: mount busy, vfscount=%d\n", name,
+ CERROR("%s: mount busy, vfscount=%d!\n", name,
atomic_read(&lmi->lmi_mnt->mnt_count));
}
up(&lustre_mount_info_lock);
+ CDEBUG(D_MOUNT, "put_mnt %p from %s, refs=%d, vfscount=%d\n",
+ lmi->lmi_mnt, name, atomic_read(&lsi->lsi_mounts),
+ atomic_read(&lmi->lmi_mnt->mnt_count));
+
/* this obd should never need the mount again */
server_deregister_mount(name);
{
int i;
- LCONSOLE_WARN(" disk data:\n");
- LCONSOLE_WARN("config: %d\n", ldd->ldd_config_ver);
- LCONSOLE_WARN("fs: %s\n", ldd->ldd_fsname);
- LCONSOLE_WARN("server: %s\n", ldd->ldd_svname);
- LCONSOLE_WARN("index: %04x\n", ldd->ldd_svindex);
- LCONSOLE_WARN("flags: %#x\n", ldd->ldd_flags);
- LCONSOLE_WARN("diskfs: %s\n", MT_STR(ldd));
- LCONSOLE_WARN("options: %s\n", ldd->ldd_mount_opts);
+ PRINT_CMD(PRINT_MASK, " disk data:\n");
+ PRINT_CMD(PRINT_MASK, "config: %d\n", ldd->ldd_config_ver);
+ PRINT_CMD(PRINT_MASK, "fs: %s\n", ldd->ldd_fsname);
+ PRINT_CMD(PRINT_MASK, "server: %s\n", ldd->ldd_svname);
+ PRINT_CMD(PRINT_MASK, "index: %04x\n", ldd->ldd_svindex);
+ PRINT_CMD(PRINT_MASK, "flags: %#x\n", ldd->ldd_flags);
+ PRINT_CMD(PRINT_MASK, "diskfs: %s\n", MT_STR(ldd));
+ PRINT_CMD(PRINT_MASK, "options: %s\n", ldd->ldd_mount_opts);
if (!ldd->ldd_mgsnid_count)
- LCONSOLE_WARN("no MGS nids\n");
+ PRINT_CMD(PRINT_MASK, "no MGS nids\n");
else for (i = 0; i < ldd->ldd_mgsnid_count; i++) {
- LCONSOLE_WARN("mgs nid %d: %s\n", i,
+ PRINT_CMD(PRINT_MASK, "mgs nid %d: %s\n", i,
libcfs_nid2str(ldd->ldd_mgsnid[i]));
}
}
int rc;
ENTRY;
- CDEBUG(D_MOUNT, "adding config llog %s\n", name);
+ CDEBUG(D_MOUNT, "adding config log %s\n", name);
if (config_log_get(name)) {
GOTO(out, rc = -EEXIST);
}
OBD_FREE(cld, sizeof(*cld));
out:
config_log_put();
- CDEBUG(D_MOUNT, "removed config llog %s %d\n", name, rc);
+ CDEBUG(D_MOUNT, "dropping config log %s (%d)\n", name, rc);
RETURN(rc);
}
RETURN(0);
out_mnt:
+ server_put_super(sb);
+#if 0
if (mgs_service)
server_stop_mgs(sb);
/* mgc is stopped in lustre_fill_super */
unlock_mntput(mnt);
+#endif
out:
//if (lsi->lsi_ldd) class_del_profile(lsi->lsi_ldd->ldd_svname);
RETURN(rc);
{
int i;
- LCONSOLE_WARN(" mount data:\n");
+ PRINT_CMD(PRINT_MASK, " mount data:\n");
if (!lmd->lmd_mgsnid_count)
- LCONSOLE_WARN("no MGS nids\n");
+ PRINT_CMD(PRINT_MASK, "no MGS nids\n");
else for (i = 0; i < lmd->lmd_mgsnid_count; i++) {
- LCONSOLE_WARN("nid %d: %s\n", i,
+ PRINT_CMD(PRINT_MASK, "nid %d: %s\n", i,
libcfs_nid2str(lmd->lmd_mgsnid[i]));
}
if (lmd_is_client(lmd))
- LCONSOLE_WARN("fsname: %s\n", lmd->lmd_dev);
+ PRINT_CMD(PRINT_MASK, "fsname: %s\n", lmd->lmd_dev);
else
- LCONSOLE_WARN("device: %s\n", lmd->lmd_dev);
- LCONSOLE_WARN("flags: %x\n", lmd->lmd_flags);
+ PRINT_CMD(PRINT_MASK, "device: %s\n", lmd->lmd_dev);
+ PRINT_CMD(PRINT_MASK, "flags: %x\n", lmd->lmd_flags);
if (lmd->lmd_opts)
- LCONSOLE_WARN("options: %s\n", lmd->lmd_opts);
+ PRINT_CMD(PRINT_MASK, "options: %s\n", lmd->lmd_opts);
}
static int lmd_parse(char *options, struct lustre_mount_data *lmd)