mount/mount03.c: clean up
PATCH v2 1/2 mount/mount03.c: clean up
Clean up mount03.c:
xxx func() -> xxx func(void)
clean up setup()
--- testcases/kernel/syscalls/mount/mount03.c | 179 +++++------------------------- 1 file changed, 27 insertions(+), 152 deletions(-)
testcases/kernel/syscalls/mount/mount03.c +27 -152
@@ -16,15 +16,7 @@*/ /* -* EXECUTED BY : root / superuser -* -* TEST TITLE : Test for checking mount(2) flags -* -* TEST CASE TOTAL : 6 -* -* AUTHOR : Nirmala Devi Dhanasekar <[email protected]> -* -* DESCRIPTION +* DESCRIPTION * Check for basic mount(2) system call flags. * * Verify that mount(2) syscall passes for each flag setting and validate
@@ -35,30 +27,7 @@* 4) MS_SYNCHRONOUS - writes are synced at once. * 5) MS_REMOUNT - alter flags of a mounted FS. * 6) MS_NOSUID - ignore suid and sgid bits. -* -* Setup: -* Setup signal handling. -* Create a mount point. -* Pause for SIGUSR1 if option specified. -* -* Test: -* Loop if the proper options are given. -* Execute mount system call for each flag -* Validate each flag setting. if validation fails -* Delete the mount point. -* Log the errno and Issue a FAIL message. -* Delete the mount point. -* Otherwise, Issue a PASS message. -* -* Cleanup: -* Print errno log and/or timing stats if options given -* Delete the temporary directory(s)/file(s) created. -* -* RESTRICTIONS -* test must 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. -*****************************************************************************/ +*/ #ifndef _GNU_SOURCE#define _GNU_SOURCE
@@ -73,14 +42,15 @@#include <fcntl.h> #include <pwd.h> #include <unistd.h> +#include "test.h" #include "usctest.h" +#include "safe_macros.h" static void help (void );static void setup (void );static void cleanup (void );static int test_rwflag (int ,int ); -static int setup_uid (void );char *TCID ="mount03" ;int TST_TOTAL =6 ;
@@ -92,9 +62,9 @@ int TST_TOTAL = 6; S_IXGRP|S_IROTH|S_IXOTH)#define SUID_MODE (S_ISUID|S_IRUSR|S_IXUSR|S_IXGRP|S_IXOTH) -static char *fs_type; +static const char *fs_type ="ext2" ; -static char mntpoint[20 ]; +static const char mntpoint[] ="mntpoint" ;static char *fstype;static char *device;static int tflag;
@@ -104,9 +74,7 @@ static int fildes;static char write_buffer[BUFSIZ ];static char read_buffer[BUFSIZ ];static char path_name[PATH_MAX ]; -static char testhome_path[PATH_MAX ];static char file[PATH_MAX ]; -static char *cmd ="cp" ;long rwflags[] = {MS_RDONLY ,
@@ -138,21 +106,9 @@ int main(int argc, char *argv[])"you must specify the device used for mounting with -D " "option"); -if (tflag) { - fs_type =malloc (strlen (fstype) +1 ); -if (fs_type ==NULL ) -tst_brkm (TBROK |TERRNO ,NULL ,"malloc failed" ); +if (tflag) + fs_type = fstype; - fs_type[strlen (fstype)] ='\0' ; -strncpy (fs_type, fstype,strlen (fstype)); - }else { - fs_type =malloc (strlen (DEFAULT_FSTYPE ) +1 ); -if (fs_type ==NULL ) -tst_brkm (TBROK |TERRNO ,NULL ,"malloc failed" ); - -strncpy (fs_type,DEFAULT_FSTYPE ,strlen (DEFAULT_FSTYPE )); - fs_type[strlen (DEFAULT_FSTYPE )] ='\0' ; - }if (STD_COPIES !=1 ) { tst_resm(TINFO, "-c option has no effect for this testcase - "
@@ -169,11 +125,9 @@ int main(int argc, char *argv[])for (i =0 ; i <TST_TOTAL ; ++i) { -/* Call mount(2) */ TEST (mount (device, mntpoint, fs_type, rwflags[i],NULL )); -/* check return code */ if (TEST_RETURN !=0 ) {tst_resm (TFAIL |TTERRNO ,"mount(2) failed" );continue ;
@@ -203,12 +157,12 @@ int main(int argc, char *argv[])* test_rwflag(int i, int cnt) * Validate the mount system call for rwflags. */ -int test_rwflag (int i,int cnt) {int ret, fd, pid, status;char nobody_uid[] ="nobody" ;struct passwd *ltpuser; +struct stat setuid_test_stat;switch (i) {case 0 :
@@ -337,21 +291,23 @@ int test_rwflag(int i, int cnt)case 5 :/* Validate MS_NOSUID flag of mount call */ -if (setup_uid () !=0 ) { -tst_resm (TBROK |TERRNO ,"setup_uid failed" ); -return 1 ; - } +snprintf (file,PATH_MAX ,"%ssetuid_test" , path_name); +SAFE_FILE_PRINTF (cleanup, file,"TEST FILE" ); + +if (stat (file, &setuid_test_stat) <0 ) +tst_brkm (TBROK , cleanup,"stat for setuid_test failed" ); + +if (setuid_test_stat.st_mode !=SUID_MODE && +chmod (file,SUID_MODE ) <0 ) +tst_brkm (TBROK , cleanup, +"setuid for setuid_test failed" ); + pid =fork ();switch (pid) {case -1 :tst_resm (TBROK |TERRNO ,"fork failed" );return 1 ;case 0 : -snprintf (file,PATH_MAX ,"%ssetuid_test" , path_name); -if (chmod (file,SUID_MODE ) !=0 ) -tst_resm (TWARN ,"chmod(%s, %#o) failed" , - file,SUID_MODE ); - ltpuser =getpwnam (nobody_uid);if (setreuid (ltpuser->pw_uid, ltpuser->pw_uid) ==-1 ) tst_resm(TWARN | TERRNO,
@@ -374,68 +330,18 @@ int test_rwflag(int i, int cnt)return 0 ; } -/* setup_uid() - performs setup for NOUID test */ -int setup_uid () +void setup (void ) { -int pid, status; -char command[PATH_MAX ]; - - pid =fork (); -switch (pid) { -case -1 : -tst_resm (TWARN |TERRNO ,"fork failed" ); -return 1 ; -case 0 : -/* Put command into string */ -sprintf (command,"%s %s %s" , cmd, testhome_path, path_name); - -/* Run command to cp file to right spot */ -if (system (command) ==0 ) -execlp (file,basename (file),NULL ); -else -printf ("call to %s failed\n" , command); - -exit (1 ); -default : -waitpid (pid, &status,0 ); -if (WIFEXITED (status)) { -return WEXITSTATUS (status); - }else if (WIFSIGNALED (status)) { -return WTERMSIG (status); - }else { -/* Should be 0. */ -assert (status ==0 ); -return 0 ; - } - } -} - -void setup () -{ -int fd;char path[PATH_MAX ]; -char *test_home; -struct stat setuid_test_stat;tst_sig (FORK ,DEF_HANDLER , cleanup); -/* Check whether we are root */ -if (geteuid () !=0 ) { -free (fs_type); -tst_brkm (TBROK ,NULL ,"Test must be run as root" ); - } +tst_require_root (NULL );tst_tmpdir (); - test_home =get_current_dir_name (); - -sprintf (mntpoint,"mnt_%d" ,getpid ()); - -if (mkdir (mntpoint,DIR_MODE )) -tst_brkm (TBROK |TERRNO , cleanup,"mkdir(%s, %#o) failed" , - mntpoint,DIR_MODE ); +SAFE_MKDIR (cleanup, mntpoint,DIR_MODE ); -/* Get the current working directory of the process */ if (getcwd (path_name,sizeof (path_name)) ==NULL )tst_brkm (TBROK , cleanup,"getcwd failed" );
@@ -443,53 +349,22 @@ void setup()tst_brkm (TBROK , cleanup,"chmod(%s, %#o) failed" , path_name,DIR_MODE ); -snprintf (file,PATH_MAX ,"%s/setuid_test" , path_name); - fd =open (file,O_CREAT |O_TRUNC ,S_IRWXU ); -if (fd ==-1 ) -tst_brkm (TBROK , cleanup,"open file failed" ); -close (fd); - -if (stat (file, &setuid_test_stat) <0 ) { -tst_brkm (TBROK , cleanup,"stat for setuid_test failed" ); - }else { -if ((setuid_test_stat.st_uid || setuid_test_stat.st_gid) && -chown (file,0 ,0 ) <0 ) -tst_brkm (TBROK , cleanup, -"chown for setuid_test failed" ); - -if (setuid_test_stat.st_mode !=SUID_MODE && -chmod (file,SUID_MODE ) <0 ) -tst_brkm (TBROK , cleanup, -"setuid for setuid_test failed" ); - } - -/* -* under temporary directory -*/ strncpy (path, path_name,PATH_MAX );snprintf (path_name,PATH_MAX ,"%s/%s/" , path, mntpoint); -strcpy (testhome_path, test_home); -strcat (testhome_path,"/setuid_test" );TEST_PAUSE ; - } -void cleanup () +void cleanup (void ) { -free (fs_type); -TEST_CLEANUP ;tst_rmdir (); } -/* -* issue a help message -*/ -void help () +void help (void ) { -printf ("-T type : specifies the type of filesystem to be mounted." -" Default ext2.\n" ); +printf ("-T type : specifies the type of filesystem to be mounted. " +"Default ext2.\n" );printf ("-D device : device used for mounting.\n" ); }
Signature · 12 lines
1.8.1 ------------------------------------------------------------------------------ This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
PATCH v2 2/2 mount/mount03.c: Test feature MS_NOATIME of mount(2)
Additional test for feature MS_NOATIME.
--- testcases/kernel/syscalls/mount/mount03.c | 51 ++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 4 deletions(-)
testcases/kernel/syscalls/mount/mount03.c +47 -4
@@ -27,6 +27,7 @@* 4) MS_SYNCHRONOUS - writes are synced at once. * 5) MS_REMOUNT - alter flags of a mounted FS. * 6) MS_NOSUID - ignore suid and sgid bits. +* 7) MS_NOATIME - do not update access times. */ #ifndef _GNU_SOURCE
@@ -53,7 +54,7 @@ static void cleanup(void);static int test_rwflag (int ,int );char *TCID ="mount03" ; -int TST_TOTAL =6 ; +int TST_TOTAL =7 ;#define DEFAULT_FSTYPE "ext2"#define TEMP_FILE "temp_file"
@@ -83,6 +84,7 @@ long rwflags[] = {MS_SYNCHRONOUS ,MS_RDONLY ,MS_NOSUID , + MS_NOATIME, }; static option_t options[] = {
@@ -161,8 +163,9 @@ int test_rwflag(int i, int cnt) {int ret, fd, pid, status;char nobody_uid[] ="nobody" ; +time_t atime;struct passwd *ltpuser; -struct stat setuid_test_stat; +struct stat file_stat;switch (i) {case 0 :
@@ -294,10 +297,10 @@ int test_rwflag(int i, int cnt)snprintf (file,PATH_MAX ,"%ssetuid_test" , path_name);SAFE_FILE_PRINTF (cleanup, file,"TEST FILE" ); -if (stat (file, &setuid_test_stat) <0 ) +if (stat (file, &file_stat) <0 )tst_brkm (TBROK , cleanup,"stat for setuid_test failed" ); -if (setuid_test_stat.st_mode !=SUID_MODE && +if (file_stat.st_mode !=SUID_MODE &&chmod (file,SUID_MODE ) <0 )tst_brkm (TBROK , cleanup,"setuid for setuid_test failed" );
@@ -326,6 +329,46 @@ int test_rwflag(int i, int cnt)return 1 ; } } +case 6 : +/* Validate MS_NOATIME flag of mount call */ + +snprintf (file,PATH_MAX ,"%satime" , path_name); + fd =open (file,O_CREAT |O_RDWR ,S_IRWXU ); +if (fd ==-1 ) { +tst_resm (TWARN |TERRNO ,"opening %s failed" , file); +return 1 ; + } + +if (write (fd,"TEST_MS_NOATIME" ,15 ) !=15 ) { +tst_resm (TWARN |TERRNO ,"write %s failed" , file); +return 1 ; + } + +if (fstat (fd, &file_stat) ==-1 ) { +tst_resm (TWARN |TERRNO ,"stat %s failed #1" , file); +return 1 ; + } + + atime = file_stat.st_atime; + +sleep (1 ); + +if (read (fd,NULL ,20 ) ==-1 ) { +tst_resm (TWARN |TERRNO ,"read %s failed" , file); +return 1 ; + } + +if (fstat (fd, &file_stat) ==-1 ) { +tst_resm (TWARN |TERRNO ,"stat %s failed #2" , file); +return 1 ; + } +close (fd); + +if (file_stat.st_atime != atime) { +tst_resm (TWARN ,"access time is updated" ); +return 1 ; + } +return 0 ; }return 0 ; }
Signature · 14 lines
1.8.1 ------------------------------------------------------------------------------ This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
Wanlong Gao
AppliedQuoted 7 lines · DAN LI
Clean up
mount03.c:
xxxfunc()-> xxx func(void)clean up
setup()Signed-off-by DAN LI <[email protected]>
Applied V2 series, thank you.
Wanlong Gao
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list