t_mount.c revision 1.9 1 1.9 pooka /* $NetBSD: t_mount.c,v 1.9 2010/08/09 19:34:59 pooka Exp $ */
2 1.1 njoly
3 1.1 njoly /*
4 1.8 pooka * Basic tests for mounting
5 1.8 pooka */
6 1.8 pooka
7 1.8 pooka /*
8 1.8 pooka * 48Kimage:
9 1.1 njoly * Adapted for rump and atf from a testcase supplied
10 1.1 njoly * by Hubert Feyrer on netbsd-users@
11 1.1 njoly */
12 1.1 njoly
13 1.1 njoly #include <atf-c.h>
14 1.1 njoly
15 1.9 pooka #define FSTEST_IMGSIZE (96 * 512)
16 1.6 pooka #include "../common/h_fsmacros.h"
17 1.6 pooka
18 1.8 pooka #include <sys/types.h>
19 1.8 pooka #include <sys/mount.h>
20 1.8 pooka
21 1.8 pooka #include <stdlib.h>
22 1.8 pooka
23 1.8 pooka #include <ufs/ufs/ufsmount.h>
24 1.8 pooka
25 1.8 pooka #include <rump/rump.h>
26 1.8 pooka #include <rump/rump_syscalls.h>
27 1.8 pooka
28 1.8 pooka #include "../../h_macros.h"
29 1.8 pooka
30 1.1 njoly ATF_TC(48Kimage);
31 1.1 njoly ATF_TC_HEAD(48Kimage, tc)
32 1.1 njoly {
33 1.1 njoly atf_tc_set_md_var(tc, "descr", "mount small 48K ffs image");
34 1.1 njoly atf_tc_set_md_var(tc, "use.fs", "true");
35 1.1 njoly }
36 1.1 njoly
37 1.1 njoly ATF_TC_BODY(48Kimage, tc)
38 1.1 njoly {
39 1.1 njoly void *tmp;
40 1.1 njoly
41 1.3 pooka atf_tc_expect_fail("PR kern/43573");
42 1.9 pooka FSTEST_CONSTRUCTOR(tc, ffs, tmp);
43 1.3 pooka atf_tc_expect_pass();
44 1.3 pooka
45 1.9 pooka FSTEST_DESTRUCTOR(tc, ffs, tmp);
46 1.1 njoly }
47 1.1 njoly
48 1.8 pooka ATF_TC(fsbsize2big);
49 1.8 pooka ATF_TC_HEAD(fsbsize2big, tc)
50 1.8 pooka {
51 1.8 pooka
52 1.8 pooka atf_tc_set_md_var(tc, "descr", "mounts file system with "
53 1.8 pooka "blocksize > MAXPHYS");
54 1.8 pooka atf_tc_set_md_var(tc, "use.fs", "true");
55 1.8 pooka /* PR kern/43727 */
56 1.8 pooka }
57 1.8 pooka
58 1.8 pooka #define MYBLOCKSIZE 131072
59 1.8 pooka #if MAXPHYS >= MYBLOCKSIZE
60 1.8 pooka #error MAXPHYS too large for test to work
61 1.8 pooka #endif
62 1.8 pooka ATF_TC_BODY(fsbsize2big, tc)
63 1.8 pooka {
64 1.8 pooka char cmd[1024];
65 1.8 pooka struct ufs_args args;
66 1.8 pooka struct statvfs svb;
67 1.8 pooka
68 1.8 pooka snprintf(cmd, sizeof(cmd), "newfs -G -b %d -F -s 10000 "
69 1.8 pooka "ffs.img > /dev/null", MYBLOCKSIZE);
70 1.8 pooka if (system(cmd))
71 1.8 pooka atf_tc_fail("cannot create file system");
72 1.8 pooka
73 1.8 pooka rump_init();
74 1.8 pooka if (rump_pub_etfs_register("/devdisk", "ffs.img", RUMP_ETFS_BLK))
75 1.8 pooka atf_tc_fail("cannot register rump fake device");
76 1.8 pooka
77 1.8 pooka args.fspec = __UNCONST("/devdisk");
78 1.8 pooka
79 1.8 pooka if (rump_sys_mkdir("/mp", 0777) == -1)
80 1.8 pooka atf_tc_fail_errno("create mountpoint");
81 1.8 pooka
82 1.8 pooka /* mount succeeded? bad omen. confirm we're in trouble. */
83 1.8 pooka if (rump_sys_mount(MOUNT_FFS, "/mp", 0, &args, sizeof(args)) != -1) {
84 1.8 pooka rump_sys_statvfs1("/mp", &svb, ST_WAIT);
85 1.9 pooka atf_tc_fail("not expecting to be alive");
86 1.8 pooka }
87 1.8 pooka
88 1.8 pooka /* otherwise we're do-ne */
89 1.8 pooka }
90 1.8 pooka
91 1.1 njoly ATF_TP_ADD_TCS(tp)
92 1.1 njoly {
93 1.8 pooka
94 1.1 njoly ATF_TP_ADD_TC(tp, 48Kimage);
95 1.8 pooka ATF_TP_ADD_TC(tp, fsbsize2big);
96 1.8 pooka
97 1.1 njoly return atf_no_error();
98 1.1 njoly }
99