Sean Christopherson <sea...@google.com> writes:

> Add a selftest to verify the basic functionality of guest_memfd():
>
> + file descriptor created with the guest_memfd() ioctl does not allow
>   read/write/mmap operations
> + file size and block size as returned from fstat are as expected
> + fallocate on the fd checks that offset/length on
>   fallocate(FALLOC_FL_PUNCH_HOLE) should be page aligned
>

> <snip>

> +
> +static void test_fallocate(int fd, size_t page_size, size_t total_size)
> +{
> +     int ret;
> +
> +     ret = fallocate(fd, FALLOC_FL_KEEP_SIZE, 0, total_size);
> +     TEST_ASSERT(!ret, "fallocate with aligned offset and size should 
> succeed");
> +
> +     ret = fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE,
> +                     page_size - 1, page_size);
> +     TEST_ASSERT(ret, "fallocate with unaligned offset should fail");
> +
> +     ret = fallocate(fd, FALLOC_FL_KEEP_SIZE, total_size, page_size);
> +     TEST_ASSERT(ret, "fallocate beginning at total_size should fail");
> +
> +     ret = fallocate(fd, FALLOC_FL_KEEP_SIZE, total_size + page_size, 
> page_size);
> +     TEST_ASSERT(ret, "fallocate beginning at total_size should fail");

This should be

TEST_ASSERT(ret, "fallocate beginning after total_size should fail");

> +
> +     ret = fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE,
> +                     total_size, page_size);
> +     TEST_ASSERT(!ret, "fallocate(PUNCH_HOLE) at total_size should succeed");
> +
> +     ret = fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE,
> +                     total_size + page_size, page_size);
> +     TEST_ASSERT(!ret, "fallocate(PUNCH_HOLE) after total_size should 
> succeed");
> +
> +     ret = fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE,
> +                     page_size, page_size - 1);
> +     TEST_ASSERT(ret, "fallocate with unaligned size should fail");
> +
> +     ret = fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE,
> +                     page_size, page_size);
> +     TEST_ASSERT(!ret, "fallocate(PUNCH_HOLE) with aligned offset and size 
> should succeed");
> +
> +     ret = fallocate(fd, FALLOC_FL_KEEP_SIZE, page_size, page_size);
> +     TEST_ASSERT(!ret, "fallocate to restore punched hole should succeed");
> +}

> <snip>

Reply via email to