|
From: Cyril H. <su...@li...> - 2013-05-06 09:22:24
|
The branch, master, has been updated
via 3f9110428b52c978516c24ced41ed1fd445ab4ff (commit)
via 61fbe0cd0da35a673493b3966710f35bb14519db (commit)
from 62a7ab01a20bbababd1e37b2442d9b3906bec0a7 (commit)
- Log -----------------------------------------------------------------
commit 3f9110428b52c978516c24ced41ed1fd445ab4ff
Author: DAN LI <li...@cn...>
Date: Fri Apr 26 15:53:38 2013 +0800
syscalls/mount/mount02.c: modify array "exp_enos"
Expected errno setted in array "exp_enos" do not match
echo test item rightly, leading to two problems:
* Not every test item in mount02 is executed.
There are 13 test items in mount02 currently to test error:
ENODEV, ENOTBLK, EBUSY, EBUSY, EINVAL, EINVAL, EINVAL, EFAULT,
EFAULT, ENAMETOOLONG, ENOENT, ENOENT, ENOTDIR
But, only 8 of them are tested as specified in array "exp_enos":
ENODEV, ENOTBLK, EBUSY, EINVAL, EFAULT, ENAMETOOLONG,
ENOENT, ENOTDIR
* For test item which is executed, its errno returned is maybe not
the one expected.
This patch modifies array "exp_enos" to make it one-to-one correspondent
with each test item, to fix above problems.
Signed-off-by: DAN LI <li...@cn...>
Signed-off-by: Wanlong Gao <gao...@cn...>
commit 61fbe0cd0da35a673493b3966710f35bb14519db
Author: DAN LI <li...@cn...>
Date: Fri Apr 26 15:50:54 2013 +0800
syscalls/mount/mount02.c: cleanup
1. Remove redundant comments
2. Revise code to follow ltp-code-style
Signed-off-by: DAN LI <li...@cn...>
Signed-off-by: Wanlong Gao <gao...@cn...>
-----------------------------------------------------------------------
Summary of changes:
testcases/kernel/syscalls/mount/mount02.c | 171 ++++++++++-------------------
1 files changed, 60 insertions(+), 111 deletions(-)
diff --git a/testcases/kernel/syscalls/mount/mount02.c b/testcases/kernel/syscalls/mount/mount02.c
index 1d1a5c1..b33d3dd 100644
--- a/testcases/kernel/syscalls/mount/mount02.c
+++ b/testcases/kernel/syscalls/mount/mount02.c
@@ -14,76 +14,34 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
-/******************************************************************************
- *
- * TEST IDENTIFIER : mount02
- *
- * EXECUTED BY : root / superuser
- *
- * TEST TITLE : Test for checking basic error conditions for mount(2)
- *
- * TEST CASE TOTAL : 13
- *
- * AUTHOR : Nirmala Devi Dhanasekar <nir...@wi...>
- *
- * SIGNALS
- * Uses SIGUSR1 to pause before test if option set.
- * (See the parse_opts(3) man page).
- *
- * DESCRIPTION
- * Check for basic errors returned by mount(2) system call.
- *
- * Verify that mount(2) returns -1 and sets errno to
- *
- * 1) ENODEV if filesystem type not configured
- * 2) ENOTBLK if specialfile is not a block device
- * 3) EBUSY if specialfile is already mounted or
- * it cannot be remounted read-only, because it still holds
- * files open for writing.
- * 4) EINVAL if specialfile or device is invalid or
- * a remount was attempted, while source was not already
- * mounted on target.
- * 5) EFAULT if specialfile or device file points to invalid address space.
- * 6) ENAMETOOLONG if pathname was longer than MAXPATHLEN.
- * 7) ENOENT if pathname was empty or has a nonexistent component.
- * 8) ENOTDIR if not a directory.
- *
- * Setup:
- * Setup signal handling.
- * Create a mount point.
- * Pause for SIGUSR1 if option specified.
- *
- * Test:
- * Loop if the proper options are given.
- * Do necessary setup for each test.
- * Execute system call
- * Check return code, if system call failed and errno == expected errno
- * Issue sys call passed with expected return value and errno.
- * Otherwise,
- * Issue sys call failed to produce expected error.
- * Do cleanup for each test.
- *
- * Cleanup:
- * Print errno log and/or timing stats if options given
- * Delete the temporary directory(s)/file(s) created.
- *
- * USAGE: <for command-line>
- * mount02 [-T type] -D device [-e] [-i n] [-I x] [-p x] [-t]
- * where, -T type : specifies the type of filesystem to
- * be mounted. Default ext2.
- * -D device : device to be mounted.
- * -e : Turn on errno logging.
- * -i n : Execute test n times.
- * -I x : Execute test for x seconds.
- * -p : Pause for SIGUSR1 before starting
- * -P x : Pause for x seconds between iterations.
- * -t : Turn on syscall timing.
- *
- * RESTRICTIONS
- * test must be run with the -D option
- * test doesn't support -c option to run it in parallel, as mount
- * syscall is not supposed to run in parallel.
- *****************************************************************************/
+
+/*
+ AUTHOR: Nirmala Devi Dhanasekar <nir...@wi...>
+
+ EXECUTED BY: root / superuser
+
+ DESCRIPTION
+ Check for basic errors returned by mount(2) system call.
+
+ Verify that mount(2) returns -1 and sets errno to
+ 1) ENODEV if filesystem type not configured
+ 2) ENOTBLK if specialfile is not a block device
+ 3) EBUSY if specialfile is already mounted or
+ it cannot be remounted read-only, because it still holds
+ files open for writing.
+ 4) EINVAL if specialfile or device is invalid or
+ a remount was attempted, while source was not already
+ mounted on target.
+ 5) EFAULT if specialfile or device file points to invalid address space.
+ 6) ENAMETOOLONG if pathname was longer than MAXPATHLEN.
+ 7) ENOENT if pathname was empty or has a nonexistent component.
+ 8) ENOTDIR if not a directory.
+
+ RESTRICTIONS
+ test must be run with the -D option
+ test doesn't support -c option to run it in parallel, as mount
+ syscall is not supposed to run in parallel.
+*/
#include <errno.h>
#include <sys/mount.h>
@@ -104,8 +62,8 @@ char *TCID = "mount02";
#define DEFAULT_FSTYPE "ext2"
#define FSTYPE_LEN 20
-#define DIR_MODE S_IRWXU | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP
-#define FILE_MODE S_IRWXU | S_IRWXG | S_IRWXO
+#define DIR_MODE (S_IRWXU | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP)
+#define FILE_MODE (S_IRWXU | S_IRWXG | S_IRWXO)
static char *Einval = (char *)-1;
static char Longpathname[PATH_MAX + 2];
@@ -120,18 +78,20 @@ static int fd;
static char mntpoint[PATH_MAX];
static char *fstype;
static char *device;
-static int Tflag = 0;
-static int Dflag = 0;
+static int Tflag;
+static int Dflag;
-static int exp_enos[] = { ENODEV, ENOTBLK, EBUSY, EINVAL, EFAULT, ENAMETOOLONG,
- ENOENT, ENOTDIR, 0
+static int exp_enos[] = {
+ ENODEV, ENOTBLK, EBUSY, EBUSY, EINVAL,
+ EINVAL, EINVAL, EFAULT, EFAULT, ENAMETOOLONG,
+ ENOENT, ENOENT, ENOTDIR, 0
};
int TST_TOTAL = (sizeof(exp_enos) / sizeof(exp_enos[0])) - 1;
-static option_t options[] = { /* options supported by mount02 test */
- {"T:", &Tflag, &fstype}, /* -T type of filesystem */
- {"D:", &Dflag, &device}, /* -D device used for mounting */
+static option_t options[] = {
+ {"T:", &Tflag, &fstype},
+ {"D:", &Dflag, &device},
{NULL, NULL, NULL}
};
@@ -140,7 +100,8 @@ int main(int ac, char **av)
int lc, i;
char *msg;
- if ((msg = parse_opts(ac, av, options, &help)) != NULL)
+ msg = parse_opts(ac, av, options, &help);
+ if (msg != NULL)
tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
/* Check for mandatory option of the testcase */
@@ -149,9 +110,8 @@ int main(int ac, char **av)
" mounting with -D option.");
Type = malloc(FSTYPE_LEN);
- if (Type == NULL) {
+ if (Type == NULL)
tst_brkm(TBROK | TERRNO, NULL, "malloc failed");
- }
if (Tflag == 1) {
strncpy(Type, fstype,
@@ -183,8 +143,8 @@ int main(int ac, char **av)
/* Call mount(2) to test different test conditions.
* verify that it fails with -1 return value and
- * sets appropriate errno.*/
-
+ * sets appropriate errno.
+ */
TEST(mount(Device, Mntpoint, Fstype, Flag, NULL));
/* check return code */
@@ -192,11 +152,11 @@ int main(int ac, char **av)
tst_resm(TPASS | TERRNO,
"mount got expected failure");
} else {
- if (umount(mntpoint) == -1) {
+ if (umount(mntpoint) == -1)
tst_brkm(TBROK | TERRNO, cleanup,
"umount of %s failed",
Mntpoint);
- }
+
tst_resm(TFAIL | TERRNO,
"mount(2) failed to produce expected "
"error (%d)", exp_enos[i]);
@@ -207,7 +167,6 @@ int main(int ac, char **av)
}
}
- /* cleanup and exit */
cleanup();
tst_exit();
@@ -218,7 +177,7 @@ int main(int ac, char **av)
* setup_test() - Setup function for test cases based on the error values
* to be returned.
*/
-int setup_test(int i, int cnt)
+static int setup_test(int i, int cnt)
{
char temp[20];
@@ -271,7 +230,9 @@ int setup_test(int i, int cnt)
}
sprintf(temp, "/%s/t3_%d", mntpoint, cnt);
strcat(Path, temp);
- if ((fd = open(Path, O_CREAT | O_RDWR, S_IRWXU)) == -1) {
+
+ fd = open(Path, O_CREAT | O_RDWR, S_IRWXU);
+ if (fd == -1) {
tst_resm(TWARN | TERRNO, "open() failed to create %s",
Path);
return 1;
@@ -330,7 +291,8 @@ int setup_test(int i, int cnt)
}
sprintf(temp, "/t_%d_%d", getpid(), cnt);
strcat(Path, temp);
- if ((fd = open(Path, O_CREAT, S_IRWXU)) == -1) {
+ fd = open(Path, O_CREAT, S_IRWXU);
+ if (fd == -1) {
tst_resm(TWARN, "open failed to create %s", Path);
return 1;
} else {
@@ -346,7 +308,7 @@ int setup_test(int i, int cnt)
* cleanup_test() - Setup function for test cases based on the error values
* to be returned.
*/
-int cleanup_test(int i)
+static int cleanup_test(int i)
{
switch (i) {
case 0:
@@ -366,9 +328,8 @@ int cleanup_test(int i)
/* FALLTHROUGH */
case 2:
TEST(umount(mntpoint));
- if (TEST_RETURN != 0) {
+ if (TEST_RETURN != 0)
tst_resm(TWARN | TTERRNO, "umount failed");
- }
break;
case 12:
close(fd);
@@ -377,41 +338,29 @@ int cleanup_test(int i)
return 0;
}
-/* setup() - performs all ONE TIME setup for this test */
-void setup()
+static void setup(void)
{
-
tst_sig(FORK, DEF_HANDLER, cleanup);
tst_require_root(NULL);
- /* make a temp directory */
tst_tmpdir();
(void)sprintf(mntpoint, "mnt_%d", getpid());
- if (mkdir(mntpoint, DIR_MODE) == -1) {
+ if (mkdir(mntpoint, DIR_MODE) == -1)
tst_brkm(TBROK | TERRNO, cleanup, "mkdir(%s, %#o) failed",
mntpoint, DIR_MODE);
- }
TEST_EXP_ENOS(exp_enos);
TEST_PAUSE;
}
-/*
- *cleanup() - performs all ONE TIME cleanup for this test at
- * completion or premature exit.
- */
-void cleanup()
+static void cleanup(void)
{
free(Type);
- /*
- * print timing stats if that option was specified.
- * print errno log if that option was specified.
- */
TEST_CLEANUP;
tst_rmdir();
@@ -420,9 +369,9 @@ void cleanup()
/*
* issue a help message
*/
-void help()
+static void help(void)
{
printf("-T type : specifies the type of filesystem to be mounted."
- " Default ext2. \n");
- printf("-D device : device used for mounting \n");
+ " Default ext2.\n");
+ printf("-D device : device used for mounting.\n");
}
hooks/post-receive
--
ltp
|