Whamcloud - gitweb
LU-3539 osp: Fix a series of UPDATE_OBJ endianness bugs
[fs/lustre-release.git] / lustre / target / out_handler.c
index 74e8f47..55e826d 100644 (file)
@@ -211,7 +211,8 @@ static int out_create(struct tgt_session_info *tsi)
                RETURN(err_serious(-EPROTO));
        }
 
-       obdo_le_to_cpu(wobdo, wobdo);
+       if (ptlrpc_req_need_swab(tsi->tsi_pill->rc_req))
+               lustre_swab_obdo(wobdo);
        lustre_get_wire_obdo(NULL, lobdo, wobdo);
        la_from_obdo(attr, lobdo, lobdo->o_valid);
 
@@ -323,7 +324,9 @@ static int out_attr_set(struct tgt_session_info *tsi)
 
        attr->la_valid = 0;
        attr->la_valid = 0;
-       obdo_le_to_cpu(wobdo, wobdo);
+
+       if (ptlrpc_req_need_swab(tsi->tsi_pill->rc_req))
+               lustre_swab_obdo(wobdo);
        lustre_get_wire_obdo(NULL, lobdo, wobdo);
        la_from_obdo(attr, lobdo, lobdo->o_valid);
 
@@ -399,7 +402,6 @@ static int out_attr_get(struct tgt_session_info *tsi)
 
        obdo->o_valid = 0;
        obdo_from_la(obdo, la, la->la_valid);
-       obdo_cpu_to_le(obdo, obdo);
        lustre_set_wire_obdo(NULL, obdo, obdo);
 
 out_unlock:
@@ -430,6 +432,12 @@ static int out_xattr_get(struct tgt_session_info *tsi)
 
        ENTRY;
 
+       if (!lu_object_exists(&obj->do_lu)) {
+               set_bit(LU_OBJECT_HEARD_BANSHEE,
+                       &obj->do_lu.lo_header->loh_flags);
+               RETURN(-ENOENT);
+       }
+
        name = object_update_param_get(update, 0, NULL);
        if (name == NULL) {
                CERROR("%s: empty name for xattr get: rc = %d\n",