Whamcloud - gitweb
LU-5099 api: transfer object type via dt_insert API
[fs/lustre-release.git] / lustre / target / tgt_internal.h
index bc7809c..ebe3a1a 100644 (file)
 #include <lustre_req_layout.h>
 #include <lustre_sec.h>
 
+extern int (*tgt_lfsck_in_notify)(const struct lu_env *env,
+                                 struct dt_device *key,
+                                 struct lfsck_request *lr);
+
 struct tx_arg;
 typedef int (*tx_exec_func_t)(const struct lu_env *env, struct thandle *th,
                              struct tx_arg *ta);
@@ -51,13 +55,13 @@ struct tx_arg {
        tx_exec_func_t           exec_fn;
        tx_exec_func_t           undo_fn;
        struct dt_object        *object;
-       char                    *file;
-       struct update_reply     *reply;
+       const char              *file;
+       struct object_update_reply *reply;
        int                      line;
        int                      index;
        union {
                struct {
-                       const struct dt_rec     *rec;
+                       struct dt_insert_rec     rec;
                        const struct dt_key     *key;
                } insert;
                struct {
@@ -87,13 +91,11 @@ struct tx_arg {
        } u;
 };
 
-#define TX_MAX_OPS       10
 struct thandle_exec_args {
        struct thandle          *ta_handle;
-       struct dt_device        *ta_dev;
-       int                      ta_err;
-       struct tx_arg            ta_args[TX_MAX_OPS];
-       int                      ta_argno;   /* used args */
+       int                     ta_argno;   /* used args */
+       int                     ta_alloc_args; /* allocated args count */
+       struct tx_arg           **ta_args;
 };
 
 /**
@@ -112,6 +114,8 @@ struct tgt_thread_info {
 
        /* transno storage during last_rcvd update */
        __u64                    tti_transno;
+       __u32                    tti_has_trans:1,
+                                tti_mult_trans:1;
 
        /* Updates data for OUT target */
        struct thandle_exec_args tti_tea;
@@ -123,14 +127,16 @@ struct tgt_thread_info {
                        struct l_wait_info tti_wait_info;
                } rdpg;
                struct {
-                       struct dt_object_format  tti_update_dof;
-                       struct update_reply     *tti_update_reply;
-                       struct update           *tti_update;
-                       int                      tti_update_reply_index;
-                       struct obdo              tti_obdo;
-                       struct dt_object        *tti_dt_object;
+                       struct dt_object_format    tti_update_dof;
+                       struct object_update_reply *tti_update_reply;
+                       struct object_update       *tti_update;
+                       int                        tti_update_reply_index;
+                       struct obdo                tti_obdo;
+                       struct dt_object           *tti_dt_object;
                } update;
        } tti_u;
+       struct lfsck_request tti_lr;
+       struct dt_insert_rec tti_rec;
 };
 
 extern struct lu_context_key tgt_thread_key;
@@ -178,27 +184,40 @@ int out_handle(struct tgt_session_info *tsi);
        __out_tx_xattr_set(info, obj, buf, name, fl, th, reply, idx,    \
                           __FILE__, __LINE__)
 
+#define out_tx_xattr_del(info, obj, name, th, reply, idx)      \
+       __out_tx_xattr_del(info, obj, name, th, reply, idx,     \
+                          __FILE__, __LINE__)
+
 #define out_tx_ref_add(info, obj, th, reply, idx) \
        __out_tx_ref_add(info, obj, th, reply, idx, __FILE__, __LINE__)
 
 #define out_tx_ref_del(info, obj, th, reply, idx) \
        __out_tx_ref_del(info, obj, th, reply, idx, __FILE__, __LINE__)
 
-#define out_tx_index_insert(info, obj, th, name, fid, reply, idx) \
-       __out_tx_index_insert(info, obj, th, name, fid, reply, idx, \
+#define out_tx_index_insert(info, obj, rec, key, th, reply, idx) \
+       __out_tx_index_insert(info, obj, rec, key, th, reply, idx, \
                              __FILE__, __LINE__)
 
-#define out_tx_index_delete(info, obj, th, name, reply, idx) \
-       __out_tx_index_delete(info, obj, th, name, reply, idx, \
+#define out_tx_index_delete(info, obj, key, th, reply, idx) \
+       __out_tx_index_delete(info, obj, key, th, reply, idx, \
                              __FILE__, __LINE__)
 
 #define out_tx_destroy(info, obj, th, reply, idx) \
        __out_tx_destroy(info, obj, th, reply, idx, __FILE__, __LINE__)
 
+#define out_tx_write(info, obj, buf, pos, th, reply, idx) \
+       __out_tx_write(info, obj, buf, pos, th, reply, idx, __FILE__, __LINE__)
+
 extern struct page *tgt_page_to_corrupt;
 
 struct tgt_thread_big_cache {
        struct niobuf_local     local[PTLRPC_MAX_BRW_PAGES];
 };
 
+int tgt_server_data_init(const struct lu_env *env, struct lu_target *tgt);
+int tgt_txn_start_cb(const struct lu_env *env, struct thandle *th,
+                    void *cookie);
+int tgt_txn_stop_cb(const struct lu_env *env, struct thandle *th,
+                   void *cookie);
+
 #endif /* _TG_INTERNAL_H */