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