t_pr.c revision 272343
1272343Sngie/* $NetBSD: t_pr.c,v 1.6 2011/02/22 18:41:05 pooka Exp $ */ 2272343Sngie 3272343Sngie#include <sys/types.h> 4272343Sngie#include <sys/mount.h> 5272343Sngie 6272343Sngie#include <atf-c.h> 7272343Sngie#include <errno.h> 8272343Sngie#include <fcntl.h> 9272343Sngie#include <limits.h> 10272343Sngie#include <stdio.h> 11272343Sngie#include <stdlib.h> 12272343Sngie#include <unistd.h> 13272343Sngie#include <string.h> 14272343Sngie 15272343Sngie#include <rump/rump.h> 16272343Sngie#include <rump/rump_syscalls.h> 17272343Sngie 18272343Sngie#include <ufs/ufs/ufsmount.h> 19272343Sngie 20272343Sngie#include "../../h_macros.h" 21272343Sngie 22272343SngieATF_TC(mknod); 23272343SngieATF_TC_HEAD(mknod, tc) 24272343Sngie{ 25272343Sngie 26272343Sngie atf_tc_set_md_var(tc, "descr", "mknod(2) hangs on LFS (PR kern/43503)"); 27272343Sngie atf_tc_set_md_var(tc, "timeout", "20"); 28272343Sngie} 29272343Sngie 30272343Sngie#define IMGNAME "disk.img" 31272343Sngie#define FAKEBLK "/dev/blk" 32272343SngieATF_TC_BODY(mknod, tc) 33272343Sngie{ 34272343Sngie struct ufs_args args; 35272343Sngie 36272343Sngie /* hmm, maybe i should fix newfs_lfs instead? */ 37272343Sngie if (system("newfs_lfs -D -F -s 10000 ./" IMGNAME) == -1) 38272343Sngie atf_tc_fail_errno("newfs failed"); 39272343Sngie 40272343Sngie memset(&args, 0, sizeof(args)); 41272343Sngie args.fspec = __UNCONST(FAKEBLK); 42272343Sngie 43272343Sngie rump_init(); 44272343Sngie if (rump_sys_mkdir("/mp", 0777) == -1) 45272343Sngie atf_tc_fail_errno("cannot create mountpoint"); 46272343Sngie rump_pub_etfs_register(FAKEBLK, IMGNAME, RUMP_ETFS_BLK); 47272343Sngie if (rump_sys_mount(MOUNT_LFS, "/mp", 0, &args, sizeof(args)) == -1) 48272343Sngie atf_tc_fail_errno("rump_sys_mount failed"); 49272343Sngie 50272343Sngie //atf_tc_expect_timeout("PR kern/43503"); 51272343Sngie if (rump_sys_mknod("/mp/node", S_IFCHR | 0777, 0) == -1) 52272343Sngie atf_tc_fail_errno("mknod failed"); 53272343Sngie} 54272343Sngie 55272343SngieATF_TP_ADD_TCS(tp) 56272343Sngie{ 57272343Sngie 58272343Sngie ATF_TP_ADD_TC(tp, mknod); 59272343Sngie return 0; 60272343Sngie} 61