-extern int llapi_hsm_copytool_start(void **priv, char *fsname, int flags,
- int archive_count, int *archives);
-extern int llapi_hsm_copytool_fini(void **priv);
-extern int llapi_hsm_copytool_recv(void *priv, struct hsm_action_list **hal,
- int *msgsize);
-extern int llapi_hsm_copytool_free(struct hsm_action_list **hal);
-extern int llapi_hsm_copy_start(char *mnt, struct hsm_copy *copy,
- const struct hsm_action_item *hai);
-extern int llapi_hsm_copy_end(char *mnt, struct hsm_copy *copy,
- const struct hsm_progress *hp);
-extern int llapi_hsm_request(char *mnt, struct hsm_user_request *request);
-extern int llapi_hsm_progress(char *mnt, struct hsm_progress *hp);
-extern struct hsm_user_request *llapi_hsm_user_request_alloc(int itemcount,
- int data_len);
-extern int llapi_hsm_import(const char *dst, int archive, struct stat *st,
+struct hsm_copytool_private;
+struct hsm_copyaction_private;
+
+extern int llapi_hsm_copytool_register(struct hsm_copytool_private **priv,
+ const char *mnt, int flags,
+ int archive_count, int *archives);
+extern int llapi_hsm_copytool_unregister(struct hsm_copytool_private **priv);
+extern int llapi_hsm_copytool_recv(struct hsm_copytool_private *priv,
+ struct hsm_action_list **hal, int *msgsize);
+extern void llapi_hsm_action_list_free(struct hsm_action_list **hal);
+extern int llapi_hsm_action_begin(struct hsm_copyaction_private **phcp,
+ const struct hsm_copytool_private *ct,
+ const struct hsm_action_item *hai,
+ int restore_mdt_index, int restore_open_flags,
+ bool is_error);
+extern int llapi_hsm_action_end(struct hsm_copyaction_private **phcp,
+ const struct hsm_extent *he,
+ int hp_flags, int errval);
+extern int llapi_hsm_action_progress(struct hsm_copyaction_private *hcp,
+ const struct hsm_extent *he, int hp_flags);
+extern int llapi_hsm_action_get_dfid(const struct hsm_copyaction_private *hcp,
+ lustre_fid *fid);
+extern int llapi_hsm_action_get_fd(const struct hsm_copyaction_private *hcp);
+extern int llapi_hsm_import(const char *dst, int archive, const struct stat *st,