Hi!
> diff --git a/testcases/kernel/syscalls/open/open12.c 
> b/testcases/kernel/syscalls/open/open12.c
> index 54ddfe0..f9be35b 100644
> --- a/testcases/kernel/syscalls/open/open12.c
> +++ b/testcases/kernel/syscalls/open/open12.c
> @@ -24,6 +24,7 @@
>  #include <stdio.h>
>  #include <sys/types.h>
>  #include <sys/wait.h>
> +#include <sys/mount.h>
>  #include <unistd.h>
>  #include <mntent.h>
>  #include <errno.h>
> @@ -34,8 +35,16 @@
>  #define TEST_FILE    "test_file"
>  #define LARGE_FILE   "large_file"
>  
> +#define DIR_MODE 0755
> +#define MNTPOINT "mntpoint"
> +
>  char *TCID = "open12";
>  
> +static const char *device;
> +static const char *fs_type;
> +static unsigned int mount_flag = 0;
> +static unsigned int cd_flag = 0;
> +
>  static void setup(void);
>  static void cleanup(void);
>  static void test_append(void);
> @@ -114,10 +123,21 @@ static void test_noatime(void)
>       }
>  
>       if (tst_path_has_mnt_flags(cleanup, NULL, flags)) {
> -             tst_resm(TCONF,
> -                      "test O_NOATIME flag for open needs filesystems which "
> -                      "is mounted without noatime and relatime");
> -             return;
> +
> +             fs_type = tst_dev_fs_type();
> +             device = tst_acquire_device(cleanup);
> +
> +             if (!device)
> +                     tst_brkm(TCONF, cleanup, "Failed to obtain block 
> device");
> +
> +             tst_mkfs(cleanup, device, fs_type, NULL);
> +
> +             SAFE_MKDIR(cleanup, MNTPOINT, DIR_MODE);

What about creating a test directory in test temporary directory
unconditionally and change the TEST_FILE to point to a file in it? That
way we can just mount the loop device over the directory if needed and
avoid the ugly chdir here and in the cleanup.

> +             SAFE_MOUNT(cleanup, device, MNTPOINT, fs_type, MS_STRICTATIME, 
> NULL);
> +             mount_flag = 1;
> +             SAFE_FILE_PRINTF(cleanup, MNTPOINT"/"TEST_FILE, TEST_FILE);
> +             SAFE_CHDIR(cleanup, MNTPOINT);
> +             cd_flag = 1;
>       }
>  
>       SAFE_STAT(cleanup, TEST_FILE, &old_stat);
> @@ -221,5 +241,18 @@ static void test_largefile(void)
>  
>  static void cleanup(void)
>  {
> +     if (cd_flag) {
> +             char *tmp_dir = tst_get_tmpdir();
> +             SAFE_CHDIR(NULL, tmp_dir);
> +             free(tmp_dir);
> +     }
> +
> +     if (mount_flag && tst_umount(MNTPOINT) == -1) {
> +             tst_brkm(TBROK | TERRNO, NULL, "umount(2) failed");

This should rather be tst_resm(TWARN | TERRNO, ...) so that we at least
attempt to continue the cleanup.

> +     }
> +
> +     if (device)
> +             tst_release_device(NULL, device);
> +
>       tst_rmdir();

-- 
Cyril Hrubis
chru...@suse.cz

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to