Whamcloud - gitweb
Revert "LU-7899 osd: batch EA updates"
[fs/lustre-release.git] / lustre / osd-zfs / osd_object.c
index 912e91d..a1d3ab7 100644 (file)
@@ -112,49 +112,37 @@ osd_object_sa_init(struct osd_object *obj, struct osd_device *o)
 /*
  * Add object to list of dirty objects in tx handle.
  */
-void osd_object_sa_dirty_add(struct osd_object *obj, struct osd_thandle *oh)
+static void
+osd_object_sa_dirty_add(struct osd_object *obj, struct osd_thandle *oh)
 {
        if (!list_empty(&obj->oo_sa_linkage))
                return;
 
+       down(&oh->ot_sa_lock);
        write_lock(&obj->oo_attr_lock);
        if (likely(list_empty(&obj->oo_sa_linkage)))
                list_add(&obj->oo_sa_linkage, &oh->ot_sa_list);
        write_unlock(&obj->oo_attr_lock);
+       up(&oh->ot_sa_lock);
 }
 
 /*
  * Release spill block dbuf hold for all dirty SAs.
  */
-void osd_object_sa_dirty_rele(const struct lu_env *env, struct osd_thandle *oh)
+void osd_object_sa_dirty_rele(struct osd_thandle *oh)
 {
        struct osd_object *obj;
 
+       down(&oh->ot_sa_lock);
        while (!list_empty(&oh->ot_sa_list)) {
                obj = list_entry(oh->ot_sa_list.next,
                                 struct osd_object, oo_sa_linkage);
+               sa_spill_rele(obj->oo_sa_hdl);
                write_lock(&obj->oo_attr_lock);
                list_del_init(&obj->oo_sa_linkage);
-               if (obj->oo_late_xattr) {
-                       LASSERT(oh->ot_assigned != 0);
-                       /* we need oo_guard to protect oo_sa_xattr
-                        * consistency, but if we just take it, then
-                        * we break lock ordering. in majority of
-                        * cases the callers don't try to set EAs
-                        * very often in concurrent manner, so hopefully
-                        * we don't need to retake locks too often */
-                       if (down_read_trylock(&obj->oo_guard)) {
-                               __osd_sa_xattr_update(env, obj, oh);
-                               up_read(&obj->oo_guard);
-                       } else {
-                               down_read(&obj->oo_guard);
-                               __osd_sa_xattr_update(env, obj, oh);
-                               up_read(&obj->oo_guard);
-                       }
-               }
-               sa_spill_rele(obj->oo_sa_hdl);
                write_unlock(&obj->oo_attr_lock);
        }
+       up(&oh->ot_sa_lock);
 }
 
 /*