X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fllapi_hsm_test.c;h=54c3495b942b5817c5b55ab2ea4568d3f5adb7a6;hb=32bd5051a518c57e35f51b7f3c7f739b5ef91b25;hp=397dc8cf370cfa748f5facce1997e0606da39e94;hpb=e2e7ea06c66d57ba214cd76e3d19420632aba8dd;p=fs%2Flustre-release.git diff --git a/lustre/tests/llapi_hsm_test.c b/lustre/tests/llapi_hsm_test.c index 397dc8c..54c3495 100644 --- a/lustre/tests/llapi_hsm_test.c +++ b/lustre/tests/llapi_hsm_test.c @@ -373,53 +373,94 @@ void test51(void) hus.hus_archive_id, i); } - /* Bugs following. This should not succeed. Builds the following file: - * - * $ ../utils/lfs hsm_state /mnt/lustre/hsm_check_test - * - * /mnt/lustre/hsm_check_test: (0x8008007d) released exists - * archived never_release never_archive lost_from_hsm, - * archive_id:-1789 - */ - /* Invalid archive numbers */ rc = llapi_hsm_state_set_fd(fd, HS_EXISTS, 0, 33); - ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + ASSERTF(rc == -EINVAL, "llapi_hsm_state_set_fd: %s", strerror(-rc)); rc = llapi_hsm_state_set_fd(fd, HS_EXISTS, 0, 151); - ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + ASSERTF(rc == -EINVAL, "llapi_hsm_state_set_fd: %s", strerror(-rc)); rc = llapi_hsm_state_set_fd(fd, HS_EXISTS, 0, -1789); - ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + ASSERTF(rc == -EINVAL, "llapi_hsm_state_set_fd: %s", strerror(-rc)); - /* Setable + Unsettable flags */ + /* Settable flags, with respect of the HSM file state transition rules: + * DIRTY without EXISTS: no dirty if no archive was created + * DIRTY and RELEASED: a dirty file could not be released + * RELEASED without ARCHIVED: do not release a non-archived file + * LOST without ARCHIVED: cannot lost a non-archived file. + */ rc = llapi_hsm_state_set_fd(fd, HS_DIRTY, 0, 0); ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + rc = llapi_hsm_state_set_fd(fd, 0, HS_EXISTS, 0); + ASSERTF(rc == -EINVAL, "llapi_hsm_state_set_fd failed: %s", + strerror(-rc)); + rc = llapi_hsm_state_set_fd(fd, 0, HS_DIRTY, 0); ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + rc = llapi_hsm_state_set_fd(fd, 0, HS_EXISTS, 0); + ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + + rc = llapi_hsm_state_set_fd(fd, HS_DIRTY, 0, 0); + ASSERTF(rc == -EINVAL, "llapi_hsm_state_set_fd failed: %s", + strerror(-rc)); + + rc = llapi_hsm_state_set_fd(fd, HS_RELEASED, 0, 0); + ASSERTF(rc == -EINVAL, "llapi_hsm_state_set_fd failed: %s", + strerror(-rc)); + + rc = llapi_hsm_state_set_fd(fd, HS_LOST, 0, 0); + ASSERTF(rc == -EINVAL, "llapi_hsm_state_set_fd failed: %s", + strerror(-rc)); + rc = llapi_hsm_state_set_fd(fd, HS_ARCHIVED, 0, 0); ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); rc = llapi_hsm_state_set_fd(fd, HS_RELEASED, 0, 0); ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + rc = llapi_hsm_state_set_fd(fd, HS_LOST, 0, 0); + ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + + rc = llapi_hsm_state_set_fd(fd, HS_DIRTY|HS_EXISTS, 0, 0); + ASSERTF(rc == -EINVAL, "llapi_hsm_state_set_fd failed: %s", + strerror(-rc)); + + rc = llapi_hsm_state_set_fd(fd, 0, HS_RELEASED, 0); + ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + + rc = llapi_hsm_state_set_fd(fd, HS_DIRTY|HS_EXISTS, 0, 0); + ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + + rc = llapi_hsm_state_set_fd(fd, 0, HS_ARCHIVED, 0); + ASSERTF(rc == -EINVAL, "llapi_hsm_state_set_fd failed: %s", + strerror(-rc)); + + rc = llapi_hsm_state_set_fd(fd, 0, HS_LOST, 0); + ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + + rc = llapi_hsm_state_set_fd(fd, 0, HS_ARCHIVED, 0); + ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + rc = llapi_hsm_state_set_fd(fd, HS_NORELEASE, 0, 0); ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + rc = llapi_hsm_state_set_fd(fd, 0, HS_NORELEASE, 0); + ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + rc = llapi_hsm_state_set_fd(fd, HS_NOARCHIVE, 0, 0); ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); - rc = llapi_hsm_state_set_fd(fd, HS_LOST, 0, 0); + rc = llapi_hsm_state_set_fd(fd, 0, HS_NOARCHIVE, 0); ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); /* Bogus flags for good measure. */ rc = llapi_hsm_state_set_fd(fd, 0x00080000, 0, 0); - ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + ASSERTF(rc == -EINVAL, "llapi_hsm_state_set_fd: %s", strerror(-rc)); rc = llapi_hsm_state_set_fd(fd, 0x80000000, 0, 0); - ASSERTF(rc == 0, "llapi_hsm_state_set_fd failed: %s", strerror(-rc)); + ASSERTF(rc == -EINVAL, "llapi_hsm_state_set_fd: %s", strerror(-rc)); close(fd); }