Module Name: src Committed By: christos Date: Sun Apr 12 23:52:20 UTC 2020
Modified Files: src/tests/fs/ffs: t_extattr.c Log Message: make sure that 0 length files get their extattrs cleaned up on deletion (there was an optimization to not call truncate if size == 0). To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/tests/fs/ffs/t_extattr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/fs/ffs/t_extattr.c diff -u src/tests/fs/ffs/t_extattr.c:1.1 src/tests/fs/ffs/t_extattr.c:1.2 --- src/tests/fs/ffs/t_extattr.c:1.1 Fri Apr 10 18:58:47 2020 +++ src/tests/fs/ffs/t_extattr.c Sun Apr 12 19:52:20 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: t_extattr.c,v 1.1 2020/04/10 22:58:47 christos Exp $ */ +/* $NetBSD: t_extattr.c,v 1.2 2020/04/12 23:52:20 christos Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__RCSID("$NetBSD: t_extattr.c,v 1.1 2020/04/10 22:58:47 christos Exp $"); +__RCSID("$NetBSD: t_extattr.c,v 1.2 2020/04/12 23:52:20 christos Exp $"); #include <sys/types.h> #include <sys/mount.h> @@ -51,14 +51,6 @@ __RCSID("$NetBSD: t_extattr.c,v 1.1 2020 #include "h_macros.h" -ATF_TC_WITH_CLEANUP(extattr); -ATF_TC_HEAD(extattr, tc) -{ - atf_tc_set_md_var(tc, "descr", "test extended attribute support in " - "ffsv2"); - atf_tc_set_md_var(tc, "timeout", "5"); -} - #define IMGNAME "extattr.img" #define G "/garage" @@ -90,12 +82,9 @@ check_list(const char *buf, ssize_t nr) const char *newfs = "newfs -O 2 -F -s 10000 " IMGNAME; #define FAKEBLK "/dev/formula1" -ATF_TC_BODY(extattr, tc) -{ +static void +start(void) { struct ufs_args args; - ssize_t nr; - int fd; - char buf[512]; if (system(newfs) == -1) atf_tc_fail_errno("newfs failed"); @@ -113,6 +102,33 @@ ATF_TC_BODY(extattr, tc) /* create extattr */ if (rump_sys_chdir(G) == 1) atf_tc_fail_errno("chdir"); +} + +static void +finish(void) { + if (rump_sys_chdir("/") == 1) + atf_tc_fail_errno("chdir"); + if (rump_sys_unmount(G, 0) == -1) + atf_tc_fail_errno("unmount failed"); +} + + +ATF_TC_WITH_CLEANUP(extattr_simple); +ATF_TC_HEAD(extattr_simple, tc) +{ + atf_tc_set_md_var(tc, "descr", "test extended attribute creation" + " and removal ffsv2"); + atf_tc_set_md_var(tc, "timeout", "5"); +} + +ATF_TC_BODY(extattr_simple, tc) +{ + ssize_t nr; + int fd; + char buf[512]; + + start(); + if ((fd = rump_sys_open(M, O_RDWR | O_CREAT, 0600)) == -1) atf_tc_fail_errno("open"); if (rump_sys_write(fd, "hi mom\n", 7) != 7) @@ -161,9 +177,46 @@ ATF_TC_BODY(extattr, tc) atf_tc_fail_errno("close"); if (rump_sys_unlink(M) == -1) atf_tc_fail_errno("unlink"); + + finish(); +} + +ATF_TC_CLEANUP(extattr_simple, tc) +{ + + unlink(IMGNAME); +} + +ATF_TC_WITH_CLEANUP(extattr_create_unlink); +ATF_TC_HEAD(extattr_create_unlink, tc) +{ + atf_tc_set_md_var(tc, "descr", "test extended attribute creation" + " and unlinking file with ACLs"); + atf_tc_set_md_var(tc, "timeout", "5"); +} + +ATF_TC_BODY(extattr_create_unlink, tc) +{ + int fd; + + start(); + if ((fd = rump_sys_open(M, O_RDWR | O_CREAT, 0600)) == -1) + atf_tc_fail_errno("open"); + + if (rump_sys_close(fd) == -1) + atf_tc_fail_errno("close"); + + /* create extattr */ + if (rump_sys_extattr_set_file(M, EXTATTR_NAMESPACE_USER, T, S, 9) == -1) + atf_tc_fail_errno("extattr_set_file"); + + if (rump_sys_unlink(M) == -1) + atf_tc_fail_errno("unlink"); + finish(); + } -ATF_TC_CLEANUP(extattr, tc) +ATF_TC_CLEANUP(extattr_create_unlink, tc) { unlink(IMGNAME); @@ -171,6 +224,7 @@ ATF_TC_CLEANUP(extattr, tc) ATF_TP_ADD_TCS(tp) { - ATF_TP_ADD_TC(tp, extattr); + ATF_TP_ADD_TC(tp, extattr_simple); + ATF_TP_ADD_TC(tp, extattr_create_unlink); return atf_no_error(); }