+ /* we only see the truncated size */
+ assert_se(streq(s, "hello "));
+
+ /* it was already sealed */
+ r = sd_memfd_set_sealed(m, 1);
+ assert_se(r == -EALREADY);
+
+ /* we cannot break the seal, it is mapped */
+ r = sd_memfd_set_sealed(m, 0);
+ assert_se(r == -ETXTBSY);
+
+ /* unmap it; become the single owner */
+ assert_se(munmap(s, 12) == 0);
+
+ /* now we can do flip the sealing */
+ r = sd_memfd_set_sealed(m, 0);
+ assert_se(r == 0);
+ r = sd_memfd_get_sealed(m);
+ assert_se(r == 0);
+
+ r = sd_memfd_set_sealed(m, 1);
+ assert_se(r == 0);
+ r = sd_memfd_get_sealed(m);
+ assert_se(r == 1);
+
+ r = sd_memfd_set_sealed(m, 0);
+ assert_se(r == 0);
+ r = sd_memfd_get_sealed(m);
+ assert_se(r == 0);
+
+ /* seek at 2, read() 2 bytes */
+ assert_se(lseek(fd, 2, SEEK_SET) == 2);
+ assert_se(read(fd, buf, 2) == 2);
+
+ /* check content */
+ assert_se(memcmp(buf, "ll", 2) == 0);
+
+ /* writev it out*/
+ iov[0].iov_base = (char *)"ABC";
+ iov[0].iov_len = 3;
+ iov[1].iov_base = (char *)"DEF";
+ iov[1].iov_len = 3;
+ iov[2].iov_base = (char *)"GHI";
+ iov[2].iov_len = 3;
+ assert_se(pwritev(fd, iov, 3, 0) == 9);
+
+ /* readv it back */
+ iov[0].iov_base = bufv[0];
+ iov[0].iov_len = 3;
+ iov[1].iov_base = bufv[1];
+ iov[1].iov_len = 3;
+ iov[2].iov_base = bufv[2];
+ iov[2].iov_len = 3;
+ assert_se(preadv(fd, iov, 3, 0) == 9);
+
+ /* check content */
+ assert_se(memcmp(bufv[0], "ABC", 3) == 0);
+ assert_se(memcmp(bufv[1], "DEF", 3) == 0);
+ assert_se(memcmp(bufv[2], "GHI", 3) == 0);
+
+ sd_memfd_free(m);