X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fofd%2Fofd_dev.c;h=b3c582bfc5e51d809bce4991c359f85b3f1fac8d;hp=4c816dfa95ac3ab2e9719d9fa9edb131c4fd4eb7;hb=731178dbad095cc11e52b14266042a301142ebd7;hpb=9e9efd99580c8e7d2064d7d1f76041843f8a2036 diff --git a/lustre/ofd/ofd_dev.c b/lustre/ofd/ofd_dev.c index 4c816df..b3c582b 100644 --- a/lustre/ofd/ofd_dev.c +++ b/lustre/ofd/ofd_dev.c @@ -70,14 +70,21 @@ static int ofd_stack_init(const struct lu_env *env, struct lu_device_type *ldt; struct lu_device *d; struct ofd_thread_info *info = ofd_info(env); + struct lustre_mount_info *lmi; int rc; ENTRY; - /* XXX: we should be able to use different OSDs here */ - type = class_get_type(LUSTRE_OSD_NAME); + lmi = server_get_mount_2(dev); + if (lmi == NULL) { + CERROR("Cannot get mount info for %s!\n", dev); + RETURN(-ENODEV); + } + + type = class_get_type(s2lsi(lmi->lmi_sb)->lsi_osd_type); if (!type) { - CERROR("Unknown type: '%s'\n", LUSTRE_OSD_NAME); + CERROR("Unknown type: '%s'\n", + s2lsi(lmi->lmi_sb)->lsi_osd_type); RETURN(-ENODEV); } @@ -89,14 +96,15 @@ static int ofd_stack_init(const struct lu_env *env, ldt = type->typ_lu; if (ldt == NULL) { - CERROR("type: '%s'\n", LUSTRE_OSD_NAME); + CERROR("type: '%s'\n", s2lsi(lmi->lmi_sb)->lsi_osd_type); GOTO(out_type, rc = -EINVAL); } ldt->ldt_obd_type = type; d = ldt->ldt_ops->ldto_device_alloc(env, ldt, cfg); if (IS_ERR(d)) { - CERROR("Cannot allocate device: '%s'\n", LUSTRE_OSD_NAME); + CERROR("Cannot allocate device: '%s'\n", + s2lsi(lmi->lmi_sb)->lsi_osd_type); GOTO(out_type, rc = -ENODEV); } @@ -109,7 +117,8 @@ static int ofd_stack_init(const struct lu_env *env, type->typ_refcnt++; rc = ldt->ldt_ops->ldto_device_init(env, d, dev, NULL); if (rc) { - CERROR("can't init device '%s', rc %d\n", LUSTRE_OSD_NAME, rc); + CERROR("can't init device '%s', rc = %d\n", + s2lsi(lmi->lmi_sb)->lsi_osd_type, rc); GOTO(out_free, rc); } lu_device_get(d); @@ -517,6 +526,12 @@ static int ofd_init0(const struct lu_env *env, struct ofd_device *m, GOTO(err_fini_stack, rc = -ENOMEM); /* set obd_namespace for compatibility with old code */ obd->obd_namespace = m->ofd_namespace; + ldlm_register_intent(m->ofd_namespace, ofd_intent_policy); + m->ofd_namespace->ns_lvbo = &ofd_lvbo; + m->ofd_namespace->ns_lvbp = m; + + ptlrpc_init_client(LDLM_CB_REQUEST_PORTAL, LDLM_CB_REPLY_PORTAL, + "filter_ldlm_cb_client", &obd->obd_ldlm_client); dt_conf_get(env, m->ofd_osd, &m->ofd_dt_conf);