/* llo_* api support */
#include <md_object.h>
-static const char MDT_XATTR_NAME[] = "trusted.lma";
static const char dot[] = ".";
static const char dotdot[] = "..";
static const char remote_obj_dir[] = "REM_OBJ_DIR";
struct iattr iattr;
int rc;
- iattr.ia_valid = bits & (LA_UID | LA_GID);
+ iattr.ia_valid = 0;
+ if (bits & LA_UID)
+ iattr.ia_valid |= ATTR_UID;
+ if (bits & LA_GID)
+ iattr.ia_valid |= ATTR_GID;
iattr.ia_uid = attr->la_uid;
iattr.ia_gid = attr->la_gid;
osd_push_ctxt(env, save);
return __osd_xattr_set(env, dt,
osd_buf_get(env, mdt_attrs, sizeof *mdt_attrs),
- MDT_XATTR_NAME, LU_XATTR_CREATE);
+ XATTR_NAME_LMA, LU_XATTR_CREATE);
}
LASSERT(inode->i_op != NULL && inode->i_op->getxattr != NULL);
- rc = inode->i_op->getxattr(dentry, MDT_XATTR_NAME, (void *)mdt_attrs,
+ rc = inode->i_op->getxattr(dentry, XATTR_NAME_LMA, (void *)mdt_attrs,
sizeof *mdt_attrs);
if (rc > 0) {
RETURN(rc);
}
+static int osd_data_get(const struct lu_env *env, struct dt_object *dt,
+ void **data)
+{
+ struct osd_object *obj = osd_dt_obj(dt);
+ ENTRY;
+
+ *data = (void *)obj->oo_inode;
+ RETURN(0);
+}
+
static const struct dt_object_operations osd_obj_ops = {
.do_read_lock = osd_object_read_lock,
.do_write_lock = osd_object_write_lock,
.do_xattr_list = osd_xattr_list,
.do_capa_get = osd_capa_get,
.do_object_sync = osd_object_sync,
+ .do_data_get = osd_data_get,
};
/**
.do_xattr_list = osd_xattr_list,
.do_capa_get = osd_capa_get,
.do_object_sync = osd_object_sync,
+ .do_data_get = osd_data_get,
};
/*
const struct lu_fid_pack *pack = (const struct lu_fid_pack *)rec;
const char *name = (const char *)key;
struct osd_object *child;
-
+#ifdef HAVE_QUOTA_SUPPORT
+ cfs_cap_t save = current->cap_effective;
+#endif
int rc;
ENTRY;
RETURN(rc);
child = osd_object_find(env, dt, fid);
if (!IS_ERR(child)) {
+#ifdef HAVE_QUOTA_SUPPORT
+ if (ignore_quota)
+ current->cap_effective |= CFS_CAP_SYS_RESOURCE_MASK;
+ else
+ current->cap_effective &= ~CFS_CAP_SYS_RESOURCE_MASK;
+#endif
rc = osd_ea_add_rec(env, obj, child, name, th);
+
+#ifdef HAVE_QUOTA_SUPPORT
+ current->cap_effective = save;
+#endif
osd_object_put(env, child);
} else {
rc = PTR_ERR(child);
* fids. Unfortunately it is somewhat expensive (does a
* cache-lookup). Disabling it for production/acceptance-testing.
*/
- LASSERT(1 || fid_is_local(ldev->ld_site, fid));
+ LASSERT(1 || fid_is_local(env, ldev->ld_site, fid));
ENTRY;
static void __exit osd_mod_exit(void)
{
+ llo_local_obj_unregister(&llod_osd_rem_obj_dir);
class_unregister_type(LUSTRE_OSD_NAME);
}