* lu_object_operations, but that would break existing symmetry.
*/
+ int (*do_declare_attr_get)(const struct lu_env *env,
+ struct dt_object *dt,
+ struct lustre_capa *capa);
/**
* Return standard attributes.
*
const struct lu_attr *attr,
struct thandle *handle,
struct lustre_capa *capa);
+
+ int (*do_declare_xattr_get)(const struct lu_env *env,
+ struct dt_object *dt,
+ struct lu_buf *buf,
+ const char *name,
+ struct lustre_capa *capa);
+
/**
* Return a value of an extended attribute.
*
return dt->do_ops->do_write_locked(env, dt);
}
+static inline int dt_declare_attr_get(const struct lu_env *env,
+ struct dt_object *dt,
+ struct lustre_capa *capa)
+{
+ LASSERT(dt);
+ LASSERT(dt->do_ops);
+ LASSERT(dt->do_ops->do_declare_attr_get);
+ return dt->do_ops->do_declare_attr_get(env, dt, capa);
+}
+
static inline int dt_attr_get(const struct lu_env *env, struct dt_object *dt,
struct lu_attr *la, void *arg)
{
return dt->do_ops->do_xattr_set(env, dt, buf, name, fl, th, capa);
}
+static inline int dt_declare_xattr_get(const struct lu_env *env,
+ struct dt_object *dt,
+ struct lu_buf *buf,
+ const char *name,
+ struct lustre_capa *capa)
+{
+ LASSERT(dt);
+ LASSERT(dt->do_ops);
+ LASSERT(dt->do_ops->do_declare_xattr_get);
+ return dt->do_ops->do_declare_xattr_get(env, dt, buf, name, capa);
+}
+
static inline int dt_xattr_get(const struct lu_env *env,
struct dt_object *dt, struct lu_buf *buf,
const char *name, struct lustre_capa *capa)