cfs_dentry_t *mds_objects_dir;
struct llog_handle *mds_cfg_llh;
// struct llog_handle *mds_catalog;
- struct obd_device *mds_osc_obd; /* XXX lov_obd */
+ struct obd_device *mds_lov_obd;
struct obd_uuid mds_lov_uuid;
char *mds_profile;
- struct obd_export *mds_osc_exp; /* XXX lov_exp */
+ struct obd_export *mds_lov_exp;
struct lov_desc mds_lov_desc;
/* mark pages dirty for write. */
#define KEY_BLOCKSIZE_BITS "blocksize_bits"
#define KEY_MAX_EASIZE "max_ea_size"
#define KEY_FIEMAP "fiemap"
+#define KEY_CONNECT_FLAG "connect_flags"
/* XXX unused */
#define KEY_ASYNC "async"
#define KEY_CAPA_KEY "capa_key"
GOTO(out, rc = -ESRCH);
rc = obd_get_info(tgt->ltd_exp, keylen, key, vallen, val, NULL);
GOTO(out, rc);
+ } else if (KEY_IS(KEY_CONNECT_FLAG)) {
+ struct lov_tgt_desc *tgt;
+ __u64 ost_idx = *((__u64*)val);
+
+ LASSERT(*vallen == sizeof(__u64));
+ LASSERT(ost_idx < lov->desc.ld_tgt_count);
+ tgt = lov->lov_tgts[ost_idx];
+
+ if (!tgt || !tgt->ltd_exp)
+ GOTO(out, rc = -ESRCH);
+
+ *((__u64*)val) = tgt->ltd_exp->exp_connect_flags;
+ GOTO(out, rc = 0);
}
rc = -EINVAL;
static int mds_lov_clean(struct obd_device *obd)
{
struct mds_obd *mds = &obd->u.mds;
- struct obd_device *osc = mds->mds_osc_obd;
+ struct obd_device *lov = mds->mds_lov_obd;
ENTRY;
if (mds->mds_profile) {
}
/* There better be a lov */
- if (!osc)
+ if (!lov)
RETURN(0);
- if (IS_ERR(osc))
- RETURN(PTR_ERR(osc));
+ if (IS_ERR(lov))
+ RETURN(PTR_ERR(lov));
- obd_register_observer(osc, NULL);
+ obd_register_observer(lov, NULL);
/* Give lov our same shutdown flags */
- osc->obd_force = obd->obd_force;
- osc->obd_fail = obd->obd_fail;
+ lov->obd_force = obd->obd_force;
+ lov->obd_fail = obd->obd_fail;
/* Cleanup the lov */
- obd_disconnect(mds->mds_osc_exp);
- class_manual_cleanup(osc);
- mds->mds_osc_exp = NULL;
+ obd_disconnect(mds->mds_lov_exp);
+ class_manual_cleanup(lov);
+ mds->mds_lov_exp = NULL;
RETURN(0);
}
/* Notify the LOV, which will in turn call mds_notify for each tgt */
/* This means that we have to hack obd_notify to think we're obd_set_up
during mds_lov_connect. */
- obd_notify(obd->u.mds.mds_osc_obd, NULL,
+ obd_notify(obd->u.mds.mds_lov_obd, NULL,
obd->obd_async_recov ? OBD_NOTIFY_SYNC_NONBLOCK :
OBD_NOTIFY_SYNC, NULL);
static int mds_lov_early_clean(struct obd_device *obd)
{
struct mds_obd *mds = &obd->u.mds;
- struct obd_device *osc = mds->mds_osc_obd;
+ struct obd_device *lov = mds->mds_lov_obd;
- if (!osc || (!obd->obd_force && !obd->obd_fail))
+ if (!lov || (!obd->obd_force && !obd->obd_fail))
return(0);
CDEBUG(D_HA, "abort inflight\n");
- return (obd_precleanup(osc, OBD_CLEANUP_EARLY));
+ return (obd_precleanup(lov, OBD_CLEANUP_EARLY));
}
static int mds_precleanup(struct obd_device *obd, enum obd_cleanup_stage stage)
RETURN(0);
save_dev = lvfs_sbdev(obd->u.obt.obt_sb);
- if (mds->mds_osc_exp)
+ if (mds->mds_lov_exp)
/* lov export was disconnected by mds_lov_clean;
we just need to drop our ref */
- class_export_put(mds->mds_osc_exp);
+ class_export_put(mds->mds_lov_exp);
remove_proc_entry("clear", obd->obd_proc_exports_entry);
lprocfs_free_per_client_stats(obd);
return -ENOMEM;
if (obd->u.mds.mds_evict_ost_nids) {
- rc = obd_set_info_async(mds->mds_osc_exp,sizeof(KEY_EVICT_BY_NID),
+ rc = obd_set_info_async(mds->mds_lov_exp,sizeof(KEY_EVICT_BY_NID),
KEY_EVICT_BY_NID, strlen(tmpbuf + 4) + 1,
tmpbuf + 4, set);
if (rc)
struct llog_cookie *logcookies, int numcookies)
{
struct obd_device *obd = ctxt->loc_obd;
- struct obd_device *lov_obd = obd->u.mds.mds_osc_obd;
+ struct obd_device *lov_obd = obd->u.mds.mds_lov_obd;
struct llog_ctxt *lctxt;
int rc;
ENTRY;
struct obd_uuid *uuid)
{
struct obd_device *obd = ctxt->loc_obd;
- struct obd_device *lov_obd = obd->u.mds.mds_osc_obd;
+ struct obd_device *lov_obd = obd->u.mds.mds_lov_obd;
struct llog_ctxt *lctxt;
int rc;
ENTRY;
int count, struct llog_cookie *cookies, int flags)
{
struct obd_device *obd = ctxt->loc_obd;
- struct obd_device *lov_obd = obd->u.mds.mds_osc_obd;
+ struct obd_device *lov_obd = obd->u.mds.mds_lov_obd;
struct llog_ctxt *lctxt;
int rc;
ENTRY;
struct llog_ctxt *ctxt;
int rc;
- rc = obd_checkmd(obd->u.mds.mds_osc_exp, obd->obd_self_export, lsm);
+ rc = obd_checkmd(obd->u.mds.mds_lov_exp, obd->obd_self_export, lsm);
if (rc)
RETURN(rc);
/* first prepare unlink log record */
int rc;
ENTRY;
- if (IS_ERR(mds->mds_osc_obd))
- RETURN(PTR_ERR(mds->mds_osc_obd));
+ if (IS_ERR(mds->mds_lov_obd))
+ RETURN(PTR_ERR(mds->mds_lov_obd));
- rc = obd_unpackmd(mds->mds_osc_exp, &lsm, lmm, lmm_size);
+ rc = obd_unpackmd(mds->mds_lov_exp, &lsm, lmm, lmm_size);
if (rc < 0)
RETURN(rc);
rc = mds_llog_add_unlink(obd, lsm, 0, logcookies,
cookies_size / sizeof(struct llog_cookie));
- obd_free_memmd(mds->mds_osc_exp, &lsm);
+ obd_free_memmd(mds->mds_lov_exp, &lsm);
RETURN(rc);
}
int rc;
ENTRY;
- if (IS_ERR(mds->mds_osc_obd))
- RETURN(PTR_ERR(mds->mds_osc_obd));
+ if (IS_ERR(mds->mds_lov_obd))
+ RETURN(PTR_ERR(mds->mds_lov_obd));
- rc = obd_checkmd(mds->mds_osc_exp, obd->obd_self_export, lsm);
+ rc = obd_checkmd(mds->mds_lov_exp, obd->obd_self_export, lsm);
if (rc)
RETURN(rc);
rc = mds_llog_add_unlink(obd, lsm, count - 1, &logcookie, 1);
int rc;
ENTRY;
- if (IS_ERR(mds->mds_osc_obd))
- RETURN(PTR_ERR(mds->mds_osc_obd));
+ if (IS_ERR(mds->mds_lov_obd))
+ RETURN(PTR_ERR(mds->mds_lov_obd));
- rc = obd_unpackmd(mds->mds_osc_exp, &lsm, lmm, lmm_size);
+ rc = obd_unpackmd(mds->mds_lov_exp, &lsm, lmm, lmm_size);
if (rc < 0)
RETURN(rc);
- rc = obd_checkmd(mds->mds_osc_exp, obd->obd_self_export, lsm);
+ rc = obd_checkmd(mds->mds_lov_exp, obd->obd_self_export, lsm);
if (rc)
GOTO(out, rc);
OBD_FREE(lsr, sizeof(*lsr));
out:
- obd_free_memmd(mds->mds_osc_exp, &lsm);
+ obd_free_memmd(mds->mds_lov_exp, &lsm);
RETURN(rc);
}
int mds_llog_init(struct obd_device *obd, struct obd_device *disk_obd,
int *index)
{
- struct obd_device *lov_obd = obd->u.mds.mds_osc_obd;
+ struct obd_device *lov_obd = obd->u.mds.mds_lov_obd;
struct llog_ctxt *ctxt;
int rc;
ENTRY;
ENTRY;
if (*lsmp == NULL) {
- rc = obd_alloc_memmd(obd->u.mds.mds_osc_exp, &lsm);
+ rc = obd_alloc_memmd(obd->u.mds.mds_lov_exp, &lsm);
if (rc < 0)
RETURN(rc);
/* need only one stripe, save old value */
if (lsm) {
/* restore stripes number */
lsm->lsm_stripe_count = stripes;
- obd_free_memmd(mds->mds_osc_exp, &lsm);
+ obd_free_memmd(mds->mds_lov_exp, &lsm);
}
#endif
EXIT;
obd_id idx)
{
struct mds_obd *mds = &obd->u.mds;
- struct obd_export *osc_exp = mds->mds_osc_exp;
+ struct obd_export *lov_exp = mds->mds_lov_exp;
unsigned int page;
unsigned int off;
obd_id *data;
+ __u64 connect_flags;
+ __u32 size;
int rc = 0;
ENTRY;
- LASSERT(osc_exp != NULL);
+ LASSERT(lov_exp != NULL);
page = idx / OBJID_PER_PAGE();
off = idx % OBJID_PER_PAGE();
data = mds->mds_lov_page_array[page];
- if (data[off] < 2 ||
- !(osc_exp->exp_connect_flags & OBD_CONNECT_SKIP_ORPHAN)) {
+ size = sizeof(__u64);
+ connect_flags = idx;
+ rc = obd_get_info(lov_exp, sizeof(KEY_CONNECT_FLAG), KEY_CONNECT_FLAG,
+ &size, &connect_flags, NULL);
+ if (rc)
+ GOTO(out, rc);
+
+ if (data[off] < 2 || connect_flags & OBD_CONNECT_SKIP_ORPHAN) {
/* We never read this lastid; ask the osc */
struct obd_id_info lastid;
- __u32 size = sizeof(lastid);
+ size = sizeof(lastid);
lastid.idx = idx;
lastid.data = &data[off];
- rc = obd_get_info(mds->mds_osc_exp, sizeof(KEY_LAST_ID),
+ rc = obd_get_info(lov_exp, sizeof(KEY_LAST_ID),
KEY_LAST_ID, &size, &lastid, NULL);
if (rc)
GOTO(out, rc);
if (ost_uuid != NULL)
oti.oti_ost_uuid = ost_uuid;
- rc = obd_create(mds->mds_osc_exp, &oa, &empty_ea, &oti);
+ rc = obd_create(mds->mds_lov_exp, &oa, &empty_ea, &oti);
RETURN(rc);
}
info.idx = idx;
info.data = id;
- rc = obd_set_info_async(mds->mds_osc_exp, sizeof(KEY_NEXT_ID),
+ rc = obd_set_info_async(mds->mds_lov_exp, sizeof(KEY_NEXT_ID),
KEY_NEXT_ID, sizeof(info), &info, NULL);
if (rc)
CERROR ("%s: mds_lov_set_nextid failed (%d)\n",
if (!ld)
RETURN(-ENOMEM);
- rc = obd_get_info(mds->mds_osc_exp, sizeof(KEY_LOVDESC), KEY_LOVDESC,
+ rc = obd_get_info(mds->mds_lov_exp, sizeof(KEY_LOVDESC), KEY_LOVDESC,
&valsize, ld, NULL);
if (rc)
GOTO(out, rc);
int rc;
ENTRY;
- if (IS_ERR(mds->mds_osc_obd))
- RETURN(PTR_ERR(mds->mds_osc_obd));
+ if (IS_ERR(mds->mds_lov_obd))
+ RETURN(PTR_ERR(mds->mds_lov_obd));
- if (mds->mds_osc_obd)
+ if (mds->mds_lov_obd)
RETURN(0);
- mds->mds_osc_obd = class_name2obd(lov_name);
- if (!mds->mds_osc_obd) {
+ mds->mds_lov_obd = class_name2obd(lov_name);
+ if (!mds->mds_lov_obd) {
CERROR("MDS cannot locate LOV %s\n", lov_name);
GOTO(error_exit, rc = -ENOTCONN);
}
/* Deny new client connections until we are sure we have some OSTs */
obd->obd_no_conn = 1;
- rc = obd_register_observer(mds->mds_osc_obd, obd);
+ rc = obd_register_observer(mds->mds_lov_obd, obd);
if (rc) {
CERROR("MDS cannot register as observer of LOV %s (%d)\n",
lov_name, rc);
/* ask lov to generate OBD_NOTIFY_CREATE events for already registered
* targets */
- obd_notify(obd->u.mds.mds_osc_obd, NULL, OBD_NOTIFY_CREATE, NULL);
+ obd_notify(obd->u.mds.mds_lov_obd, NULL, OBD_NOTIFY_CREATE, NULL);
OBD_ALLOC(data, sizeof(*data));
if (data == NULL)
#endif
data->ocd_version = LUSTRE_VERSION_CODE;
/* NB: lov_connect() needs to fill in .ocd_index for each OST */
- rc = obd_connect(&conn, mds->mds_osc_obd, &obd->obd_uuid, data, &mds->mds_osc_exp);
+ rc = obd_connect(&conn, mds->mds_lov_obd, &obd->obd_uuid, data, &mds->mds_lov_exp);
OBD_FREE(data, sizeof(*data));
if (rc) {
CERROR("MDS cannot connect to LOV %s (%d)\n", lov_name, rc);
RETURN(rc);
error_exit:
- mds->mds_osc_exp = NULL;
- mds->mds_osc_obd = ERR_PTR(rc);
+ mds->mds_lov_exp = NULL;
+ mds->mds_lov_obd = ERR_PTR(rc);
RETURN(rc);
}
int rc = 0;
ENTRY;
- if (!IS_ERR(mds->mds_osc_obd) && mds->mds_osc_exp != NULL) {
- obd_register_observer(mds->mds_osc_obd, NULL);
+ if (!IS_ERR(mds->mds_lov_obd) && mds->mds_lov_exp != NULL) {
+ obd_register_observer(mds->mds_lov_obd, NULL);
/* The actual disconnect of the mds_lov will be called from
* class_disconnect_exports from mds_lov_clean. So we have to
* ensure that class_cleanup doesn't fail due to the extra ref
* we're holding now. The mechanism to do that already exists -
* the obd_force flag. We'll drop the final ref to the
- * mds_osc_exp in mds_cleanup. */
- mds->mds_osc_obd->obd_force = 1;
+ * mds_lov_exp in mds_cleanup. */
+ mds->mds_lov_obd->obd_force = 1;
}
RETURN(rc);
rc = obd_llog_init(obd, obd, NULL);
llog_ctxt_put(ctxt);
- rc2 = obd_set_info_async(mds->mds_osc_exp,
+ rc2 = obd_set_info_async(mds->mds_lov_exp,
sizeof(KEY_MDS_CONN), KEY_MDS_CONN,
0, NULL, NULL);
if (!rc)
GOTO(out, rc);
}
- rc = obd_set_info_async(mds->mds_osc_exp, sizeof(KEY_MDS_CONN),
+ rc = obd_set_info_async(mds->mds_lov_exp, sizeof(KEY_MDS_CONN),
KEY_MDS_CONN, 0, uuid, NULL);
if (rc != 0)
GOTO(out, rc);
/* Deactivate it for safety */
CERROR("%s sync failed %d, deactivating\n", obd_uuid2str(uuid),
rc);
- if (!obd->obd_stopping && mds->mds_osc_obd &&
- !mds->mds_osc_obd->obd_stopping && !watched->obd_stopping)
- obd_notify(mds->mds_osc_obd, watched,
+ if (!obd->obd_stopping && mds->mds_lov_obd &&
+ !mds->mds_lov_obd->obd_stopping && !watched->obd_stopping)
+ obd_notify(mds->mds_lov_obd, watched,
OBD_NOTIFY_INACTIVE, NULL);
} else {
/* We've successfully synced at least 1 OST and are ready
inode->i_ino, inode->i_generation, le32_to_cpu(lmm->lmm_magic),
LOV_MAGIC);
- rc = obd_unpackmd(obd->u.mds.mds_osc_exp, &lsm, lmm, lmm_size);
+ rc = obd_unpackmd(obd->u.mds.mds_lov_exp, &lsm, lmm, lmm_size);
if (rc < 0)
GOTO(conv_end, rc);
- rc = obd_packmd(obd->u.mds.mds_osc_exp, &lmm, lsm);
+ rc = obd_packmd(obd->u.mds.mds_lov_exp, &lmm, lsm);
if (rc < 0)
GOTO(conv_free, rc);
lmm_size = rc;
rc = err ? err : lmm_size;
GOTO(conv_free, rc);
conv_free:
- obd_free_memmd(obd->u.mds.mds_osc_exp, &lsm);
+ obd_free_memmd(obd->u.mds.mds_lov_exp, &lsm);
conv_end:
return rc;
}
/* check if things like lfs setstripe are sending us the ea */
if (rec->ur_flags & MDS_OPEN_HAS_EA) {
rc = obd_iocontrol(OBD_IOC_LOV_SETSTRIPE,
- mds->mds_osc_exp,
+ mds->mds_lov_exp,
0, &oinfo.oi_md, rec->ur_eadata);
if (rc)
GOTO(out_oa, rc);
req->rq_export->exp_connect_flags);
if (rc > 0)
rc = obd_iocontrol(OBD_IOC_LOV_SETSTRIPE,
- mds->mds_osc_exp,
+ mds->mds_lov_exp,
0, &oinfo.oi_md, lmm);
OBD_FREE(lmm, lmm_sz);
if (rc)
GOTO(out_oa, rc);
}
- rc = obd_create(mds->mds_osc_exp, oinfo.oi_oa,
+ rc = obd_create(mds->mds_lov_exp, oinfo.oi_oa,
&oinfo.oi_md, &oti);
if (rc) {
int level = D_ERROR;
GOTO(out_oa, rc);
}
} else {
- rc = obd_iocontrol(OBD_IOC_LOV_SETEA, mds->mds_osc_exp,
+ rc = obd_iocontrol(OBD_IOC_LOV_SETEA, mds->mds_lov_exp,
0, &oinfo.oi_md, rec->ur_eadata);
if (rc) {
GOTO(out_oa, rc);
oinfo.oi_policy.l_extent.start = i_size_read(inode);
oinfo.oi_policy.l_extent.end = OBD_OBJECT_EOF;
- rc = obd_punch_rqset(mds->mds_osc_exp, &oinfo, &oti);
+ rc = obd_punch_rqset(mds->mds_lov_exp, &oinfo, &oti);
if (rc) {
CERROR("error setting attrs for inode %lu: rc %d\n",
inode->i_ino, rc);
LASSERT(oinfo.oi_md && oinfo.oi_md->lsm_object_id);
lmm = NULL;
- rc = obd_packmd(mds->mds_osc_exp, &lmm, oinfo.oi_md);
+ rc = obd_packmd(mds->mds_lov_exp, &lmm, oinfo.oi_md);
if (rc < 0) {
CERROR("cannot pack lsm, err = %d\n", rc);
GOTO(out_oa, rc);
*objid = lmm_buf; /* save for mds_lov_update_objid */
free_diskmd:
- obd_free_diskmd(mds->mds_osc_exp, &lmm);
+ obd_free_diskmd(mds->mds_lov_exp, &lmm);
out_oa:
oti_free_cookies(&oti);
OBDO_FREE(oinfo.oi_oa);
out_ids:
if (oinfo.oi_md)
- obd_free_memmd(mds->mds_osc_exp, &oinfo.oi_md);
+ obd_free_memmd(mds->mds_lov_exp, &oinfo.oi_md);
RETURN(rc);
}
CDEBUG(D_RPCTRACE, "cancelling %d cookies\n",
(int)(mlcd->mlcd_cookielen / sizeof(*mlcd->mlcd_cookies)));
- rc = obd_unpackmd(obd->u.mds.mds_osc_exp, &lsm, mlcd->mlcd_lmm,
+ rc = obd_unpackmd(obd->u.mds.mds_lov_exp, &lsm, mlcd->mlcd_lmm,
mlcd->mlcd_eadatalen);
if (rc < 0) {
CERROR("bad LSM cancelling %d log cookies: rc %d\n",
(int)(mlcd->mlcd_cookielen/sizeof(*mlcd->mlcd_cookies)),
rc);
} else {
- rc = obd_checkmd(obd->u.mds.mds_osc_exp, obd->obd_self_export,
+ rc = obd_checkmd(obd->u.mds.mds_lov_exp, obd->obd_self_export,
lsm);
if (rc)
CERROR("Can not revalidate lsm %p \n", lsm);
LASSERT(lmm);
- rc = obd_unpackmd(mds->mds_osc_exp, &oinfo.oi_md, lmm, lmm_size);
+ rc = obd_unpackmd(mds->mds_lov_exp, &oinfo.oi_md, lmm, lmm_size);
if (rc < 0) {
CERROR("Error unpack md %p for inode %lu\n", lmm, inode->i_ino);
GOTO(out, rc);
}
- rc = obd_checkmd(mds->mds_osc_exp, obd->obd_self_export, oinfo.oi_md);
+ rc = obd_checkmd(mds->mds_lov_exp, obd->obd_self_export, oinfo.oi_md);
if (rc) {
CERROR("Error revalidate lsm %p \n", oinfo.oi_md);
GOTO(out, rc);
oinfo.oi_oa->o_valid |= OBD_MD_FLFID | OBD_MD_FLGENER;
/* do async setattr from mds to ost not waiting for responses. */
- rc = obd_setattr_async(mds->mds_osc_exp, &oinfo, &oti, NULL);
+ rc = obd_setattr_async(mds->mds_lov_exp, &oinfo, &oti, NULL);
if (rc)
CDEBUG(D_INODE, "mds to ost setattr objid 0x"LPX64
" on ost error %d\n", oinfo.oi_md->lsm_object_id, rc);
out:
if (oinfo.oi_md)
- obd_free_memmd(mds->mds_osc_exp, &oinfo.oi_md);
+ obd_free_memmd(mds->mds_lov_exp, &oinfo.oi_md);
OBDO_FREE(oinfo.oi_oa);
RETURN(rc);
}
GOTO(cleanup, rc);
} else {
rc = obd_iocontrol(OBD_IOC_LOV_SETSTRIPE,
- mds->mds_osc_exp, 0,
+ mds->mds_lov_exp, 0,
&lsm, rec->ur_eadata);
if (rc)
GOTO(cleanup, rc);
- obd_free_memmd(mds->mds_osc_exp, &lsm);
+ obd_free_memmd(mds->mds_lov_exp, &lsm);
rc = fsfilt_set_md(obd, inode, handle, rec->ur_eadata,
rec->ur_eadatalen, "lov");
if (ia_valid & (ATTR_ATIME | ATTR_ATIME_SET))
body->valid |= OBD_MD_FLATIME;
- if (rc == 0 && rec->ur_cookielen && !IS_ERR(mds->mds_osc_obd)) {
+ if (rc == 0 && rec->ur_cookielen && !IS_ERR(mds->mds_lov_obd)) {
OBD_ALLOC(mlcd, sizeof(*mlcd) + rec->ur_cookielen +
rec->ur_eadatalen);
if (mlcd) {
if (lmm_size == 0)
RETURN(0);
- rc = obd_unpackmd(mds->mds_osc_exp, &lsm, lmm, lmm_size);
+ rc = obd_unpackmd(mds->mds_lov_exp, &lsm, lmm, lmm_size);
if (rc < 0) {
CERROR("Error unpack md %p\n", lmm);
RETURN(rc);
rc = 0;
}
- rc = obd_checkmd(mds->mds_osc_exp, obd->obd_self_export, lsm);
+ rc = obd_checkmd(mds->mds_lov_exp, obd->obd_self_export, lsm);
if (rc)
GOTO(out_free_memmd, rc);
oa->o_valid |= OBD_MD_FLCOOKIE;
oti.oti_logcookies = logcookies;
}
- rc = obd_destroy(mds->mds_osc_exp, oa, lsm, &oti, obd->obd_self_export);
+ rc = obd_destroy(mds->mds_lov_exp, oa, lsm, &oti, obd->obd_self_export);
OBDO_FREE(oa);
if (rc)
CDEBUG(D_INODE, "destroy orphan objid 0x"LPX64" on ost error "
"%d\n", lsm->lsm_object_id, rc);
out_free_memmd:
- obd_free_memmd(mds->mds_osc_exp, &lsm);
+ obd_free_memmd(mds->mds_lov_exp, &lsm);
RETURN(rc);
}
int rc, err;
ENTRY;
- LASSERT(mds->mds_osc_obd != NULL);
+ LASSERT(mds->mds_lov_obd != NULL);
/* We don't need to do any of these other things for orhpan dirs,
* especially not mds_get_md (may get a default LOV EA, bug 4554) */
cfs_waitq_signal(&oscc->oscc_waitq);
spin_unlock(&oscc->oscc_lock);
- if (rc < 0)
- RETURN(rc);
+ RETURN(rc);
}
lsm = *ea;
/* only when block qunit is reduced, boardcast to osts */
if ((adjust_res & LQS_BLK_DECREASE) && QAQ_IS_ADJBLK(oqaq))
- rc = obd_quota_adjust_qunit(mds->mds_osc_exp, oqaq, qctxt);
+ rc = obd_quota_adjust_qunit(mds->mds_lov_exp, oqaq, qctxt);
out:
lustre_dqput(dquot);
oqctl->qc_cmd = Q_FINVALIDATE;
rc = fsfilt_quotactl(obd, obd->u.obt.obt_sb, oqctl);
if (!rc)
- rc = obd_quotactl(mds->mds_osc_exp, oqctl);
+ rc = obd_quotactl(mds->mds_lov_exp, oqctl);
up(&mds->mds_qonoff_sem);
pop_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
else
GOTO(out, rc);
- rc = obd_quotactl(mds->mds_osc_exp, oqctl);
+ rc = obd_quotactl(mds->mds_lov_exp, oqctl);
out:
pop_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
mds_admin_quota_off(obd, oqctl);
- rc = obd_quotactl(mds->mds_osc_exp, oqctl);
+ rc = obd_quotactl(mds->mds_lov_exp, oqctl);
rc2 = fsfilt_quotactl(obd, obd->u.obt.obt_sb, oqctl);
if (!rc2)
obt->obt_qctxt.lqc_flags &= ~UGQUOTA2LQC(oqctl->qc_type);
gid = oqctl->qc_id;
/* initialize all slave's limit */
- rc = obd_quotactl(mds->mds_osc_exp, ioqc);
+ rc = obd_quotactl(mds->mds_lov_exp, ioqc);
rc = qctxt_adjust_qunit(obd, &obd->u.obt.obt_qctxt, uid, gid, 1, 0,
NULL);
/* adjust remote lqs */
if (QAQ_IS_ADJBLK(qaq)) {
- rc = obd_quota_adjust_qunit(obd->u.mds.mds_osc_exp, qaq, qctxt);
+ rc = obd_quota_adjust_qunit(obd->u.mds.mds_lov_exp, qaq, qctxt);
if (rc < 0)
CERROR("adjust slaves' qunit size failed!(rc=%d)\n", rc);
{
struct mds_obd *mds = &obd->u.mds;
struct lustre_quota_ctxt *qctxt = &mds->mds_obt.obt_qctxt;
- struct obd_device *lov_obd = class_exp2obd(mds->mds_osc_exp);
+ struct obd_device *lov_obd = class_exp2obd(mds->mds_lov_exp);
struct lov_obd *lov = &lov_obd->u.lov;
struct quota_adjust_qunit *oqaq = NULL;
struct lustre_quota_info *qinfo = &mds->mds_quota_info;
soqc->qc_id = oqctl->qc_id;
soqc->qc_type = oqctl->qc_type;
- rc = obd_quotactl(obd->u.mds.mds_osc_exp, soqc);
+ rc = obd_quotactl(obd->u.mds.mds_lov_exp, soqc);
oqctl->qc_dqblk.dqb_curspace = soqc->qc_dqblk.dqb_curspace;
qctl->qc_type = type;
qctl->qc_id = id;
qctl->qc_stat = QUOTA_RECOVERING;
- rc = obd_quotactl(obd->u.mds.mds_osc_exp, qctl);
+ rc = obd_quotactl(obd->u.mds.mds_lov_exp, qctl);
if (rc)
GOTO(out, rc);
total_limits = qctl->qc_dqblk.dqb_bhardlimit;