struct lustre_mount_data *lsi_lmd; /* mount command info */
struct ll_sb_info *lsi_llsbi; /* add'l client sbi info */
struct dt_device *lsi_dt_dev; /* dt device to access disk fs*/
- struct vfsmount *lsi_srv_mnt; /* the one server mount */
cfs_atomic_t lsi_mounts; /* references to the srv_mnt */
char lsi_svname[MTI_NAME_MAXLEN];
char lsi_osd_obdname[64];
struct lustre_mount_info {
char *lmi_name;
struct super_block *lmi_sb;
- struct vfsmount *lmi_mnt;
cfs_list_t lmi_list_chain;
};
int server_fill_super(struct super_block *sb);
struct lustre_mount_info *server_get_mount(const char *name);
struct lustre_mount_info *server_get_mount_2(const char *name);
-int server_put_mount(const char *name, struct vfsmount *mnt);
+int server_put_mount(const char *name);
int server_put_mount_2(const char *name, struct vfsmount *mnt);
struct mgs_target_info;
int server_mti_print(const char *title, struct mgs_target_info *mti);
/* we must register an obd for a mount before we call the setup routine.
*_setup will call lustre_get_mount to get the mnt struct
by obd_name, since we can't pass the pointer to setup. */
-static int server_register_mount(const char *name, struct super_block *sb,
- struct vfsmount *mnt)
+static int server_register_mount(const char *name, struct super_block *sb)
{
struct lustre_mount_info *lmi;
char *name_cp;
}
lmi->lmi_name = name_cp;
lmi->lmi_sb = sb;
- lmi->lmi_mnt = mnt;
cfs_list_add(&lmi->lmi_list_chain, &server_mount_info_list);
mutex_unlock(&lustre_mount_info_lock);
- CDEBUG(D_MOUNT, "reg_mnt %p from %s\n", lmi->lmi_mnt, name);
+ CDEBUG(D_MOUNT, "register mount %p from %s\n", sb, name);
RETURN(0);
}
RETURN(-ENOENT);
}
- CDEBUG(D_MOUNT, "dereg_mnt %p from %s\n", lmi->lmi_mnt, name);
+ CDEBUG(D_MOUNT, "deregister mount %p from %s\n", lmi->lmi_sb, name);
OBD_FREE(lmi->lmi_name, strlen(lmi->lmi_name) + 1);
cfs_list_del(&lmi->lmi_list_chain);
cfs_atomic_inc(&lsi->lsi_mounts);
- CDEBUG(D_MOUNT, "get_mnt %p from %s, refs=%d\n", lmi->lmi_mnt,
+ CDEBUG(D_MOUNT, "get mount %p from %s, refs=%d\n", lmi->lmi_sb,
name, cfs_atomic_read(&lsi->lsi_mounts));
RETURN(lmi);
EXPORT_SYMBOL(server_get_mount_2);
/* to be called from obd_cleanup methods */
-int server_put_mount(const char *name, struct vfsmount *mnt)
+int server_put_mount(const char *name)
{
struct lustre_mount_info *lmi;
struct lustre_sb_info *lsi;
}
lsi = s2lsi(lmi->lmi_sb);
- CDEBUG(D_MOUNT, "put_mnt %p from %s, refs=%d\n",
- lmi->lmi_mnt, name, cfs_atomic_read(&lsi->lsi_mounts));
+ CDEBUG(D_MOUNT, "put mount %p from %s, refs=%d\n",
+ lmi->lmi_sb, name, cfs_atomic_read(&lsi->lsi_mounts));
if (lustre_put_lsi(lmi->lmi_sb))
- CDEBUG(D_MOUNT, "Last put of mnt %p from %s\n",
- lmi->lmi_mnt, name);
+ CDEBUG(D_MOUNT, "Last put of mount %p from %s\n",
+ lmi->lmi_sb, name);
/* this obd should never need the mount again */
server_deregister_mount(name);
static int server_start_mgs(struct super_block *sb)
{
struct lustre_sb_info *lsi = s2lsi(sb);
- struct vfsmount *mnt = lsi->lsi_srv_mnt;
struct lustre_mount_info *lmi;
int rc = 0;
ENTRY;
CDEBUG(D_CONFIG, "Start MGS service %s\n", LUSTRE_MGS_OBDNAME);
- rc = server_register_mount(LUSTRE_MGS_OBDNAME, sb, mnt);
+ rc = server_register_mount(LUSTRE_MGS_OBDNAME, sb);
if (!rc) {
rc = lustre_start_simple(LUSTRE_MGS_OBDNAME, LUSTRE_MGS_NAME,
/** Start server targets: MDTs and OSTs
*/
-static int server_start_targets(struct super_block *sb, struct vfsmount *mnt)
+static int server_start_targets(struct super_block *sb)
{
struct obd_device *obd;
struct lustre_sb_info *lsi = s2lsi(sb);
/* Set the mgc fs to our server disk. This allows the MGC to
* read and write configs locally, in case it can't talk to the MGS. */
- if (lsi->lsi_srv_mnt) {
- rc = server_mgc_set_fs(lsi->lsi_mgc, sb);
- if (rc)
- GOTO(out_stop_service, rc);
- }
+ rc = server_mgc_set_fs(lsi->lsi_mgc, sb);
+ if (rc)
+ GOTO(out_stop_service, rc);
/* Register with MGS */
rc = server_register_target(lsi);
/* Let the target look up the mount using the target's name
(we can't pass the sb or mnt through class_process_config.) */
- rc = server_register_mount(lsi->lsi_svname, sb, mnt);
+ rc = server_register_mount(lsi->lsi_svname, sb);
if (rc)
GOTO(out_mgc, rc);
out_mgc:
/* Release the mgc fs for others to use */
- if (lsi->lsi_srv_mnt)
- server_mgc_clear_fs(lsi->lsi_mgc);
+ server_mgc_clear_fs(lsi->lsi_mgc);
out_stop_service:
if (rc != 0)
obd->obd_lvfs_ctxt.dt = lsi->lsi_dt_dev;
dt_conf_get(NULL, lsi->lsi_dt_dev, &p);
-
- lsi->lsi_srv_mnt = p.ddp_mnt;
-
out:
RETURN(rc);
}
/* Set up all obd devices for service */
if (!(lsi->lsi_lmd->lmd_flags & LMD_FLG_NOSVC) &&
(IS_OST(lsi) || IS_MDT(lsi))) {
- rc = server_start_targets(sb, lsi->lsi_srv_mnt);
+ rc = server_start_targets(sb);
if (rc < 0) {
CERROR("Unable to start targets: %d\n", rc);
GOTO(out_mnt, rc);