diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-05-23 11:39:50 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-05-29 12:25:34 +0200 |
commit | 847ad441cda2466680107b0b7607a8ceca3b17d4 (patch) | |
tree | d7ac7a11acd1c73faa39f250b54d08e96d21fedb /testsuites/psxtests/psxmount | |
parent | shell/lsof: Use fprintf() instead of printk() (diff) | |
download | rtems-847ad441cda2466680107b0b7607a8ceca3b17d4.tar.bz2 |
Filesystem: Wait for unmount() to finish
Diffstat (limited to 'testsuites/psxtests/psxmount')
-rw-r--r-- | testsuites/psxtests/psxmount/psxmount.scn | 71 | ||||
-rw-r--r-- | testsuites/psxtests/psxmount/test.c | 32 |
2 files changed, 60 insertions, 43 deletions
diff --git a/testsuites/psxtests/psxmount/psxmount.scn b/testsuites/psxtests/psxmount/psxmount.scn index 88c1fa9fbe..440344af99 100644 --- a/testsuites/psxtests/psxmount/psxmount.scn +++ b/testsuites/psxtests/psxmount/psxmount.scn @@ -1,5 +1,3 @@ - - *** MOUNT/UNMOUNT TEST *** chdir to the root directory @@ -25,30 +23,30 @@ create /b/my_file Verify /b/my_file create c/y/my_mount_point/my_dir/d Verify c/y/my_mount_point/my_dir/d -Attempting to mount IMFS file system at /c/z/my_mount_point -2nd file system successfully mounted at /c/z/my_mount_point +Attempting to mount IMFS file system at /c/z/my_mount_point +2nd file system successfully mounted at /c/z/my_mount_point chdir to /c/z/my_mount_point. chdir() status : 0 Creating a series of directories under /c/z/my_mount_point -Creating: a 0 2 Success -Creating: b 0 2 Success -Creating: c 0 2 Success -Creating: d 0 2 Success -Creating: e 0 2 Success -Creating: f 0 2 Success -Creating: c/y 0 2 Success -Creating: c/z 0 2 Success -Creating: c/x 0 2 Success -Creating: c/y/a3333 0 2 Success -Creating: c/y/j123 0 2 Success -Creating: c/y/my_mount_point 0 2 Success -Creating: c/y/my_mount_point/my_dir 0 2 Success -Creating: c/y/my_mount_point/my_dir/d 0 2 Success -Creating: c/z/my_mount_point 0 2 Success -Creating: /c/z/my_mount_point/a/../../my_mount_point/a/g 0 2 Success +Creating: a 0 0 Success +Creating: b 0 0 Success +Creating: c 0 0 Success +Creating: d 0 0 Success +Creating: e 0 0 Success +Creating: f 0 0 Success +Creating: c/y 0 0 Success +Creating: c/z 0 0 Success +Creating: c/x 0 0 Success +Creating: c/y/a3333 0 0 Success +Creating: c/y/j123 0 0 Success +Creating: c/y/my_mount_point 0 0 Success +Creating: c/y/my_mount_point/my_dir 0 0 Success +Creating: c/y/my_mount_point/my_dir/d 0 0 Success +Creating: c/z/my_mount_point 0 0 Success +Creating: /c/z/my_mount_point/a/../../my_mount_point/a/g 0 0 Success chdir to / chdir() status : 0 @@ -56,31 +54,38 @@ chdir() status : 0 Unmount status: 0 Mount a NULL file system and verify EINVAL mount with option of -62 should fail with EINVAL -Mount a Read Only filesystem at /c/y/my_mount_point -Read only file system successfully mounted at /c/y/my_mount_point -create c/y/my_mount_point/../../y/my_mount_point/new_dir +Mount a Read Only filesystem at /c/y/my_mount_point +Read only file system successfully mounted at /c/y/my_mount_point +create c/y/my_mount_point/../../y/new_dir +Verify a mount point returns EROFS for another mount +Unmount /c/y/my_mount_point +Mount a read-write file system at /c/y/my_mount_point Verify a mount point returns EBUSY for another mount Mount on a file should fail with ENOTDIR Create and chdir to /c/y/my_mount_point/mydir unmount of /c/y/my_mount_point should fail with EBUSY -chdir to / and verify we can unmount /c/y/my_mount_point -unmount /c/y/my_mount_point +chroot to /c/y/my_mount_point +unmount of . should fail with EBUSY +chroot to / and verify we can unmount /c/y/my_mount_point +unmount of /c/y/my_mount_point +chdir to /c/y/my_mount_point/my_dir should fail with ENOENT unmount /b/mount_point should fail with EINVAL Mount /c/y/my_mount_point Create and open /c/y/my_mount_point/my_file -mkdir /c/y/my_mount_point/my_dir -Open /c/y/my_mount_point/my_dir -Unmount /c/y/my_mount_point should fail with EBUSY -Close /c/y/my_mount_point/my_dir +mkdir /c/y/my_mount_point/my_sub_fs_dir +open /c/y/my_mount_point/my_sub_fs_dir +close /c/y/my_mount_point/my_sub_fs_dir +mkdir /c/y/my_mount_point/my_sub_fs_dir should fail with EEXIST +unmount /c/y/my_mount_point +mkdir /c/y/my_mount_point/my_sub_fs_dir +rmdir /c/y/my_mount_point/my_sub_fs_dir Unmount /c/y/my_mount_point/my_dir should fail with EACCES -Mount a file system at /c/y/my_mount_point/my_dir -unmount /c/y/my_mount_point should fail with EBUSY +Mount a file system at /c/y/my_mount_point Verify a hard link across filesystems fails with EXDEV Verify a symbolic link across file systems works -unmount /c/y/my_mount_point/my_dir -Verify the symbolic link now fails unmount /c/y/my_mount_point +Verify the symbolic link now fails *** END OF MOUNT/UNMOUNT TEST *** diff --git a/testsuites/psxtests/psxmount/test.c b/testsuites/psxtests/psxmount/test.c index 1033226a31..399ac2cfc0 100644 --- a/testsuites/psxtests/psxmount/test.c +++ b/testsuites/psxtests/psxmount/test.c @@ -314,21 +314,33 @@ int main( status = chdir( "/c/y/my_mount_point/mydir" ); rtems_test_assert( status == 0 ); - printf("unmount of /c/y/my_mount_point\n"); + printf("unmount of /c/y/my_mount_point should fail with EBUSY\n"); status = unmount( "/c/y/my_mount_point" ); + rtems_test_assert( status == -1 ); + rtems_test_assert( errno == EBUSY ); + + status = chdir( "/" ); + rtems_test_assert( status == 0 ); + + printf("chroot to /c/y/my_mount_point\n"); + status = chroot( "/c/y/my_mount_point" ); rtems_test_assert( status == 0 ); - printf("chdir to .. should fail with ENXIO\n"); - status = chdir( ".." ); + printf("unmount of . should fail with EBUSY\n"); + status = unmount( "." ); rtems_test_assert( status == -1 ); - rtems_test_assert( errno == ENXIO ); + rtems_test_assert( errno == EBUSY ); /* * Chdir to root and verify we unmounted the file system now. */ - printf("chdir to / and verify we can unmount /c/y/my_mount_point\n"); - status = chdir( "/" ); + printf("chroot to / and verify we can unmount /c/y/my_mount_point\n"); + status = chroot( "/" ); + rtems_test_assert( status == 0 ); + + printf("unmount of /c/y/my_mount_point\n"); + status = unmount( "/c/y/my_mount_point" ); rtems_test_assert( status == 0 ); printf("chdir to /c/y/my_mount_point/my_dir should fail with ENOENT\n"); @@ -376,6 +388,10 @@ int main( directory = opendir( my_sub_fs_dir ); rtems_test_assert( directory ); + printf("close %s\n", my_sub_fs_dir ); + status = closedir( directory ); + rtems_test_assert( status == 0 ); + printf("mkdir %s should fail with EEXIST\n", my_sub_fs_dir ); status = mkdir( my_sub_fs_dir, S_IRWXU ); rtems_test_assert( status == -1 ); @@ -385,10 +401,6 @@ int main( status = unmount( mount_point ); rtems_test_assert( status == 0 ); - printf("close %s\n", my_sub_fs_dir ); - status = closedir( directory ); - rtems_test_assert( status == 0 ); - printf("mkdir %s\n", my_sub_fs_dir ); status = mkdir( my_sub_fs_dir, S_IRWXU ); rtems_test_assert( status == 0 ); |