+void __osd_xattr_declare_set(const struct lu_env *env, struct osd_object *obj,
+ int vallen, const char *name, struct osd_thandle *oh);
+int __osd_sa_xattr_set(const struct lu_env *env, struct osd_object *obj,
+ const struct lu_buf *buf, const char *name, int fl,
+ struct osd_thandle *oh);;
+int __osd_xattr_set(const struct lu_env *env, struct osd_object *obj,
+ const struct lu_buf *buf, const char *name, int fl,
+ struct osd_thandle *oh);
+static inline int
+osd_xattr_set_internal(const struct lu_env *env, struct osd_object *obj,
+ const struct lu_buf *buf, const char *name, int fl,
+ struct osd_thandle *oh, struct lustre_capa *capa)
+{
+ int rc;
+
+ if (osd_obj2dev(obj)->od_xattr_in_sa) {
+ rc = __osd_sa_xattr_set(env, obj, buf, name, fl, oh);
+ if (rc == -EFBIG)
+ rc = __osd_xattr_set(env, obj, buf, name, fl, oh);
+ } else {
+ rc = __osd_xattr_set(env, obj, buf, name, fl, oh);
+ }
+
+ return rc;
+}