Details
-
New Feature
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
None
-
3
-
9223372036854775807
Description
We would like to be able to split the data mover process from the process that is receiving HSM actions from the coordinator. The coordinator agent will forward the actions to the data mover process, and the data mover will be need to be able to use the llapi_hsm_action_begin api to be able to handle and complete the actions.
In the HSM api, the hsm_copytool_private structure serves two different roles.
- It receives message from the coordinator through the kuc connection.
- Saves open file descriptors used by the hsm_copyaction_private functions to process actions.
I propose adding a new interface for the data mover that will only initialize the parts of struct hsm_copytool_private that are needed for the second role above. The struct should be identical to hsm_copytool_private (we don't need additional fields at this time), but only some of the fields will be used. Also, the MAGIC number should be different in case a mover pointer is accidentally passed where a copytool should be used.
typedef struct hsm_copytool_private hsm_mover_private int llapi_hsm_mover_register(hsm_mover_private **mover, char *mnt); int llapi_hsm_mover_unregister(hsm_mover_private *mover);l // A wrapper around llapi_hsm_action_begin(), just to make it clear // which functions the mover is used with. int llapi_hsm_mover_action_begin(truct hsm_copyaction_private **phcp, hsm_mover_private *mover, const struct hsm_action_item *hai, int restore_mdt_index, int restore_open_flags, bool is_error);