-struct tgt_handler tgt_sec_ctx_handlers[] = {
-TGT_SEC_HDL_VAR(0, SEC_CTX_INIT, tgt_sec_ctx_handle),
-TGT_SEC_HDL_VAR(0, SEC_CTX_INIT_CONT, tgt_sec_ctx_handle),
-TGT_SEC_HDL_VAR(0, SEC_CTX_FINI, tgt_sec_ctx_handle),
+static int (*tgt_lfsck_query)(const struct lu_env *env,
+ struct dt_device *key,
+ struct lfsck_request *lr) = NULL;
+
+void tgt_register_lfsck_query(int (*query)(const struct lu_env *,
+ struct dt_device *,
+ struct lfsck_request *))
+{
+ tgt_lfsck_query = query;
+}
+EXPORT_SYMBOL(tgt_register_lfsck_query);
+
+/* LFSCK request handlers */
+static int tgt_handle_lfsck_notify(struct tgt_session_info *tsi)
+{
+ const struct lu_env *env = tsi->tsi_env;
+ struct dt_device *key = tsi->tsi_tgt->lut_bottom;
+ struct lfsck_request *lr;
+ int rc;
+ ENTRY;
+
+ lr = req_capsule_client_get(tsi->tsi_pill, &RMF_LFSCK_REQUEST);
+ if (lr == NULL)
+ RETURN(-EPROTO);
+
+ rc = tgt_lfsck_in_notify(env, key, lr, NULL);
+
+ RETURN(rc);
+}
+
+static int tgt_handle_lfsck_query(struct tgt_session_info *tsi)
+{
+ struct lfsck_request *request;
+ struct lfsck_reply *reply;
+ int rc;
+ ENTRY;
+
+ request = req_capsule_client_get(tsi->tsi_pill, &RMF_LFSCK_REQUEST);
+ if (request == NULL)
+ RETURN(-EPROTO);
+
+ reply = req_capsule_server_get(tsi->tsi_pill, &RMF_LFSCK_REPLY);
+ if (reply == NULL)
+ RETURN(-ENOMEM);
+
+ rc = tgt_lfsck_query(tsi->tsi_env, tsi->tsi_tgt->lut_bottom, request);
+ reply->lr_status = rc;
+
+ RETURN(rc < 0 ? rc : 0);
+}
+
+struct tgt_handler tgt_lfsck_handlers[] = {
+TGT_LFSCK_HDL(HABEO_REFERO, LFSCK_NOTIFY, tgt_handle_lfsck_notify),
+TGT_LFSCK_HDL(HABEO_REFERO, LFSCK_QUERY, tgt_handle_lfsck_query),