/* attr */
struct lu_attr {
- __u64 size;
- __u64 mtime;
- __u64 atime;
- __u64 ctime;
- __u64 blocks;
- __u32 mode;
- __u32 uid;
- __u32 gid;
- __u32 flags;
- __u32 nlink;
+ __u64 la_size;
+ __u64 la_mtime;
+ __u64 la_atime;
+ __u64 la_ctime;
+ __u64 la_blocks;
+ __u32 la_mode;
+ __u32 la_uid;
+ __u32 la_gid;
+ __u32 la_flags;
+ __u32 la_nlink;
};
/* the context of the ops*/
void lu_object_put(struct lu_context *ctxt, struct lu_object *o);
void lu_site_purge(struct lu_site *s, int nr);
int lu_object_print(struct seq_file *f, const struct lu_object *o);
-struct lu_object *lu_object_find(struct lu_context *ctxt,
+struct lu_object *lu_object_find(struct lu_context *ctxt,
struct lu_site *s, const struct lu_fid *f);
int lu_site_init(struct lu_site *s, struct lu_device *top);
{
struct mdt_device *d = info->mti_mdt;
struct mdt_object *o;
- struct md_object *next;
int result;
ENTRY;
-
+
o = mdt_object_find(&info->mti_ctxt, d, fid);
if (IS_ERR(o))
return PTR_ERR(o);
/* attr are in mti_ctxt */
result = 0;
mdt_object_put(&info->mti_ctxt, o);
-
+
RETURN(result);
}
b->valid |= OBD_MD_FLID | OBD_MD_FLCTIME | OBD_MD_FLUID |
OBD_MD_FLGID | OBD_MD_FLFLAGS | OBD_MD_FLTYPE |
OBD_MD_FLMODE | OBD_MD_FLNLINK | OBD_MD_FLGENER;
-
- if (!S_ISREG(attr->mode))
+
+ if (!S_ISREG(attr->la_mode))
b->valid |= OBD_MD_FLSIZE | OBD_MD_FLBLOCKS | OBD_MD_FLATIME |
OBD_MD_FLMTIME;
- b->atime = attr->atime;
- b->mtime = attr->mtime;
- b->ctime = attr->ctime;
- b->mode = attr->mode;
- b->size = attr->size;
- b->blocks = attr->blocks;
- b->uid = attr->uid;
- b->gid = attr->gid;
- b->flags = attr->flags;
- b->nlink = attr->nlink;
+ b->atime = attr->la_atime;
+ b->mtime = attr->la_mtime;
+ b->ctime = attr->la_ctime;
+ b->mode = attr->la_mode;
+ b->size = attr->la_size;
+ b->blocks = attr->la_blocks;
+ b->uid = attr->la_uid;
+ b->gid = attr->la_gid;
+ b->flags = attr->la_flags;
+ b->nlink = attr->la_nlink;
}
static int mdt_getattr(struct mdt_thread_info *info,
int result;
ENTRY;
-
+
OBD_ALLOC_PTR(attr);
if (attr == NULL)
return -ENOMEM;
} else {
body = lustre_msg_buf(req->rq_repmsg, 0, size);
result = mdt_md_getattr(info, &body->fid1);
- if (result == 0)
+ if (result == 0)
mdt_pack_attr2body(body, &info->mti_ctxt.lc_attr);
}
-out:
OBD_FREE_PTR(attr);
RETURN(result);
}
struct mdt_device *m = opaque;
int rc;
ENTRY;
-
+
rc = mdt_config(m, LUSTRE_CONFIG_METASEQ,
seq, sizeof(*seq),
mode);
CERROR("can't initialize sequence manager\n");
GOTO(err_fini_child, rc);
}
-
+
/* init sequence info after device stack is initialized. */
rc = seq_mgr_setup(m->mdt_seq_mgr);
if (rc)
static int osd_getattr(struct inode *inode, struct lu_attr *attr)
{
- //attr->atime = inode->i_atime;
- //attr->mtime = inode->i_mtime;
- //attr->ctime = inode->i_ctime;
- attr->mode = inode->i_mode;
- attr->size = inode->i_size;
- attr->blocks = inode->i_blocks;
- attr->uid = inode->i_uid;
- attr->gid = inode->i_gid;
- attr->flags = inode->i_flags;
- attr->nlink = inode->i_nlink;
+ //attr->la_atime = inode->i_atime;
+ //attr->la_mtime = inode->i_mtime;
+ //attr->la_ctime = inode->i_ctime;
+ attr->la_mode = inode->i_mode;
+ attr->la_size = inode->i_size;
+ attr->la_blocks = inode->i_blocks;
+ attr->la_uid = inode->i_uid;
+ attr->la_gid = inode->i_gid;
+ attr->la_flags = inode->i_flags;
+ attr->la_nlink = inode->i_nlink;
return 0;
}
struct osd_device *d = osd_dev(l->lo_dev);
struct osd_object *o = osd_obj(l);
struct lu_fid *f = lu_object_fid(l);
-
+
/* fill lu_attr in ctxt */
//XXX temporary hack for proto only
osd_getattr(d->od_mount->lmi_sb->s_root->d_inode, &ctxt->lc_attr);
static int osd_attr_get(struct lu_context *ctxt, struct dt_object *dt,
void *buf, int size, const char *name,
- struct md_params *arg)
+ struct md_params *arg)
{
struct osd_object *o = dt2osd_obj(dt);
struct osd_device *dev = osd_obj2dev(o);
//struct super_block *sb = dev->od_mount->lmi_sb;
struct inode *inode = o->oo_dentry->d_inode;
int result = -EOPNOTSUPP;
-
+
ENTRY;
-
+
memset(buf, 0, size);
- //TODO
+ //TODO
RETURN (result);
-
+
}
static struct dt_device_operations osd_dt_ops = {