* [LTP] [PATCH v1 1/2] syscalls/mount03: Add MS_NODIRATIME subcase
@ 2022-11-25 11:31 Yang Xu
2022-11-25 11:31 ` [LTP] [PATCH v1 2/2] syscalls/mount03: Add MS_STRICTATIME subcase Yang Xu
2022-11-29 14:09 ` [LTP] [PATCH v1 1/2] syscalls/mount03: Add MS_NODIRATIME subcase Richard Palethorpe
0 siblings, 2 replies; 6+ messages in thread
From: Yang Xu @ 2022-11-25 11:31 UTC (permalink / raw)
To: ltp
From mount(2) man-page, it means don't update access times for directories
on this filesystem. Also, test file and directory' atime for
noatime and nodiratime mount option.
Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
---
testcases/kernel/syscalls/mount/mount03.c | 59 +++++++++++++++++++++--
1 file changed, 55 insertions(+), 4 deletions(-)
diff --git a/testcases/kernel/syscalls/mount/mount03.c b/testcases/kernel/syscalls/mount/mount03.c
index 397c1bf81..31a858c35 100644
--- a/testcases/kernel/syscalls/mount/mount03.c
+++ b/testcases/kernel/syscalls/mount/mount03.c
@@ -18,6 +18,7 @@
* - MS_REMOUNT - alter flags of a mounted FS
* - MS_NOSUID - ignore suid and sgid bits
* - MS_NOATIME - do not update access times
+ * - MS_NODIRATIME - only update access_time for directory instead of all types
*/
#include <stdio.h>
@@ -40,6 +41,7 @@
static int otfd;
static char file[PATH_MAX];
+static char dir[PATH_MAX];
static uid_t nobody_uid;
static gid_t nobody_gid;
@@ -95,23 +97,71 @@ static void test_nosuid(void)
tst_reap_children();
}
-static void test_noatime(void)
+static void test_file_dir_noatime(int update_fatime, int update_datime)
{
- time_t atime;
- struct stat st;
+ time_t atime, dir_atime;
+ struct stat st, dir_st;
char readbuf[20];
+ DIR *test_dir;
snprintf(file, PATH_MAX, "%s/noatime", MNTPOINT);
TST_EXP_FD_SILENT(otfd = open(file, O_CREAT | O_RDWR, 0700));
+ snprintf(dir, PATH_MAX, "%s/nodiratime", MNTPOINT);
+ if (access(dir, F_OK) == -1 && errno == ENOENT)
+ SAFE_MKDIR(dir, 0700);
+
SAFE_WRITE(1, otfd, TEST_STR, strlen(TEST_STR));
SAFE_FSTAT(otfd, &st);
atime = st.st_atime;
+
+ test_dir = SAFE_OPENDIR(dir);
+ SAFE_STAT(dir, &dir_st);
+ SAFE_READDIR(test_dir);
+ SAFE_CLOSEDIR(test_dir);
+ dir_atime = dir_st.st_atime;
+
sleep(1);
SAFE_READ(0, otfd, readbuf, sizeof(readbuf));
SAFE_FSTAT(otfd, &st);
- TST_EXP_EQ_LI(st.st_atime, atime);
+
+ test_dir = SAFE_OPENDIR(dir);
+ SAFE_READDIR(test_dir);
+ SAFE_CLOSEDIR(test_dir);
+ SAFE_STAT(dir, &dir_st);
+
+ if (update_fatime) {
+ if (st.st_atime > atime)
+ tst_res(TPASS, "st.st_atime(%ld) > atime(%ld)",
+ st.st_atime, atime);
+ else
+ tst_res(TFAIL, "st.st_atime(%ld) < atime(%ld)",
+ st.st_atime, atime);
+ } else {
+ TST_EXP_EQ_LI(st.st_atime, atime);
+ }
+
+ if (update_datime) {
+ if (dir_st.st_atime > dir_atime)
+ tst_res(TPASS, "dir_st.st_atime(%ld) > dir_atime(%ld)",
+ dir_st.st_atime, dir_atime);
+ else
+ tst_res(TFAIL, "dir_st.st_atime(%ld) < dir_atime(%ld)",
+ dir_st.st_atime, dir_atime);
+ } else {
+ TST_EXP_EQ_LI(dir_st.st_atime, dir_atime);
+ }
+}
+
+static void test_noatime(void)
+{
+ test_file_dir_noatime(0, 0);
+}
+
+static void test_nodiratime(void)
+{
+ test_file_dir_noatime(1, 0);
}
#define FLAG_DESC(x) .flag = x, .flag2 = x, .desc = #x
@@ -128,6 +178,7 @@ static struct tcase {
{MS_RDONLY, FLAG_DESC2(MS_REMOUNT), test_remount},
{FLAG_DESC(MS_NOSUID), test_nosuid},
{FLAG_DESC(MS_NOATIME), test_noatime},
+ {FLAG_DESC(MS_NODIRATIME), test_nodiratime},
};
static void setup(void)
--
2.23.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [LTP] [PATCH v1 2/2] syscalls/mount03: Add MS_STRICTATIME subcase
2022-11-25 11:31 [LTP] [PATCH v1 1/2] syscalls/mount03: Add MS_NODIRATIME subcase Yang Xu
@ 2022-11-25 11:31 ` Yang Xu
2022-11-29 13:54 ` Richard Palethorpe
2022-11-29 14:09 ` [LTP] [PATCH v1 1/2] syscalls/mount03: Add MS_NODIRATIME subcase Richard Palethorpe
1 sibling, 1 reply; 6+ messages in thread
From: Yang Xu @ 2022-11-25 11:31 UTC (permalink / raw)
To: ltp
This case should check MS_NOATIME and MS_RELATIME are
not inside stat f_flags[1] .
[1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d0adde57
Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
---
testcases/kernel/syscalls/mount/mount03.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/testcases/kernel/syscalls/mount/mount03.c b/testcases/kernel/syscalls/mount/mount03.c
index 31a858c35..60f9963da 100644
--- a/testcases/kernel/syscalls/mount/mount03.c
+++ b/testcases/kernel/syscalls/mount/mount03.c
@@ -19,6 +19,7 @@
* - MS_NOSUID - ignore suid and sgid bits
* - MS_NOATIME - do not update access times
* - MS_NODIRATIME - only update access_time for directory instead of all types
+ * - MS_STRICTATIME - always update access times
*/
#include <stdio.h>
@@ -164,6 +165,11 @@ static void test_nodiratime(void)
test_file_dir_noatime(1, 0);
}
+static void test_strictatime(void)
+{
+ test_file_dir_noatime(1, 1);
+}
+
#define FLAG_DESC(x) .flag = x, .flag2 = x, .desc = #x
#define FLAG_DESC2(x) .flag2 = x, .desc = #x
static struct tcase {
@@ -179,6 +185,7 @@ static struct tcase {
{FLAG_DESC(MS_NOSUID), test_nosuid},
{FLAG_DESC(MS_NOATIME), test_noatime},
{FLAG_DESC(MS_NODIRATIME), test_nodiratime},
+ {FLAG_DESC(MS_STRICTATIME), test_strictatime}
};
static void setup(void)
@@ -215,6 +222,15 @@ static void run(unsigned int n)
tc->test();
SAFE_STATFS(MNTPOINT, &stfs);
+ if (tc->flag == MS_STRICTATIME) {
+ if (stfs.f_flags & (MS_NOATIME | MS_RELATIME))
+ tst_res(TFAIL, "statfs() gets the incorrect mount flag");
+ else
+ tst_res(TPASS, "statfs() gets the correct mount flag");
+ cleanup();
+ return;
+ }
+
if (stfs.f_flags & tc->flag2)
tst_res(TPASS, "statfs() gets the correct mount flag");
else
--
2.23.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [LTP] [PATCH v1 2/2] syscalls/mount03: Add MS_STRICTATIME subcase
2022-11-25 11:31 ` [LTP] [PATCH v1 2/2] syscalls/mount03: Add MS_STRICTATIME subcase Yang Xu
@ 2022-11-29 13:54 ` Richard Palethorpe
2022-11-30 2:02 ` xuyang2018.jy
0 siblings, 1 reply; 6+ messages in thread
From: Richard Palethorpe @ 2022-11-29 13:54 UTC (permalink / raw)
To: Yang Xu; +Cc: ltp
Hello,
Yang Xu <xuyang2018.jy@fujitsu.com> writes:
> This case should check MS_NOATIME and MS_RELATIME are
> not inside stat f_flags[1] .
>
> [1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d0adde57
> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> ---
> testcases/kernel/syscalls/mount/mount03.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/testcases/kernel/syscalls/mount/mount03.c b/testcases/kernel/syscalls/mount/mount03.c
> index 31a858c35..60f9963da 100644
> --- a/testcases/kernel/syscalls/mount/mount03.c
> +++ b/testcases/kernel/syscalls/mount/mount03.c
> @@ -19,6 +19,7 @@
> * - MS_NOSUID - ignore suid and sgid bits
> * - MS_NOATIME - do not update access times
> * - MS_NODIRATIME - only update access_time for directory instead of all types
> + * - MS_STRICTATIME - always update access times
> */
>
> #include <stdio.h>
> @@ -164,6 +165,11 @@ static void test_nodiratime(void)
> test_file_dir_noatime(1, 0);
> }
>
> +static void test_strictatime(void)
> +{
> + test_file_dir_noatime(1, 1);
> +}
> +
> #define FLAG_DESC(x) .flag = x, .flag2 = x, .desc = #x
> #define FLAG_DESC2(x) .flag2 = x, .desc = #x
> static struct tcase {
> @@ -179,6 +185,7 @@ static struct tcase {
> {FLAG_DESC(MS_NOSUID), test_nosuid},
> {FLAG_DESC(MS_NOATIME), test_noatime},
> {FLAG_DESC(MS_NODIRATIME), test_nodiratime},
> + {FLAG_DESC(MS_STRICTATIME), test_strictatime}
> };
>
> static void setup(void)
> @@ -215,6 +222,15 @@ static void run(unsigned int n)
> tc->test();
>
> SAFE_STATFS(MNTPOINT, &stfs);
> + if (tc->flag == MS_STRICTATIME) {
> + if (stfs.f_flags & (MS_NOATIME | MS_RELATIME))
> + tst_res(TFAIL, "statfs() gets the incorrect mount flag");
> + else
> + tst_res(TPASS, "statfs() gets the correct mount flag");
> + cleanup();
> + return;
> + }
We don't need this branch.
> +
> if (stfs.f_flags & tc->flag2)
Could change this to something like
if (stfs.f_flags & tc->flag2
&& !(stfs.f_flags & MS_STRICTATIME && stfs.f_flags & (MS_NOATIME | MS_RELATIME))
Or however you would like to format that.
--
Thank you,
Richard.
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [LTP] [PATCH v1 1/2] syscalls/mount03: Add MS_NODIRATIME subcase
2022-11-25 11:31 [LTP] [PATCH v1 1/2] syscalls/mount03: Add MS_NODIRATIME subcase Yang Xu
2022-11-25 11:31 ` [LTP] [PATCH v1 2/2] syscalls/mount03: Add MS_STRICTATIME subcase Yang Xu
@ 2022-11-29 14:09 ` Richard Palethorpe
1 sibling, 0 replies; 6+ messages in thread
From: Richard Palethorpe @ 2022-11-29 14:09 UTC (permalink / raw)
To: Yang Xu; +Cc: ltp
Hello,
Yang Xu <xuyang2018.jy@fujitsu.com> writes:
> From mount(2) man-page, it means don't update access times for directories
> on this filesystem. Also, test file and directory' atime for
> noatime and nodiratime mount option.
Merged this assumming the next patch will also get merged at some
point. Thanks!
(because update_datime is not used in this patch)
--
Thank you,
Richard.
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [LTP] [PATCH v1 2/2] syscalls/mount03: Add MS_STRICTATIME subcase
2022-11-29 13:54 ` Richard Palethorpe
@ 2022-11-30 2:02 ` xuyang2018.jy
2022-12-01 9:48 ` Richard Palethorpe
0 siblings, 1 reply; 6+ messages in thread
From: xuyang2018.jy @ 2022-11-30 2:02 UTC (permalink / raw)
To: rpalethorpe@suse.de; +Cc: ltp@lists.linux.it
Hi Richard
> Hello,
>
> Yang Xu <xuyang2018.jy@fujitsu.com> writes:
>
>> This case should check MS_NOATIME and MS_RELATIME are
>> not inside stat f_flags[1] .
>>
>> [1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d0adde57
>> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
>> ---
>> testcases/kernel/syscalls/mount/mount03.c | 16 ++++++++++++++++
>> 1 file changed, 16 insertions(+)
>>
>> diff --git a/testcases/kernel/syscalls/mount/mount03.c b/testcases/kernel/syscalls/mount/mount03.c
>> index 31a858c35..60f9963da 100644
>> --- a/testcases/kernel/syscalls/mount/mount03.c
>> +++ b/testcases/kernel/syscalls/mount/mount03.c
>> @@ -19,6 +19,7 @@
>> * - MS_NOSUID - ignore suid and sgid bits
>> * - MS_NOATIME - do not update access times
>> * - MS_NODIRATIME - only update access_time for directory instead of all types
>> + * - MS_STRICTATIME - always update access times
>> */
>>
>> #include <stdio.h>
>> @@ -164,6 +165,11 @@ static void test_nodiratime(void)
>> test_file_dir_noatime(1, 0);
>> }
>>
>> +static void test_strictatime(void)
>> +{
>> + test_file_dir_noatime(1, 1);
>> +}
>> +
>> #define FLAG_DESC(x) .flag = x, .flag2 = x, .desc = #x
>> #define FLAG_DESC2(x) .flag2 = x, .desc = #x
>> static struct tcase {
>> @@ -179,6 +185,7 @@ static struct tcase {
>> {FLAG_DESC(MS_NOSUID), test_nosuid},
>> {FLAG_DESC(MS_NOATIME), test_noatime},
>> {FLAG_DESC(MS_NODIRATIME), test_nodiratime},
>> + {FLAG_DESC(MS_STRICTATIME), test_strictatime}
>> };
>>
>> static void setup(void)
>> @@ -215,6 +222,15 @@ static void run(unsigned int n)
>> tc->test();
>>
>> SAFE_STATFS(MNTPOINT, &stfs);
>> + if (tc->flag == MS_STRICTATIME) {
>> + if (stfs.f_flags & (MS_NOATIME | MS_RELATIME))
>> + tst_res(TFAIL, "statfs() gets the incorrect mount flag");
>> + else
>> + tst_res(TPASS, "statfs() gets the correct mount flag");
>> + cleanup();
>> + return;
>> + }
>
> We don't need this branch.
>
>> +
>> if (stfs.f_flags & tc->flag2)
>
> Could change this to something like
>
> if (stfs.f_flags & tc->flag2
> && !(stfs.f_flags & MS_STRICTATIME && stfs.f_flags & (MS_NOATIME | MS_RELATIME))
I try it, but case reports fail because stfs.f_flags doesn't contain
MS_STRICTATIME flag. Sorry, I guess my commit message only mentioned
that MS_NOATIME and MS_RELATIME are not inside stat f_flags but missed
that the MS_STRICTATIME flag is ignored by kernel.
Best Regards
Yang Xu
>
> Or however you would like to format that.
>
>
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [LTP] [PATCH v1 2/2] syscalls/mount03: Add MS_STRICTATIME subcase
2022-11-30 2:02 ` xuyang2018.jy
@ 2022-12-01 9:48 ` Richard Palethorpe
0 siblings, 0 replies; 6+ messages in thread
From: Richard Palethorpe @ 2022-12-01 9:48 UTC (permalink / raw)
To: xuyang2018.jy@fujitsu.com; +Cc: ltp@lists.linux.it
"xuyang2018.jy@fujitsu.com" <xuyang2018.jy@fujitsu.com> writes:
> Hi Richard
>
>> Hello,
>>
>> Yang Xu <xuyang2018.jy@fujitsu.com> writes:
>>
>>> This case should check MS_NOATIME and MS_RELATIME are
>>> not inside stat f_flags[1] .
>>>
>>> [1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d0adde57
>>> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
>>> ---
>>> testcases/kernel/syscalls/mount/mount03.c | 16 ++++++++++++++++
>>> 1 file changed, 16 insertions(+)
>>>
>>> diff --git a/testcases/kernel/syscalls/mount/mount03.c b/testcases/kernel/syscalls/mount/mount03.c
>>> index 31a858c35..60f9963da 100644
>>> --- a/testcases/kernel/syscalls/mount/mount03.c
>>> +++ b/testcases/kernel/syscalls/mount/mount03.c
>>> @@ -19,6 +19,7 @@
>>> * - MS_NOSUID - ignore suid and sgid bits
>>> * - MS_NOATIME - do not update access times
>>> * - MS_NODIRATIME - only update access_time for directory instead of all types
>>> + * - MS_STRICTATIME - always update access times
>>> */
>>>
>>> #include <stdio.h>
>>> @@ -164,6 +165,11 @@ static void test_nodiratime(void)
>>> test_file_dir_noatime(1, 0);
>>> }
>>>
>>> +static void test_strictatime(void)
>>> +{
>>> + test_file_dir_noatime(1, 1);
>>> +}
>>> +
>>> #define FLAG_DESC(x) .flag = x, .flag2 = x, .desc = #x
>>> #define FLAG_DESC2(x) .flag2 = x, .desc = #x
>>> static struct tcase {
>>> @@ -179,6 +185,7 @@ static struct tcase {
>>> {FLAG_DESC(MS_NOSUID), test_nosuid},
>>> {FLAG_DESC(MS_NOATIME), test_noatime},
>>> {FLAG_DESC(MS_NODIRATIME), test_nodiratime},
>>> + {FLAG_DESC(MS_STRICTATIME), test_strictatime}
>>> };
>>>
>>> static void setup(void)
>>> @@ -215,6 +222,15 @@ static void run(unsigned int n)
>>> tc->test();
>>>
>>> SAFE_STATFS(MNTPOINT, &stfs);
>>> + if (tc->flag == MS_STRICTATIME) {
>>> + if (stfs.f_flags & (MS_NOATIME | MS_RELATIME))
>>> + tst_res(TFAIL, "statfs() gets the incorrect mount flag");
>>> + else
>>> + tst_res(TPASS, "statfs() gets the correct mount flag");
>>> + cleanup();
>>> + return;
>>> + }
>>
>> We don't need this branch.
>>
>>> +
>>> if (stfs.f_flags & tc->flag2)
>>
>> Could change this to something like
>>
>> if (stfs.f_flags & tc->flag2
>> && !(stfs.f_flags & MS_STRICTATIME && stfs.f_flags & (MS_NOATIME | MS_RELATIME))
>
> I try it, but case reports fail because stfs.f_flags doesn't contain
> MS_STRICTATIME flag. Sorry, I guess my commit message only mentioned
Ah, sorry, it should be something like:
if (stfs.f_flags & tc->flag2
&& (tc->flag2 != MS_STRICTATIME || !(stfs.f_flags & MS_STRICTATIME
&& stfs.f_flags & (MS_NOATIME | MS_RELATIME)))
but actually this is getting kind of messy now. So I'll merge it as you
sent it. Thanks!
--
Thank you,
Richard.
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-12-01 9:55 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-25 11:31 [LTP] [PATCH v1 1/2] syscalls/mount03: Add MS_NODIRATIME subcase Yang Xu
2022-11-25 11:31 ` [LTP] [PATCH v1 2/2] syscalls/mount03: Add MS_STRICTATIME subcase Yang Xu
2022-11-29 13:54 ` Richard Palethorpe
2022-11-30 2:02 ` xuyang2018.jy
2022-12-01 9:48 ` Richard Palethorpe
2022-11-29 14:09 ` [LTP] [PATCH v1 1/2] syscalls/mount03: Add MS_NODIRATIME subcase Richard Palethorpe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox