Lustre HSM release
Lustre HSM release removes a file's local data residency while retaining its filesystem identity and dependence on an archived copy.
In the reviewed ordinary release path, valid HSM metadata and ARCHIVED are required, while DIRTY, NORELEASE or LOST reject the flag check. NOARCHIVE is a separate policy flag and does not itself reject that check. Passing this preliminary predicate does not establish complete release success. [2] [5]
The client obtains a release lease and data version. The server rereads HSM metadata and, for a file not already released, rejects a mismatch between the supplied and archived versions. A broken lease also prevents the operation. This is the ordinary path, not the separate PCC-attach branch. [3] [2]
Release eligibility is not proof that backend bytes remain retrievable. Preserve the archive mapping and recovery dependencies, then test the intended restore. Changing state flags is not data repair. [1] [4]
In this pinned server function, a rejected flag predicate and a data-version mismatch both return -EPERM. A missing or broken lease returns -ESTALE, and open-semaphore contention returns -EBUSY. These branches are not a complete command-line error map: an error name alone cannot identify the failed safeguard. [2]
Relations
- related
- Lustre HSM, Cold archive tier, Backup, Restore test
Citations
- Lustre v2_17_0: mdt_hsm_state_get and mdt_hsm_state_set
- Lustre v2_17_0: mdt_hsm_release_allow and ordinary mdt_hsm_release path
- Lustre v2_17_0: ll_data_version and ll_hsm_release
- Lustre v2_17_0: archive completion and restore/remove compatibility checks
- Lustre v2_17_0: enum hsm_states and user/status masks
Sources & caveats
- Pinned Lustre v2_17_0 source review, commit 4b0407a48e9e5b7f17877e8868080e9f40c238c6; no running-cluster or backend recovery test.
- Replayable source ledger and isolated flag-helper check: https://hesela.dev/research/lustre-hsm/README.md