int (* fs_iocontrol)(struct inode *inode, struct file *file,
unsigned int cmd, unsigned long arg);
int (* fs_set_md)(struct inode *inode, void *handle, void *md,
- int size);
- int (* fs_get_md)(struct inode *inode, void *md, int size);
+ int size, const char *name);
+ int (* fs_get_md)(struct inode *inode, void *md, int size,
+ const char *name);
/*
* this method is needed to make IO operation fsfilt nature depend.
*
}
static inline int fsfilt_set_md(struct obd_device *obd, struct inode *inode,
- void *handle, void *md, int size)
+ void *handle, void *md, int size,
+ const char *name)
{
- return obd->obd_fsops->fs_set_md(inode, handle, md, size);
+ return obd->obd_fsops->fs_set_md(inode, handle, md, size, name);
}
static inline int fsfilt_get_md(struct obd_device *obd, struct inode *inode,
- void *md, int size)
+ void *md, int size, const char *name)
{
- return obd->obd_fsops->fs_get_md(inode, md, size);
+ return obd->obd_fsops->fs_get_md(inode, md, size, name);
}
static inline int fsfilt_send_bio(int rw, struct obd_device *obd,
}
static int fsfilt_ext3_set_md(struct inode *inode, void *handle,
- void *lmm, int lmm_size)
+ void *lmm, int lmm_size, const char *name)
{
int rc;
lock_24kernel();
rc = ext3_xattr_set_handle(handle, inode, EXT3_XATTR_INDEX_TRUSTED,
- XATTR_LUSTRE_MDS_LOV_EA, lmm, lmm_size, 0);
+ name, lmm, lmm_size, 0);
unlock_24kernel();
}
/* Must be called with i_sem held */
-static int fsfilt_ext3_get_md(struct inode *inode, void *lmm, int lmm_size)
+static int fsfilt_ext3_get_md(struct inode *inode, void *lmm, int lmm_size,
+ const char *name)
{
int rc;
lock_24kernel();
rc = ext3_xattr_get(inode, EXT3_XATTR_INDEX_TRUSTED,
- XATTR_LUSTRE_MDS_LOV_EA, lmm, lmm_size);
+ name, lmm, lmm_size);
unlock_24kernel();
/* This gives us the MD size */
if (rc < 0) {
CDEBUG(D_INFO, "error getting EA %d/%s from inode %lu: rc %d\n",
- EXT3_XATTR_INDEX_TRUSTED, XATTR_LUSTRE_MDS_LOV_EA,
+ EXT3_XATTR_INDEX_TRUSTED, name,
inode->i_ino, rc);
memset(lmm, 0, lmm_size);
return (rc == -ENODATA) ? 0 : rc;
}
static int fsfilt_reiserfs_set_md(struct inode *inode, void *handle,
- void *lmm, int lmm_size)
+ void *lmm, int lmm_size, const char *name)
{
/* XXX write stripe data into MDS file itself */
CERROR("not implemented yet\n");
return -ENOSYS;
}
-static int fsfilt_reiserfs_get_md(struct inode *inode, void *lmm, int lmm_size)
+static int fsfilt_reiserfs_get_md(struct inode *inode, void *lmm, int lmm_size,
+ const char *name)
{
if (lmm == NULL)
return inode->i_size;
if (lock)
down(&inode->i_sem);
- rc = fsfilt_get_md(obd, inode, md, *size);
+ rc = fsfilt_get_md(obd, inode, md, *size, "lov");
if (rc < 0) {
CERROR("Error %d reading eadata for ino %lu\n",
if ((S_ISREG(inode->i_mode) && (body->valid & OBD_MD_FLEASIZE)) ||
(S_ISDIR(inode->i_mode) && (body->valid & OBD_MD_FLDIREA))) {
down(&inode->i_sem);
- rc = fsfilt_get_md(req->rq_export->exp_obd, inode, NULL, 0);
+ rc = fsfilt_get_md(req->rq_export->exp_obd, inode, NULL, 0,
+ "lov");
up(&inode->i_sem);
CDEBUG(D_INODE, "got %d bytes MD data for inode %lu\n",
rc, inode->i_ino);
CDEBUG(D_INODE, "join finish, set lmm V2 to inode %lu \n",
head_inode->i_ino);
fsfilt_set_md(obd, head_inode, handle, head_lmmj,
- sizeof(struct lov_mds_md_join));
+ sizeof(struct lov_mds_md_join), "lov");
mds_finish_join(mds, req, head_inode, head_lmmj);
cleanup:
rc = mds_finish_transno(mds, head_inode, handle, req, rc, 0);
GOTO(conv_free, rc);
}
- rc = fsfilt_set_md(obd, inode, handle, lmm, lmm_size);
+ rc = fsfilt_set_md(obd, inode, handle, lmm, lmm_size, "lov");
err = fsfilt_commit(obd, inode, handle, 0);
if (!rc)
LASSERT(lmm_buf);
LASSERT(lmm_bufsize >= lmm_size);
memcpy(lmm_buf, lmm, lmm_size);
- rc = fsfilt_set_md(obd, inode, *handle, lmm, lmm_size);
+ rc = fsfilt_set_md(obd, inode, *handle, lmm, lmm_size, "lov");
if (rc)
CERROR("open replay failed to set md:%d\n", rc);
RETURN(0);
GOTO(out_oa, rc);
}
- rc = fsfilt_set_md(obd, inode, *handle, lmm, lmm_size);
+ rc = fsfilt_set_md(obd, inode, *handle, lmm, lmm_size, "lov");
lmm_buf = lustre_msg_buf(req->rq_repmsg, offset, 0);
lmm_bufsize = req->rq_repmsg->buflens[offset];
LASSERT(lmm_buf);
lum->lmm_stripe_count == 0) ||
/* lmm_stripe_size == -1 is deprecated in 1.4.6 */
lum->lmm_stripe_size == (typeof(lum->lmm_stripe_size))(-1))){
- rc = fsfilt_set_md(obd, inode, handle, NULL, 0);
+ rc = fsfilt_set_md(obd, inode, handle, NULL, 0, "lov");
if (rc)
GOTO(cleanup, rc);
} else {
obd_free_memmd(mds->mds_osc_exp, &lsm);
rc = fsfilt_set_md(obd, inode, handle, rec->ur_eadata,
- rec->ur_eadatalen);
+ rec->ur_eadatalen, "lov");
if (rc)
GOTO(cleanup, rc);
}
if (rc > 0) {
down(&inode->i_sem);
rc = fsfilt_set_md(obd, inode, handle,
- &lmm, lmm_size);
+ &lmm, lmm_size, "lov");
up(&inode->i_sem);
}
if (rc)
LPU64"/"LPU64")\n", oa->o_fid, oa->o_stripe_idx,
oa->o_generation, oa->o_id, group);
- rc = fsfilt_set_md(obd, inode, handle, &ff, sizeof(ff));
+ rc = fsfilt_set_md(obd, inode, handle, &ff, sizeof(ff), "fid");
if (rc)
CERROR("store fid in object failed! rc: %d\n", rc);
} else {
__FUNCTION__, 1);
if (IS_ERR(dentry))
RETURN(PTR_ERR(dentry));
-
+
filter = &exp->exp_obd->u.filter;
push_ctxt(&saved, &exp->exp_obd->obd_lvfs_ctxt, NULL);
lock_kernel();