t_mount.c revision 1.13 1 1.13 jakllsch /* $NetBSD: t_mount.c,v 1.13 2012/11/27 16:01:49 jakllsch 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 }
35 1.1 njoly
36 1.1 njoly ATF_TC_BODY(48Kimage, tc)
37 1.1 njoly {
38 1.1 njoly void *tmp;
39 1.1 njoly
40 1.3 pooka atf_tc_expect_fail("PR kern/43573");
41 1.9 pooka FSTEST_CONSTRUCTOR(tc, ffs, tmp);
42 1.3 pooka atf_tc_expect_pass();
43 1.3 pooka
44 1.9 pooka FSTEST_DESTRUCTOR(tc, ffs, tmp);
45 1.1 njoly }
46 1.1 njoly
47 1.12 jakllsch ATF_TC(fsbsizeovermaxphys);
48 1.12 jakllsch ATF_TC_HEAD(fsbsizeovermaxphys, tc)
49 1.8 pooka {
50 1.8 pooka
51 1.8 pooka atf_tc_set_md_var(tc, "descr", "mounts file system with "
52 1.8 pooka "blocksize > MAXPHYS");
53 1.8 pooka /* PR kern/43727 */
54 1.8 pooka }
55 1.8 pooka
56 1.12 jakllsch ATF_TC_BODY(fsbsizeovermaxphys, tc)
57 1.8 pooka {
58 1.8 pooka char cmd[1024];
59 1.8 pooka struct ufs_args args;
60 1.8 pooka struct statvfs svb;
61 1.8 pooka
62 1.10 pooka /*
63 1.10 pooka * We cannot pass newfs parameters via the fstest interface,
64 1.10 pooka * so do things the oldfashioned manual way.
65 1.10 pooka */
66 1.8 pooka snprintf(cmd, sizeof(cmd), "newfs -G -b %d -F -s 10000 "
67 1.12 jakllsch "ffs.img > /dev/null", MAXPHYS * 2);
68 1.8 pooka if (system(cmd))
69 1.8 pooka atf_tc_fail("cannot create file system");
70 1.8 pooka
71 1.8 pooka rump_init();
72 1.8 pooka if (rump_pub_etfs_register("/devdisk", "ffs.img", RUMP_ETFS_BLK))
73 1.8 pooka atf_tc_fail("cannot register rump fake device");
74 1.8 pooka
75 1.8 pooka args.fspec = __UNCONST("/devdisk");
76 1.8 pooka
77 1.8 pooka if (rump_sys_mkdir("/mp", 0777) == -1)
78 1.8 pooka atf_tc_fail_errno("create mountpoint");
79 1.8 pooka
80 1.8 pooka /* mount succeeded? bad omen. confirm we're in trouble. */
81 1.8 pooka if (rump_sys_mount(MOUNT_FFS, "/mp", 0, &args, sizeof(args)) != -1) {
82 1.8 pooka rump_sys_statvfs1("/mp", &svb, ST_WAIT);
83 1.9 pooka atf_tc_fail("not expecting to be alive");
84 1.8 pooka }
85 1.8 pooka
86 1.8 pooka /* otherwise we're do-ne */
87 1.8 pooka }
88 1.8 pooka
89 1.13 jakllsch ATF_TC(fsbsizeovermaxbsize);
90 1.13 jakllsch ATF_TC_HEAD(fsbsizeovermaxbsize, tc)
91 1.13 jakllsch {
92 1.13 jakllsch
93 1.13 jakllsch atf_tc_set_md_var(tc, "descr", "mounts file system with "
94 1.13 jakllsch "blocksize > MAXBSIZE");
95 1.13 jakllsch }
96 1.13 jakllsch
97 1.13 jakllsch ATF_TC_BODY(fsbsizeovermaxbsize, tc)
98 1.13 jakllsch {
99 1.13 jakllsch char cmd[1024];
100 1.13 jakllsch struct ufs_args args;
101 1.13 jakllsch struct statvfs svb;
102 1.13 jakllsch
103 1.13 jakllsch /*
104 1.13 jakllsch * We cannot pass newfs parameters via the fstest interface,
105 1.13 jakllsch * so do things the oldfashioned manual way.
106 1.13 jakllsch */
107 1.13 jakllsch snprintf(cmd, sizeof(cmd), "newfs -G -b %d -F -s 10000 "
108 1.13 jakllsch "ffs.img > /dev/null", MAXBSIZE * 2);
109 1.13 jakllsch if (system(cmd))
110 1.13 jakllsch atf_tc_fail("cannot create file system");
111 1.13 jakllsch
112 1.13 jakllsch rump_init();
113 1.13 jakllsch if (rump_pub_etfs_register("/devdisk", "ffs.img", RUMP_ETFS_BLK))
114 1.13 jakllsch atf_tc_fail("cannot register rump fake device");
115 1.13 jakllsch
116 1.13 jakllsch args.fspec = __UNCONST("/devdisk");
117 1.13 jakllsch
118 1.13 jakllsch if (rump_sys_mkdir("/mp", 0777) == -1)
119 1.13 jakllsch atf_tc_fail_errno("create mountpoint");
120 1.13 jakllsch
121 1.13 jakllsch /* mount succeeded? bad omen. confirm we're in trouble. */
122 1.13 jakllsch if (rump_sys_mount(MOUNT_FFS, "/mp", 0, &args, sizeof(args)) != -1) {
123 1.13 jakllsch rump_sys_statvfs1("/mp", &svb, ST_WAIT);
124 1.13 jakllsch atf_tc_fail("not expecting to be alive");
125 1.13 jakllsch }
126 1.13 jakllsch
127 1.13 jakllsch /* otherwise we're do-ne */
128 1.13 jakllsch }
129 1.13 jakllsch
130 1.1 njoly ATF_TP_ADD_TCS(tp)
131 1.1 njoly {
132 1.8 pooka
133 1.1 njoly ATF_TP_ADD_TC(tp, 48Kimage);
134 1.12 jakllsch ATF_TP_ADD_TC(tp, fsbsizeovermaxphys);
135 1.13 jakllsch ATF_TP_ADD_TC(tp, fsbsizeovermaxbsize);
136 1.8 pooka
137 1.1 njoly return atf_no_error();
138 1.1 njoly }
139