}
LASSERT(obj != NULL);
- LASSERT(lu_object_assert_exists(&obj->mot_obj.mo_lu));
+ LASSERT(lu_object_assert_exists(&obj->mot_obj));
- mode = lu_object_attr(&obj->mot_obj.mo_lu);
+ mode = lu_object_attr(&obj->mot_obj);
/* old clients may not report needed easize, use max value then */
req_capsule_set_size(pill, &RMF_MDT_MD, RCL_SERVER,
if (unlikely(!mdt_object_exists(parent))) {
LU_OBJECT_DEBUG(D_INODE, info->mti_env,
- &parent->mot_obj.mo_lu,
+ &parent->mot_obj,
"Parent doesn't exist!\n");
RETURN(-ESTALE);
} else if (!info->mti_cross_ref) {
if (lname) {
/* step 1: lock parent only if parent is a directory */
- if (S_ISDIR(lu_object_attr(&parent->mot_obj.mo_lu))) {
+ if (S_ISDIR(lu_object_attr(&parent->mot_obj))) {
lhp = &info->mti_lh[MDT_LH_PARENT];
mdt_lock_pdo_init(lhp, LCK_PR, name, namelen);
rc = mdt_object_lock(info, parent, lhp,
if (!mdt_object_exists(child)) {
LU_OBJECT_DEBUG(D_INODE, info->mti_env,
- &child->mot_obj.mo_lu,
+ &child->mot_obj,
"Object doesn't exist!\n");
GOTO(out_child, rc = -ENOENT);
}
LASSERT(!(child_bits & MDS_INODELOCK_LAYOUT));
if (!OBD_FAIL_CHECK(OBD_FAIL_MDS_NO_LL_GETATTR) &&
exp_connect_layout(info->mti_exp) &&
- S_ISREG(lu_object_attr(&child->mot_obj.mo_lu)) &&
+ S_ISREG(lu_object_attr(&child->mot_obj)) &&
ldlm_rep != NULL) {
/* try to grant layout lock for regular file. */
try_layout = true;
static struct mdt_object *mdt_obj(struct lu_object *o)
{
- LASSERT(lu_device_is_mdt(o->lo_dev));
- return container_of0(o, struct mdt_object, mot_obj.mo_lu);
+ LASSERT(lu_device_is_mdt(o->lo_dev));
+ return container_of0(o, struct mdt_object, mot_obj);
}
struct mdt_object *mdt_object_new(const struct lu_env *env,
ENTRY;
CDEBUG(D_INFO, "Allocate object for "DFID"\n", PFID(f));
- o = lu_object_find(env, &d->mdt_md_dev.md_lu_dev, f, &conf);
+ o = lu_object_find(env, &d->mdt_lu_dev, f, &conf);
if (unlikely(IS_ERR(o)))
m = (struct mdt_object *)o;
else
}
struct mdt_object *mdt_object_find(const struct lu_env *env,
- struct mdt_device *d,
- const struct lu_fid *f)
+ struct mdt_device *d,
+ const struct lu_fid *f)
{
- struct lu_object *o;
- struct mdt_object *m;
- ENTRY;
+ struct lu_object *o;
+ struct mdt_object *m;
+ ENTRY;
- CDEBUG(D_INFO, "Find object for "DFID"\n", PFID(f));
- o = lu_object_find(env, &d->mdt_md_dev.md_lu_dev, f, NULL);
- if (unlikely(IS_ERR(o)))
- m = (struct mdt_object *)o;
- else
- m = mdt_obj(o);
- RETURN(m);
+ CDEBUG(D_INFO, "Find object for "DFID"\n", PFID(f));
+ o = lu_object_find(env, &d->mdt_lu_dev, f, NULL);
+ if (unlikely(IS_ERR(o)))
+ m = (struct mdt_object *)o;
+ else
+ m = mdt_obj(o);
+
+ RETURN(m);
}
/**
RETURN(-ESTALE);
} else {
/* Non-dir object shouldn't have PDO lock */
- if (!S_ISDIR(lu_object_attr(&o->mot_obj.mo_lu)))
- RETURN(-ENOTDIR);
+ if (!S_ISDIR(lu_object_attr(&o->mot_obj)))
+ RETURN(-ENOTDIR);
}
}
site = mdt->mdt_child_exp->exp_obd->obd_lu_dev->ld_site;
LASSERT(site);
LASSERT(mdt_lu_site(mdt) == NULL);
- mdt->mdt_md_dev.md_lu_dev.ld_site = site;
- site->ls_top_dev = &mdt->mdt_md_dev.md_lu_dev;
+ mdt->mdt_lu_dev.ld_site = site;
+ site->ls_top_dev = &mdt->mdt_lu_dev;
mdt->mdt_child = lu2md_dev(mdt->mdt_child_exp->exp_obd->obd_lu_dev);
if (rc != 0)
CERROR("Failure to refill session: '%d'\n", rc);
- lu_dev_add_linkage(site, &mdt->mdt_md_dev.md_lu_dev);
+ lu_dev_add_linkage(site, &mdt->mdt_lu_dev);
EXIT;
class_detach:
/* configure local quota objects */
rc = mdt->mdt_qmt_dev->ld_ops->ldo_prepare(env,
- &mdt->mdt_md_dev.md_lu_dev,
+ &mdt->mdt_lu_dev,
mdt->mdt_qmt_dev);
if (rc)
GOTO(class_cleanup, rc);
static void mdt_fini(const struct lu_env *env, struct mdt_device *m)
{
- struct md_device *next = m->mdt_child;
- struct lu_device *d = &m->mdt_md_dev.md_lu_dev;
+ struct md_device *next = m->mdt_child;
+ struct lu_device *d = &m->mdt_lu_dev;
struct obd_device *obd = mdt2obd_dev(m);
ENTRY;
mntopt_t mntopts;
ENTRY;
- md_device_init(&m->mdt_md_dev, ldt);
+ lu_device_init(&m->mdt_lu_dev, ldt);
/*
* Environment (env) might be missing mdt_thread_key values at that
* point, if device is allocated when mdt_thread_key is in QUIESCENT
m->mdt_enable_remote_dir = 0;
m->mdt_enable_remote_dir_gid = 0;
- m->mdt_md_dev.md_lu_dev.ld_ops = &mdt_lu_ops;
- m->mdt_md_dev.md_lu_dev.ld_obd = obd;
- /* set this lu_device to obd, because error handling need it */
- obd->obd_lu_dev = &m->mdt_md_dev.md_lu_dev;
+ m->mdt_lu_dev.ld_ops = &mdt_lu_ops;
+ m->mdt_lu_dev.ld_obd = obd;
+ /* Set this lu_device to obd for error handling purposes. */
+ obd->obd_lu_dev = &m->mdt_lu_dev;
/* init the stack */
rc = mdt_stack_init((struct lu_env *)env, m, cfg);
struct lu_object *o;
struct lu_object_header *h;
- o = &mo->mot_obj.mo_lu;
+ o = &mo->mot_obj;
h = &mo->mot_header;
lu_object_header_init(h);
lu_object_init(o, h, d);
static struct lu_device *mdt_device_free(const struct lu_env *env,
struct lu_device *d)
{
- struct mdt_device *m = mdt_dev(d);
- ENTRY;
+ struct mdt_device *m = mdt_dev(d);
+ ENTRY;
- md_device_fini(&m->mdt_md_dev);
- OBD_FREE_PTR(m);
- RETURN(NULL);
+ lu_device_fini(&m->mdt_lu_dev);
+ OBD_FREE_PTR(m);
+
+ RETURN(NULL);
}
static struct lu_device *mdt_device_alloc(const struct lu_env *env,
if (m != NULL) {
int rc;
- l = &m->mdt_md_dev.md_lu_dev;
+ l = &m->mdt_lu_dev;
rc = mdt_init0(env, m, t, cfg);
if (rc != 0) {
mdt_device_free(env, l);
#define MDT_FL_SYNCED 1
struct mdt_device {
- /* super-class */
- struct md_device mdt_md_dev;
+ /* super-class */
+ struct lu_device mdt_lu_dev;
struct seq_server_site mdt_seq_site;
- struct ptlrpc_service *mdt_regular_service;
- struct ptlrpc_service *mdt_readpage_service;
- struct ptlrpc_service *mdt_out_service;
- struct ptlrpc_service *mdt_setattr_service;
- struct ptlrpc_service *mdt_mdsc_service;
- struct ptlrpc_service *mdt_mdss_service;
- struct ptlrpc_service *mdt_dtss_service;
- struct ptlrpc_service *mdt_fld_service;
/* DLM name-space for meta-data locks maintained by this server */
struct ldlm_namespace *mdt_namespace;
/* ptlrpc handle for MDS->client connections (for lock ASTs). */
#define MDT_COS_DEFAULT (0)
struct mdt_object {
- struct lu_object_header mot_header;
- struct md_object mot_obj;
+ struct lu_object_header mot_header;
+ struct lu_object mot_obj;
__u64 mot_ioepoch;
__u64 mot_flags;
int mot_ioepoch_count;
static inline struct md_object *mdt_object_child(struct mdt_object *o)
{
- LASSERT(o);
- return lu2md(lu_object_next(&o->mot_obj.mo_lu));
+ LASSERT(o);
+ return lu2md(lu_object_next(&o->mot_obj));
}
static inline struct ptlrpc_request *mdt_info_req(struct mdt_thread_info *info)
}
static inline void mdt_object_get(const struct lu_env *env,
- struct mdt_object *o)
+ struct mdt_object *o)
{
- ENTRY;
- lu_object_get(&o->mot_obj.mo_lu);
- EXIT;
+ ENTRY;
+ lu_object_get(&o->mot_obj);
+ EXIT;
}
static inline void mdt_object_put(const struct lu_env *env,
- struct mdt_object *o)
+ struct mdt_object *o)
{
- ENTRY;
- lu_object_put(env, &o->mot_obj.mo_lu);
- EXIT;
+ ENTRY;
+ lu_object_put(env, &o->mot_obj);
+ EXIT;
}
static inline int mdt_object_exists(const struct mdt_object *o)
{
- return lu_object_exists(&o->mot_obj.mo_lu);
+ return lu_object_exists(&o->mot_obj);
}
static inline int mdt_object_remote(const struct mdt_object *o)
{
- return lu_object_remote(&o->mot_obj.mo_lu);
+ return lu_object_remote(&o->mot_obj);
}
static inline const struct lu_fid *mdt_object_fid(const struct mdt_object *o)
{
- return lu_object_fid(&o->mot_obj.mo_lu);
+ return lu_object_fid(&o->mot_obj);
}
static inline struct lu_site *mdt_lu_site(const struct mdt_device *mdt)
{
- return mdt->mdt_md_dev.md_lu_dev.ld_site;
+ return mdt->mdt_lu_dev.ld_site;
}
static inline struct seq_server_site *mdt_seq_site(struct mdt_device *mdt)
static inline struct mdt_device *mdt_dev(struct lu_device *d)
{
-// LASSERT(lu_device_is_mdt(d));
- return container_of0(d, struct mdt_device, mdt_md_dev.md_lu_dev);
+ return container_of0(d, struct mdt_device, mdt_lu_dev);
}
static inline struct dt_object *mdt_obj2dt(struct mdt_object *mo)
{
- struct lu_object *lo;
- struct mdt_device *mdt = mdt_dev(mo->mot_obj.mo_lu.lo_dev);
+ struct lu_object *lo;
+ struct mdt_device *mdt = mdt_dev(mo->mot_obj.lo_dev);
+
+ lo = lu_object_locate(mo->mot_obj.lo_header,
+ mdt->mdt_bottom->dd_lu_dev.ld_type);
- lo = lu_object_locate(mo->mot_obj.mo_lu.lo_header,
- mdt->mdt_bottom->dd_lu_dev.ld_type);
- return lu2dt(lo);
+ return lu2dt(lo);
}
/* mdt/mdt_identity.c */
static inline struct obd_device *mdt2obd_dev(const struct mdt_device *mdt)
{
- return mdt->mdt_md_dev.md_lu_dev.ld_obd;
+ return mdt->mdt_lu_dev.ld_obd;
}
extern const struct lu_device_operations mdt_lu_ops;
{
LASSERTF(lu_device_is_mdt(d), "It is %s instead of MDT %p %p\n",
d->ld_type->ldt_name, d->ld_ops, &mdt_lu_ops);
- return container_of0(d, struct mdt_device, mdt_md_dev.md_lu_dev);
+ return container_of0(d, struct mdt_device, mdt_lu_dev);
}
static inline char *mdt_obd_name(struct mdt_device *mdt)
{
- return mdt->mdt_md_dev.md_lu_dev.ld_obd->obd_name;
+ return mdt->mdt_lu_dev.ld_obd->obd_name;
}
int mds_mod_init(void);
int rc = 0;
ENTRY;
- if (!(mdt_conn_flags(info) & OBD_CONNECT_SOM) ||
- !S_ISREG(lu_object_attr(&o->mot_obj.mo_lu)))
- RETURN(0);
+ if (!(mdt_conn_flags(info) & OBD_CONNECT_SOM) ||
+ !S_ISREG(lu_object_attr(&o->mot_obj)))
+ RETURN(0);
mutex_lock(&o->mot_ioepoch_mutex);
if (mdt_ioepoch_opened(o)) {
*/
static int mdt_ioepoch_close(struct mdt_thread_info *info, struct mdt_object *o)
{
- struct ptlrpc_request *req = mdt_info_req(info);
- ENTRY;
+ struct ptlrpc_request *req = mdt_info_req(info);
+ ENTRY;
- if (!(mdt_conn_flags(info) & OBD_CONNECT_SOM) ||
- !S_ISREG(lu_object_attr(&o->mot_obj.mo_lu)))
- RETURN(0);
+ if (!(mdt_conn_flags(info) & OBD_CONNECT_SOM) ||
+ !S_ISREG(lu_object_attr(&o->mot_obj)))
+ RETURN(0);
LASSERT(o->mot_ioepoch_count);
LASSERT(info->mti_ioepoch == NULL ||
*/
int mdt_som_au_close(struct mdt_thread_info *info, struct mdt_object *o)
{
- struct ptlrpc_request *req = mdt_info_req(info);
- __u64 ioepoch = 0;
- int act = MDT_SOM_ENABLE;
- int rc = 0;
- ENTRY;
+ struct ptlrpc_request *req = mdt_info_req(info);
+ __u64 ioepoch = 0;
+ int act = MDT_SOM_ENABLE;
+ int rc = 0;
+ ENTRY;
- LASSERT(!req || info->mti_ioepoch);
- if (!(mdt_conn_flags(info) & OBD_CONNECT_SOM) ||
- !S_ISREG(lu_object_attr(&o->mot_obj.mo_lu)))
- RETURN(0);
+ LASSERT(!req || info->mti_ioepoch);
+ if (!(mdt_conn_flags(info) & OBD_CONNECT_SOM) ||
+ !S_ISREG(lu_object_attr(&o->mot_obj)))
+ RETURN(0);
/* No size whereas MF_SOM_CHANGE is set means client failed to
* obtain ost attributes, drop the SOM cache on disk if so. */
RETURN(rc);
repbody->valid |= OBD_MD_FLMDSCAPA;
}
+
if (info->mti_mdt->mdt_opts.mo_oss_capa &&
exp_connect_flags(exp) & OBD_CONNECT_OSS_CAPA &&
- S_ISREG(lu_object_attr(&o->mot_obj.mo_lu))) {
+ S_ISREG(lu_object_attr(&o->mot_obj))) {
struct lustre_capa *capa;
capa = req_capsule_server_get(info->mti_pill, &RMF_CAPA2);
*ibits = MDS_INODELOCK_LOOKUP | MDS_INODELOCK_OPEN;
}
- if (S_ISREG(lu_object_attr(&obj->mot_obj.mo_lu))) {
+ if (S_ISREG(lu_object_attr(&obj->mot_obj))) {
if (ma->ma_need & MA_LOV && !(ma->ma_valid & MA_LOV) &&
md_should_create(open_flags))
create_layout = true;
CERROR("%s: "DFID" isn't on this server!: rc = %d\n",
mdt_obd_name(info->mti_mdt), PFID(fid), -EFAULT);
LU_OBJECT_DEBUG(D_WARNING, info->mti_env,
- &o->mot_obj.mo_lu,
+ &o->mot_obj,
"Object isn't on this server! FLD error?\n");
rc = -EFAULT;
} else {
rc = mdt_attr_get_complex(info, mo, ma);
if (rc) {
CERROR("file attribute read error for "DFID": %d.\n",
- PFID(lu_object_fid(&mo->mot_obj.mo_lu)), rc);
+ PFID(mdt_object_fid(mo)), rc);
RETURN(rc);
}
rc = mdt_hsm_attr_set(info, mo, &ma->ma_hsm);
if (rc) {
CERROR("file attribute change error for "DFID": %d\n",
- PFID(lu_object_fid(&mo->mot_obj.mo_lu)), rc);
+ PFID(mdt_object_fid(mo)), rc);
RETURN(rc);
}
}
if (info->mti_mdt->mdt_opts.mo_oss_capa &&
exp_connect_flags(info->mti_exp) & OBD_CONNECT_OSS_CAPA &&
- S_ISREG(lu_object_attr(&mo->mot_obj.mo_lu)) &&
+ S_ISREG(lu_object_attr(&mo->mot_obj)) &&
(ma->ma_attr.la_valid & LA_SIZE) && !som_au) {
struct lustre_capa *capa;
ENTRY;
LASSERT(info->mti_object != NULL);
- LASSERT(lu_object_assert_exists(&info->mti_object->mot_obj.mo_lu));
+ LASSERT(lu_object_assert_exists(&info->mti_object->mot_obj));
CDEBUG(D_INODE, "getxattr "DFID"\n", PFID(&info->mti_body->fid1));