Whamcloud - gitweb
LU-14760 llite: restart clio for AIO if necessary
[fs/lustre-release.git] / lustre / target / out_lib.c
index d42187f..05987a7 100644 (file)
@@ -43,7 +43,7 @@
 
 const char *update_op_str(__u16 opc)
 {
-       static const char *opc_str[] = {
+       static const char *const opc_str[] = {
                [OUT_START] = "start",
                [OUT_CREATE] = "create",
                [OUT_DESTROY] = "destroy",
@@ -597,6 +597,10 @@ int out_create_add_exec(const struct lu_env *env, struct dt_object *obj,
        struct tx_arg *arg;
        int rc;
 
+       /* LU-13653: ignore quota for DNE directory creation */
+       if (dof->dof_type == DFT_DIR)
+               th->th_ignore_quota = 1;
+
        rc = dt_declare_create(env, obj, attr, NULL, dof, th);
        if (rc != 0)
                return rc;
@@ -666,10 +670,6 @@ int out_attr_set_add_exec(const struct lu_env *env, struct dt_object *dt_obj,
        if (rc != 0)
                return rc;
 
-       if (attr->la_valid & LA_FLAGS &&
-           attr->la_flags & LUSTRE_SET_SYNC_FL)
-               th->th_sync |= 1;
-
        arg = tx_add_exec(ta, out_tx_attr_set_exec, out_tx_attr_set_undo,
                          file, line);
        if (IS_ERR(arg))
@@ -707,7 +707,7 @@ static int out_tx_write_exec(const struct lu_env *env, struct thandle *th,
 
        if (arg->reply != NULL)
                object_update_result_insert(arg->reply, NULL, 0, arg->index,
-                                           rc);
+                                           rc < 0 ? rc : 0);
 
        return rc > 0 ? 0 : rc;
 }
@@ -750,7 +750,8 @@ static int out_tx_xattr_set_exec(const struct lu_env *env,
               dt_obd_name(th->th_dev), arg->u.xattr_set.buf.lb_buf,
               arg->u.xattr_set.name, arg->u.xattr_set.flags);
 
-       if (!lu_object_exists(&dt_obj->do_lu)) {
+       if (!lu_object_exists(&dt_obj->do_lu) ||
+           OBD_FAIL_PRECHECK(OBD_FAIL_OUT_OBJECT_MISS)) {
                rc = -ENOENT;
        } else {
                struct linkea_data ldata = { 0 };
@@ -1068,7 +1069,7 @@ static int out_obj_index_insert(const struct lu_env *env,
               (char *)key, PFID(((struct dt_insert_rec *)rec)->rec_fid),
               ((struct dt_insert_rec *)rec)->rec_type);
 
-       if (dt_try_as_dir(env, dt_obj) == 0)
+       if (!dt_try_as_dir(env, dt_obj, true))
                return -ENOTDIR;
 
        dt_write_lock(env, dt_obj, DT_TGT_CHILD);
@@ -1089,7 +1090,7 @@ static int out_obj_index_delete(const struct lu_env *env,
               dt_obd_name(th->th_dev), PFID(lu_object_fid(&dt_obj->do_lu)),
               (char *)key);
 
-       if (dt_try_as_dir(env, dt_obj) == 0)
+       if (!dt_try_as_dir(env, dt_obj, true))
                return -ENOTDIR;
 
        dt_write_lock(env, dt_obj, DT_TGT_CHILD);
@@ -1139,10 +1140,8 @@ int out_index_insert_add_exec(const struct lu_env *env,
        struct tx_arg   *arg;
        int             rc;
 
-       if (dt_try_as_dir(env, dt_obj) == 0) {
-               rc = -ENOTDIR;
-               return rc;
-       }
+       if (!dt_try_as_dir(env, dt_obj, false))
+               return -ENOTDIR;
 
        rc = dt_declare_insert(env, dt_obj, rec, key, th);
        if (rc != 0)
@@ -1201,10 +1200,8 @@ int out_index_delete_add_exec(const struct lu_env *env,
        struct tx_arg   *arg;
        int             rc;
 
-       if (dt_try_as_dir(env, dt_obj) == 0) {
-               rc = -ENOTDIR;
-               return rc;
-       }
+       if (!dt_try_as_dir(env, dt_obj, true))
+               return -ENOTDIR;
 
        LASSERT(ta->ta_handle != NULL);
        rc = dt_declare_delete(env, dt_obj, key, th);