* [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{,1}() helpers
@ 2019-06-05 7:21 Petr Vorel
2019-06-05 7:21 ` [LTP] [PATCH 2/2] inotify: Add SAFE_MYINOTIFY_ADD_WATCH() helper Petr Vorel
2019-06-13 13:10 ` [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{, 1}() helpers Cyril Hrubis
0 siblings, 2 replies; 10+ messages in thread
From: Petr Vorel @ 2019-06-05 7:21 UTC (permalink / raw)
To: ltp
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
Hi,
should there be inc/tst_safe_inotify.h and
lib/tst_safe_inotify.c? I didn't do that as that would link to
everything, which is waste of space.
Kind regards,
Petr
---
testcases/kernel/syscalls/inotify/inotify.h | 51 ++++++++++---------
testcases/kernel/syscalls/inotify/inotify01.c | 10 +---
testcases/kernel/syscalls/inotify/inotify02.c | 10 +---
testcases/kernel/syscalls/inotify/inotify03.c | 10 +---
testcases/kernel/syscalls/inotify/inotify04.c | 11 +---
testcases/kernel/syscalls/inotify/inotify05.c | 11 +---
testcases/kernel/syscalls/inotify/inotify06.c | 4 +-
testcases/kernel/syscalls/inotify/inotify07.c | 11 +---
testcases/kernel/syscalls/inotify/inotify08.c | 11 +---
testcases/kernel/syscalls/inotify/inotify09.c | 4 +-
10 files changed, 35 insertions(+), 98 deletions(-)
diff --git a/testcases/kernel/syscalls/inotify/inotify.h b/testcases/kernel/syscalls/inotify/inotify.h
index 0298ca715..c82a7e75e 100644
--- a/testcases/kernel/syscalls/inotify/inotify.h
+++ b/testcases/kernel/syscalls/inotify/inotify.h
@@ -1,27 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
/*
* inotify testcase common definitions.
*
- * Copyright (c) 2012 Linux Test Project. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of version 2 of the GNU General Public License as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it would be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Further, this software is distributed without any warranty that it is
- * free of the rightful claim of any third person regarding infringement
- * or the like. Any license provided herein, whether implied or
- * otherwise, applies only to this software file. Patent licenses, if
- * any, provided herein do not apply to combinations of this program with
- * other software, or any other product whatsoever.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
+ * Copyright (c) 2012-2019 Linux Test Project. All Rights Reserved.
* Ngie Cooper, April 2012
*/
@@ -33,20 +14,40 @@
/* inotify(7) wrappers */
#if __NR_inotify_init != __LTP__NR_INVALID_SYSCALL
-#define myinotify_init() \
+#define myinotify_init() \
tst_syscall(__NR_inotify_init)
#else
-#define myinotify_init() \
+#define myinotify_init() \
tst_syscall(__NR_inotify_init1, 0)
#endif
#define myinotify_init1(flags) \
tst_syscall(__NR_inotify_init1, flags)
-#define myinotify_add_watch(fd, pathname, mask) \
+#define myinotify_add_watch(fd, pathname, mask) \
tst_syscall(__NR_inotify_add_watch, fd, pathname, mask)
-#define myinotify_rm_watch(fd, wd) \
+#define myinotify_rm_watch(fd, wd) \
tst_syscall(__NR_inotify_rm_watch, fd, wd)
+static inline int safe_myinotify_init(const char *file, const int lineno, int fd)
+{
+ if (fd < 0) {
+ if (errno == ENOSYS) {
+ tst_brk(TCONF, "%s:%d: inotify is not configured in this kernel",
+ file, lineno);
+ } else {
+ tst_brk(TBROK | TERRNO, "%s:%d: inotify_init failed",
+ file, lineno);
+ }
+ }
+ return fd;
+}
+
+#define SAFE_MYINOTIFY_INIT() \
+ safe_myinotify_init(__FILE__, __LINE__, myinotify_init())
+
+#define SAFE_MYINOTIFY_INIT1(flags) \
+ safe_myinotify_init(__FILE__, __LINE__, myinotify_init1(flags))
+
#endif /* _INOTIFY_H */
diff --git a/testcases/kernel/syscalls/inotify/inotify01.c b/testcases/kernel/syscalls/inotify/inotify01.c
index f0cf51297..f08a75dcf 100644
--- a/testcases/kernel/syscalls/inotify/inotify01.c
+++ b/testcases/kernel/syscalls/inotify/inotify01.c
@@ -167,15 +167,7 @@ static void setup(void)
SAFE_FILE_PRINTF(fname, "%s", fname);
- if ((fd_notify = myinotify_init()) < 0) {
- if (errno == ENOSYS) {
- tst_brk(TCONF,
- "inotify is not configured in this kernel.");
- } else {
- tst_brk(TBROK | TERRNO,
- "inotify_init failed");
- }
- }
+ fd_notify = SAFE_MYINOTIFY_INIT();
if ((wd = myinotify_add_watch(fd_notify, fname, IN_ALL_EVENTS)) < 0) {
tst_brk(TBROK | TERRNO,
diff --git a/testcases/kernel/syscalls/inotify/inotify02.c b/testcases/kernel/syscalls/inotify/inotify02.c
index 02eb85764..ca70b4e9e 100644
--- a/testcases/kernel/syscalls/inotify/inotify02.c
+++ b/testcases/kernel/syscalls/inotify/inotify02.c
@@ -234,15 +234,7 @@ void verify_inotify(void)
static void setup(void)
{
- if ((fd_notify = myinotify_init()) < 0) {
- if (errno == ENOSYS) {
- tst_brk(TCONF,
- "inotify is not configured in this kernel.");
- } else {
- tst_brk(TBROK | TERRNO,
- "inotify_init () failed");
- }
- }
+ fd_notify = SAFE_MYINOTIFY_INIT();
if ((wd = myinotify_add_watch(fd_notify, ".", IN_ALL_EVENTS)) < 0) {
tst_brk(TBROK | TERRNO,
diff --git a/testcases/kernel/syscalls/inotify/inotify03.c b/testcases/kernel/syscalls/inotify/inotify03.c
index ff7419944..772623125 100644
--- a/testcases/kernel/syscalls/inotify/inotify03.c
+++ b/testcases/kernel/syscalls/inotify/inotify03.c
@@ -171,15 +171,7 @@ static void setup(void)
/* close the file we have open */
SAFE_CLOSE(fd);
- fd_notify = myinotify_init();
- if (fd_notify < 0) {
- if (errno == ENOSYS)
- tst_brk(TCONF,
- "inotify is not configured in this kernel.");
- else
- tst_brk(TBROK | TERRNO,
- "inotify_init failed");
- }
+ fd_notify = SAFE_MYINOTIFY_INIT();
tst_umount(mntpoint);
mount_flag = 0;
diff --git a/testcases/kernel/syscalls/inotify/inotify04.c b/testcases/kernel/syscalls/inotify/inotify04.c
index 36673d6eb..6adb41701 100644
--- a/testcases/kernel/syscalls/inotify/inotify04.c
+++ b/testcases/kernel/syscalls/inotify/inotify04.c
@@ -95,16 +95,7 @@ static void cleanup(void)
static void setup(void)
{
- fd_notify = myinotify_init();
- if (fd_notify == -1) {
- if (errno == ENOSYS) {
- tst_brk(TCONF,
- "inotify is not configured in this kernel.");
- } else {
- tst_brk(TBROK | TERRNO,
- "inotify_init failed");
- }
- }
+ fd_notify = SAFE_MYINOTIFY_INIT();
}
void verify_inotify(void)
diff --git a/testcases/kernel/syscalls/inotify/inotify05.c b/testcases/kernel/syscalls/inotify/inotify05.c
index 2d8897e5d..b5813b25b 100644
--- a/testcases/kernel/syscalls/inotify/inotify05.c
+++ b/testcases/kernel/syscalls/inotify/inotify05.c
@@ -143,16 +143,7 @@ static void setup(void)
SAFE_WRITE(1, fd, buf, BUF_SIZE);
SAFE_CLOSE(fd);
- fd_notify = myinotify_init1(O_NONBLOCK);
- if (fd_notify < 0) {
- if (errno == ENOSYS) {
- tst_brk(TCONF,
- "inotify is not configured in this kernel.");
- } else {
- tst_brk(TBROK | TERRNO,
- "inotify_init failed");
- }
- }
+ fd_notify = SAFE_MYINOTIFY_INIT1(O_NONBLOCK);
wd = myinotify_add_watch(fd_notify, fname, IN_ALL_EVENTS);
if (wd < 0) {
diff --git a/testcases/kernel/syscalls/inotify/inotify06.c b/testcases/kernel/syscalls/inotify/inotify06.c
index 4475f5ea4..8ea504952 100644
--- a/testcases/kernel/syscalls/inotify/inotify06.c
+++ b/testcases/kernel/syscalls/inotify/inotify06.c
@@ -82,9 +82,7 @@ static void verify_inotify(void)
}
for (tests = 0; tests < TEARDOWNS; tests++) {
- inotify_fd = myinotify_init1(O_NONBLOCK);
- if (inotify_fd < 0)
- tst_brk(TBROK | TERRNO, "inotify_init failed");
+ inotify_fd = SAFE_MYINOTIFY_INIT1(O_NONBLOCK);
for (i = 0; i < FILES; i++) {
/*
diff --git a/testcases/kernel/syscalls/inotify/inotify07.c b/testcases/kernel/syscalls/inotify/inotify07.c
index ba17d2081..1111b43bf 100644
--- a/testcases/kernel/syscalls/inotify/inotify07.c
+++ b/testcases/kernel/syscalls/inotify/inotify07.c
@@ -165,16 +165,7 @@ static void setup(void)
SAFE_TOUCH(OVL_LOWER"/"DIR_NAME"/"FILE_NAME, 0644, NULL);
SAFE_MOUNT_OVERLAY();
- fd_notify = myinotify_init1(O_NONBLOCK);
- if (fd_notify < 0) {
- if (errno == ENOSYS) {
- tst_brk(TCONF,
- "inotify is not configured in this kernel");
- } else {
- tst_brk(TBROK | TERRNO,
- "inotify_init () failed");
- }
- }
+ fd_notify = SAFE_MYINOTIFY_INIT1(O_NONBLOCK);
/* Setup a watch on an overlayfs lower directory */
if ((wd = myinotify_add_watch(fd_notify, DIR_PATH, IN_ALL_EVENTS)) < 0) {
diff --git a/testcases/kernel/syscalls/inotify/inotify08.c b/testcases/kernel/syscalls/inotify/inotify08.c
index b295ba48e..ee8e44fe1 100644
--- a/testcases/kernel/syscalls/inotify/inotify08.c
+++ b/testcases/kernel/syscalls/inotify/inotify08.c
@@ -157,16 +157,7 @@ static void setup(void)
SAFE_TOUCH(OVL_LOWER"/"FILE_NAME, 0644, NULL);
SAFE_MOUNT_OVERLAY();
- fd_notify = myinotify_init1(O_NONBLOCK);
- if (fd_notify < 0) {
- if (errno == ENOSYS) {
- tst_brk(TCONF,
- "inotify is not configured in this kernel");
- } else {
- tst_brk(TBROK | TERRNO,
- "inotify_init () failed");
- }
- }
+ fd_notify = SAFE_MYINOTIFY_INIT1(O_NONBLOCK);
/* Setup a watch on an overlayfs lower file */
if ((wd = myinotify_add_watch(fd_notify, FILE_PATH,
diff --git a/testcases/kernel/syscalls/inotify/inotify09.c b/testcases/kernel/syscalls/inotify/inotify09.c
index f587a3a3c..cf2d38f27 100644
--- a/testcases/kernel/syscalls/inotify/inotify09.c
+++ b/testcases/kernel/syscalls/inotify/inotify09.c
@@ -85,9 +85,7 @@ static void verify_inotify(void)
int inotify_fd;
int wd;
- inotify_fd = myinotify_init1(0);
- if (inotify_fd < 0)
- tst_brk(TBROK | TERRNO, "inotify_init failed");
+ inotify_fd = SAFE_MYINOTIFY_INIT1(0);
tst_fzsync_pair_reset(&fzsync_pair, write_seek);
while (tst_fzsync_run_a(&fzsync_pair)) {
--
2.21.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* [LTP] [PATCH 2/2] inotify: Add SAFE_MYINOTIFY_ADD_WATCH() helper 2019-06-05 7:21 [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{,1}() helpers Petr Vorel @ 2019-06-05 7:21 ` Petr Vorel 2019-06-05 14:07 ` Li Wang 2019-06-13 13:10 ` [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{, 1}() helpers Cyril Hrubis 1 sibling, 1 reply; 10+ messages in thread From: Petr Vorel @ 2019-06-05 7:21 UTC (permalink / raw) To: ltp Signed-off-by: Petr Vorel <pvorel@suse.cz> --- Hi, with reap_wd defined in inotify.h there could be also SAFE_MYINOTIFY_RM_WATCH(). Kind regards, Petr --- testcases/kernel/syscalls/inotify/inotify.h | 13 +++++++++++++ testcases/kernel/syscalls/inotify/inotify01.c | 9 ++------- testcases/kernel/syscalls/inotify/inotify02.c | 9 ++------- testcases/kernel/syscalls/inotify/inotify03.c | 7 +------ testcases/kernel/syscalls/inotify/inotify04.c | 13 ++----------- testcases/kernel/syscalls/inotify/inotify05.c | 8 +------- testcases/kernel/syscalls/inotify/inotify07.c | 8 ++------ testcases/kernel/syscalls/inotify/inotify08.c | 11 +++-------- testcases/kernel/syscalls/inotify/inotify09.c | 4 +--- 9 files changed, 27 insertions(+), 55 deletions(-) diff --git a/testcases/kernel/syscalls/inotify/inotify.h b/testcases/kernel/syscalls/inotify/inotify.h index c82a7e75e..57669bc15 100644 --- a/testcases/kernel/syscalls/inotify/inotify.h +++ b/testcases/kernel/syscalls/inotify/inotify.h @@ -50,4 +50,17 @@ static inline int safe_myinotify_init(const char *file, const int lineno, int fd #define SAFE_MYINOTIFY_INIT1(flags) \ safe_myinotify_init(__FILE__, __LINE__, myinotify_init1(flags)) +static inline int safe_myinotify_watch(const char *file, const int lineno, int wd, int fd, const char* fname, const char* mask) +{ + if (wd < 0) { + tst_brk(TBROK | TERRNO, + "%s:%d: inotify_add_watch (%d, %s, %s) failed.", + file, lineno, fd, fname, mask); + } + return wd; +} + +#define SAFE_MYINOTIFY_ADD_WATCH(fd, pathname, mask) \ + safe_myinotify_watch(__FILE__, __LINE__, myinotify_add_watch(fd, pathname, mask), fd, pathname, #mask) + #endif /* _INOTIFY_H */ diff --git a/testcases/kernel/syscalls/inotify/inotify01.c b/testcases/kernel/syscalls/inotify/inotify01.c index f08a75dcf..eee98b4fa 100644 --- a/testcases/kernel/syscalls/inotify/inotify01.c +++ b/testcases/kernel/syscalls/inotify/inotify01.c @@ -169,13 +169,8 @@ static void setup(void) fd_notify = SAFE_MYINOTIFY_INIT(); - if ((wd = myinotify_add_watch(fd_notify, fname, IN_ALL_EVENTS)) < 0) { - tst_brk(TBROK | TERRNO, - "inotify_add_watch (%d, %s, IN_ALL_EVENTS) failed", - fd_notify, fname); - reap_wd = 1; - }; - + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, fname, IN_ALL_EVENTS); + reap_wd = 1; } static void cleanup(void) diff --git a/testcases/kernel/syscalls/inotify/inotify02.c b/testcases/kernel/syscalls/inotify/inotify02.c index ca70b4e9e..21e7fb3e8 100644 --- a/testcases/kernel/syscalls/inotify/inotify02.c +++ b/testcases/kernel/syscalls/inotify/inotify02.c @@ -236,12 +236,8 @@ static void setup(void) { fd_notify = SAFE_MYINOTIFY_INIT(); - if ((wd = myinotify_add_watch(fd_notify, ".", IN_ALL_EVENTS)) < 0) { - tst_brk(TBROK | TERRNO, - "inotify_add_watch (%d, \".\", IN_ALL_EVENTS) failed", - fd_notify); - reap_wd = 1; - }; + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, ".", IN_ALL_EVENTS); + reap_wd = 1; } static void cleanup(void) @@ -249,7 +245,6 @@ static void cleanup(void) if (reap_wd && myinotify_rm_watch(fd_notify, wd) < 0) { tst_res(TWARN, "inotify_rm_watch (%d, %d) failed,", fd_notify, wd); - } if (fd_notify > 0) diff --git a/testcases/kernel/syscalls/inotify/inotify03.c b/testcases/kernel/syscalls/inotify/inotify03.c index 772623125..7363df01b 100644 --- a/testcases/kernel/syscalls/inotify/inotify03.c +++ b/testcases/kernel/syscalls/inotify/inotify03.c @@ -77,12 +77,7 @@ void verify_inotify(void) SAFE_MOUNT(tst_device->dev, mntpoint, tst_device->fs_type, 0, NULL); mount_flag = 1; - wd = myinotify_add_watch(fd_notify, fname, IN_ALL_EVENTS); - if (wd < 0) { - tst_brk(TBROK | TERRNO, - "inotify_add_watch (%d, %s, IN_ALL_EVENTS) failed.", - fd_notify, fname); - } + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, fname, IN_ALL_EVENTS); event_set[test_cnt] = IN_UNMOUNT; test_cnt++; diff --git a/testcases/kernel/syscalls/inotify/inotify04.c b/testcases/kernel/syscalls/inotify/inotify04.c index 6adb41701..2cc20fb61 100644 --- a/testcases/kernel/syscalls/inotify/inotify04.c +++ b/testcases/kernel/syscalls/inotify/inotify04.c @@ -106,19 +106,10 @@ void verify_inotify(void) SAFE_MKDIR(TEST_DIR, 00700); close(SAFE_CREAT(TEST_FILE, 00600)); - wd_dir = myinotify_add_watch(fd_notify, TEST_DIR, IN_ALL_EVENTS); - if (wd_dir == -1) { - tst_brk(TBROK | TERRNO, - "inotify_add_watch(%d, \"%s\", IN_ALL_EVENTS) [1] failed", - fd_notify, TEST_DIR); - } + wd_dir = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, TEST_DIR, IN_ALL_EVENTS); reap_wd_dir = 1; - wd_file = myinotify_add_watch(fd_notify, TEST_FILE, IN_ALL_EVENTS); - if (wd_file == -1) - tst_brk(TBROK | TERRNO, - "inotify_add_watch(%d, \"%s\", IN_ALL_EVENTS) [2] failed", - fd_notify, TEST_FILE); + wd_file = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, TEST_FILE, IN_ALL_EVENTS); reap_wd_file = 1; SAFE_RMDIR(TEST_DIR); diff --git a/testcases/kernel/syscalls/inotify/inotify05.c b/testcases/kernel/syscalls/inotify/inotify05.c index b5813b25b..fa45d09bf 100644 --- a/testcases/kernel/syscalls/inotify/inotify05.c +++ b/testcases/kernel/syscalls/inotify/inotify05.c @@ -145,12 +145,7 @@ static void setup(void) fd_notify = SAFE_MYINOTIFY_INIT1(O_NONBLOCK); - wd = myinotify_add_watch(fd_notify, fname, IN_ALL_EVENTS); - if (wd < 0) { - tst_brk(TBROK | TERRNO, - "inotify_add_watch (%d, %s, IN_ALL_EVENTS) failed", - fd_notify, fname); - }; + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, fname, IN_ALL_EVENTS); SAFE_FILE_SCANF("/proc/sys/fs/inotify/max_queued_events", "%d", &max_events); @@ -161,7 +156,6 @@ static void cleanup(void) if (fd_notify > 0 && myinotify_rm_watch(fd_notify, wd) == -1) { tst_res(TWARN | TERRNO, "inotify_rm_watch (%d, %d) failed", fd_notify, wd); - } if (fd_notify > 0) diff --git a/testcases/kernel/syscalls/inotify/inotify07.c b/testcases/kernel/syscalls/inotify/inotify07.c index 1111b43bf..7099e8dbf 100644 --- a/testcases/kernel/syscalls/inotify/inotify07.c +++ b/testcases/kernel/syscalls/inotify/inotify07.c @@ -168,12 +168,8 @@ static void setup(void) fd_notify = SAFE_MYINOTIFY_INIT1(O_NONBLOCK); /* Setup a watch on an overlayfs lower directory */ - if ((wd = myinotify_add_watch(fd_notify, DIR_PATH, IN_ALL_EVENTS)) < 0) { - tst_brk(TBROK | TERRNO, - "inotify_add_watch (%d, " DIR_PATH ", IN_ALL_EVENTS) failed", - fd_notify); - reap_wd = 1; - }; + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, DIR_PATH, IN_ALL_EVENTS); + reap_wd = 1; SAFE_STAT(DIR_PATH, &buf); tst_res(TINFO, DIR_PATH " ino=%lu", buf.st_ino); diff --git a/testcases/kernel/syscalls/inotify/inotify08.c b/testcases/kernel/syscalls/inotify/inotify08.c index ee8e44fe1..73fdf497f 100644 --- a/testcases/kernel/syscalls/inotify/inotify08.c +++ b/testcases/kernel/syscalls/inotify/inotify08.c @@ -160,14 +160,9 @@ static void setup(void) fd_notify = SAFE_MYINOTIFY_INIT1(O_NONBLOCK); /* Setup a watch on an overlayfs lower file */ - if ((wd = myinotify_add_watch(fd_notify, FILE_PATH, - IN_ATTRIB | IN_OPEN | IN_CLOSE_WRITE)) < 0) { - tst_brk(TBROK | TERRNO, - "inotify_add_watch (%d, " FILE_PATH ", " - "IN_ATTRIB | IN_OPEN | IN_CLOSE_WRITE) failed", - fd_notify); - reap_wd = 1; - }; + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, FILE_PATH, + IN_ATTRIB | IN_OPEN | IN_CLOSE_WRITE); + reap_wd = 1; SAFE_STAT(FILE_PATH, &buf); tst_res(TINFO, FILE_PATH " ino=%lu, dev=%u:%u", buf.st_ino, diff --git a/testcases/kernel/syscalls/inotify/inotify09.c b/testcases/kernel/syscalls/inotify/inotify09.c index cf2d38f27..e6fed7d9d 100644 --- a/testcases/kernel/syscalls/inotify/inotify09.c +++ b/testcases/kernel/syscalls/inotify/inotify09.c @@ -89,9 +89,7 @@ static void verify_inotify(void) tst_fzsync_pair_reset(&fzsync_pair, write_seek); while (tst_fzsync_run_a(&fzsync_pair)) { - wd = myinotify_add_watch(inotify_fd, FNAME, IN_MODIFY); - if (wd < 0) - tst_brk(TBROK | TERRNO, "inotify_add_watch() failed."); + wd = SAFE_MYINOTIFY_ADD_WATCH(inotify_fd, FNAME, IN_MODIFY); tst_fzsync_start_race_a(&fzsync_pair); wd = myinotify_rm_watch(inotify_fd, wd); -- 2.21.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [LTP] [PATCH 2/2] inotify: Add SAFE_MYINOTIFY_ADD_WATCH() helper 2019-06-05 7:21 ` [LTP] [PATCH 2/2] inotify: Add SAFE_MYINOTIFY_ADD_WATCH() helper Petr Vorel @ 2019-06-05 14:07 ` Li Wang 2019-06-05 14:16 ` Petr Vorel 0 siblings, 1 reply; 10+ messages in thread From: Li Wang @ 2019-06-05 14:07 UTC (permalink / raw) To: ltp On Wed, Jun 5, 2019 at 3:22 PM Petr Vorel <pvorel@suse.cz> wrote: > Signed-off-by: Petr Vorel <pvorel@suse.cz> > --- > Hi, > > with reap_wd defined in inotify.h there could be also > SAFE_MYINOTIFY_RM_WATCH(). > > Kind regards, > Petr > --- > testcases/kernel/syscalls/inotify/inotify.h | 13 +++++++++++++ > testcases/kernel/syscalls/inotify/inotify01.c | 9 ++------- > testcases/kernel/syscalls/inotify/inotify02.c | 9 ++------- > testcases/kernel/syscalls/inotify/inotify03.c | 7 +------ > testcases/kernel/syscalls/inotify/inotify04.c | 13 ++----------- > testcases/kernel/syscalls/inotify/inotify05.c | 8 +------- > testcases/kernel/syscalls/inotify/inotify07.c | 8 ++------ > testcases/kernel/syscalls/inotify/inotify08.c | 11 +++-------- > testcases/kernel/syscalls/inotify/inotify09.c | 4 +--- > 9 files changed, 27 insertions(+), 55 deletions(-) > > diff --git a/testcases/kernel/syscalls/inotify/inotify.h > b/testcases/kernel/syscalls/inotify/inotify.h > index c82a7e75e..57669bc15 100644 > --- a/testcases/kernel/syscalls/inotify/inotify.h > +++ b/testcases/kernel/syscalls/inotify/inotify.h > @@ -50,4 +50,17 @@ static inline int safe_myinotify_init(const char *file, > const int lineno, int fd > #define SAFE_MYINOTIFY_INIT1(flags) \ > safe_myinotify_init(__FILE__, __LINE__, myinotify_init1(flags)) > > +static inline int safe_myinotify_watch(const char *file, const int > lineno, int wd, int fd, const char* fname, const char* mask) > +{ > + if (wd < 0) { > + tst_brk(TBROK | TERRNO, > + "%s:%d: inotify_add_watch (%d, %s, %s) failed.", > + file, lineno, fd, fname, mask); > + } > + return wd; > +} > + > +#define SAFE_MYINOTIFY_ADD_WATCH(fd, pathname, mask) \ > + safe_myinotify_watch(__FILE__, __LINE__, myinotify_add_watch(fd, > pathname, mask), fd, pathname, #mask) > + > #endif /* _INOTIFY_H */ > diff --git a/testcases/kernel/syscalls/inotify/inotify01.c > b/testcases/kernel/syscalls/inotify/inotify01.c > index f08a75dcf..eee98b4fa 100644 > --- a/testcases/kernel/syscalls/inotify/inotify01.c > +++ b/testcases/kernel/syscalls/inotify/inotify01.c > @@ -169,13 +169,8 @@ static void setup(void) > > fd_notify = SAFE_MYINOTIFY_INIT(); > > - if ((wd = myinotify_add_watch(fd_notify, fname, IN_ALL_EVENTS)) < > 0) { > - tst_brk(TBROK | TERRNO, > - "inotify_add_watch (%d, %s, IN_ALL_EVENTS) failed", > - fd_notify, fname); > - reap_wd = 1; > If test exit with TBROK the reap_wd will never get a chance to set as 1, and the cleanup() also make no sense in tst_brk() calling. > - }; - > + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, fname, IN_ALL_EVENTS); > + reap_wd = 1; > Even wrap into safe macro the problem is still there, the 'reap_wd = 1;' make no sense to the whole test. } > > static void cleanup(void) > diff --git a/testcases/kernel/syscalls/inotify/inotify02.c > b/testcases/kernel/syscalls/inotify/inotify02.c > index ca70b4e9e..21e7fb3e8 100644 > --- a/testcases/kernel/syscalls/inotify/inotify02.c > +++ b/testcases/kernel/syscalls/inotify/inotify02.c > @@ -236,12 +236,8 @@ static void setup(void) > { > fd_notify = SAFE_MYINOTIFY_INIT(); > > - if ((wd = myinotify_add_watch(fd_notify, ".", IN_ALL_EVENTS)) < 0) > { > - tst_brk(TBROK | TERRNO, > - "inotify_add_watch (%d, \".\", IN_ALL_EVENTS) > failed", > - fd_notify); > - reap_wd = 1; - }; > + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, ".", IN_ALL_EVENTS); > + reap_wd = 1; here as well. > } > > static void cleanup(void) > @@ -249,7 +245,6 @@ static void cleanup(void) > if (reap_wd && myinotify_rm_watch(fd_notify, wd) < 0) { > tst_res(TWARN, > "inotify_rm_watch (%d, %d) failed,", fd_notify, > wd); > - > } > > if (fd_notify > 0) > diff --git a/testcases/kernel/syscalls/inotify/inotify03.c > b/testcases/kernel/syscalls/inotify/inotify03.c > index 772623125..7363df01b 100644 > --- a/testcases/kernel/syscalls/inotify/inotify03.c > +++ b/testcases/kernel/syscalls/inotify/inotify03.c > @@ -77,12 +77,7 @@ void verify_inotify(void) > SAFE_MOUNT(tst_device->dev, mntpoint, tst_device->fs_type, 0, > NULL); > mount_flag = 1; > > - wd = myinotify_add_watch(fd_notify, fname, IN_ALL_EVENTS); > - if (wd < 0) { > - tst_brk(TBROK | TERRNO, > - "inotify_add_watch (%d, %s, IN_ALL_EVENTS) > failed.", > - fd_notify, fname); > - } > + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, fname, IN_ALL_EVENTS); > > event_set[test_cnt] = IN_UNMOUNT; > test_cnt++; > diff --git a/testcases/kernel/syscalls/inotify/inotify04.c > b/testcases/kernel/syscalls/inotify/inotify04.c > index 6adb41701..2cc20fb61 100644 > --- a/testcases/kernel/syscalls/inotify/inotify04.c > +++ b/testcases/kernel/syscalls/inotify/inotify04.c > @@ -106,19 +106,10 @@ void verify_inotify(void) > SAFE_MKDIR(TEST_DIR, 00700); > close(SAFE_CREAT(TEST_FILE, 00600)); > > - wd_dir = myinotify_add_watch(fd_notify, TEST_DIR, IN_ALL_EVENTS); > - if (wd_dir == -1) { > - tst_brk(TBROK | TERRNO, > - "inotify_add_watch(%d, \"%s\", IN_ALL_EVENTS) [1] > failed", > - fd_notify, TEST_DIR); > - } > + wd_dir = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, TEST_DIR, > IN_ALL_EVENTS); > reap_wd_dir = 1; > > - wd_file = myinotify_add_watch(fd_notify, TEST_FILE, IN_ALL_EVENTS); > - if (wd_file == -1) > - tst_brk(TBROK | TERRNO, > - "inotify_add_watch(%d, \"%s\", IN_ALL_EVENTS) [2] > failed", > - fd_notify, TEST_FILE); > + wd_file = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, TEST_FILE, > IN_ALL_EVENTS); > reap_wd_file = 1; > > SAFE_RMDIR(TEST_DIR); > diff --git a/testcases/kernel/syscalls/inotify/inotify05.c > b/testcases/kernel/syscalls/inotify/inotify05.c > index b5813b25b..fa45d09bf 100644 > --- a/testcases/kernel/syscalls/inotify/inotify05.c > +++ b/testcases/kernel/syscalls/inotify/inotify05.c > @@ -145,12 +145,7 @@ static void setup(void) > > fd_notify = SAFE_MYINOTIFY_INIT1(O_NONBLOCK); > > - wd = myinotify_add_watch(fd_notify, fname, IN_ALL_EVENTS); > - if (wd < 0) { > - tst_brk(TBROK | TERRNO, > - "inotify_add_watch (%d, %s, IN_ALL_EVENTS) failed", > - fd_notify, fname); > - }; > + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, fname, IN_ALL_EVENTS); > > SAFE_FILE_SCANF("/proc/sys/fs/inotify/max_queued_events", > "%d", &max_events); > @@ -161,7 +156,6 @@ static void cleanup(void) > if (fd_notify > 0 && myinotify_rm_watch(fd_notify, wd) == -1) { > tst_res(TWARN | TERRNO, "inotify_rm_watch (%d, %d) failed", > fd_notify, wd); > - > } > > if (fd_notify > 0) > diff --git a/testcases/kernel/syscalls/inotify/inotify07.c > b/testcases/kernel/syscalls/inotify/inotify07.c > index 1111b43bf..7099e8dbf 100644 > --- a/testcases/kernel/syscalls/inotify/inotify07.c > +++ b/testcases/kernel/syscalls/inotify/inotify07.c > @@ -168,12 +168,8 @@ static void setup(void) > fd_notify = SAFE_MYINOTIFY_INIT1(O_NONBLOCK); > > /* Setup a watch on an overlayfs lower directory */ > - if ((wd = myinotify_add_watch(fd_notify, DIR_PATH, IN_ALL_EVENTS)) > < 0) { > - tst_brk(TBROK | TERRNO, > - "inotify_add_watch (%d, " DIR_PATH ", > IN_ALL_EVENTS) failed", > - fd_notify); > - reap_wd = 1; > - }; > + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, DIR_PATH, IN_ALL_EVENTS); > + reap_wd = 1; > here as well. > > SAFE_STAT(DIR_PATH, &buf); > tst_res(TINFO, DIR_PATH " ino=%lu", buf.st_ino); > diff --git a/testcases/kernel/syscalls/inotify/inotify08.c > b/testcases/kernel/syscalls/inotify/inotify08.c > index ee8e44fe1..73fdf497f 100644 > --- a/testcases/kernel/syscalls/inotify/inotify08.c > +++ b/testcases/kernel/syscalls/inotify/inotify08.c > @@ -160,14 +160,9 @@ static void setup(void) > fd_notify = SAFE_MYINOTIFY_INIT1(O_NONBLOCK); > > /* Setup a watch on an overlayfs lower file */ > - if ((wd = myinotify_add_watch(fd_notify, FILE_PATH, > - IN_ATTRIB | IN_OPEN | IN_CLOSE_WRITE)) < > 0) { > - tst_brk(TBROK | TERRNO, > - "inotify_add_watch (%d, " FILE_PATH ", " > - "IN_ATTRIB | IN_OPEN | IN_CLOSE_WRITE) failed", > - fd_notify); > - reap_wd = 1; > - }; > + wd = SAFE_MYINOTIFY_ADD_WATCH(fd_notify, FILE_PATH, > + IN_ATTRIB | IN_OPEN | IN_CLOSE_WRITE); > + reap_wd = 1; > and here. > > SAFE_STAT(FILE_PATH, &buf); > tst_res(TINFO, FILE_PATH " ino=%lu, dev=%u:%u", buf.st_ino, > diff --git a/testcases/kernel/syscalls/inotify/inotify09.c > b/testcases/kernel/syscalls/inotify/inotify09.c > index cf2d38f27..e6fed7d9d 100644 > --- a/testcases/kernel/syscalls/inotify/inotify09.c > +++ b/testcases/kernel/syscalls/inotify/inotify09.c > @@ -89,9 +89,7 @@ static void verify_inotify(void) > > tst_fzsync_pair_reset(&fzsync_pair, write_seek); > while (tst_fzsync_run_a(&fzsync_pair)) { > - wd = myinotify_add_watch(inotify_fd, FNAME, IN_MODIFY); > - if (wd < 0) > - tst_brk(TBROK | TERRNO, "inotify_add_watch() > failed."); > + wd = SAFE_MYINOTIFY_ADD_WATCH(inotify_fd, FNAME, > IN_MODIFY); > > tst_fzsync_start_race_a(&fzsync_pair); > wd = myinotify_rm_watch(inotify_fd, wd); > -- > 2.21.0 > > > -- > Mailing list info: https://lists.linux.it/listinfo/ltp > -- Regards, Li Wang -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.linux.it/pipermail/ltp/attachments/20190605/4a731c0d/attachment-0001.html> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH 2/2] inotify: Add SAFE_MYINOTIFY_ADD_WATCH() helper 2019-06-05 14:07 ` Li Wang @ 2019-06-05 14:16 ` Petr Vorel 2019-06-05 14:40 ` Li Wang 0 siblings, 1 reply; 10+ messages in thread From: Petr Vorel @ 2019-06-05 14:16 UTC (permalink / raw) To: ltp Hi Li, thanks for your review. > If test exit with TBROK the reap_wd will never get a chance to set as 1, > and the cleanup() also make no sense in tst_brk() calling. No, that's a "flag" for cleanup function which is run always (no matter whether tst_brk() was called). See cleanup() and mount_flag in [1]. > > with reap_wd defined in inotify.h there could be also > > SAFE_MYINOTIFY_RM_WATCH(). And my suggestion above was to handle this flag in inotify.h. Than it'd make sense to add also SAFE_MYINOTIFY_RM_WATCH(). Kind regards, Petr [1] https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines#a-word-about-the-cleanup-callback ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH 2/2] inotify: Add SAFE_MYINOTIFY_ADD_WATCH() helper 2019-06-05 14:16 ` Petr Vorel @ 2019-06-05 14:40 ` Li Wang 2019-06-05 15:02 ` Petr Vorel 2019-06-05 15:18 ` Petr Vorel 0 siblings, 2 replies; 10+ messages in thread From: Li Wang @ 2019-06-05 14:40 UTC (permalink / raw) To: ltp On Wed, Jun 5, 2019 at 10:16 PM Petr Vorel <pvorel@suse.cz> wrote: > Hi Li, > > thanks for your review. > > > If test exit with TBROK the reap_wd will never get a chance to set as 1, > > and the cleanup() also make no sense in tst_brk() calling. > No, that's a "flag" for cleanup function which is run always (no matter > whether > tst_brk() was called). See cleanup() and mount_flag in [1]. > You are right. And seems the problem is only exist in original code, it put reap_wd in wrong place and mislead my sight. if ((wd = myinotify_add_watch(fd_notify, DIR_PATH, IN_ALL_EVENTS)) < 0) { tst_brk(TBROK | TERRNO, "inotify_add_watch (%d, " DIR_PATH ", IN_ALL_EVENTS) failed", fd_notify); reap_wd = 1; }; > > > with reap_wd defined in inotify.h there could be also > > > SAFE_MYINOTIFY_RM_WATCH(). > And my suggestion above was to handle this flag in inotify.h. Than it'd > make > sense to add also SAFE_MYINOTIFY_RM_WATCH(). > You patch set looks good. Sorry for the error in judgment, that remind me it's time to go to bed now:). -- Regards, Li Wang -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.linux.it/pipermail/ltp/attachments/20190605/3ed111b1/attachment.html> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH 2/2] inotify: Add SAFE_MYINOTIFY_ADD_WATCH() helper 2019-06-05 14:40 ` Li Wang @ 2019-06-05 15:02 ` Petr Vorel 2019-06-05 15:18 ` Petr Vorel 1 sibling, 0 replies; 10+ messages in thread From: Petr Vorel @ 2019-06-05 15:02 UTC (permalink / raw) To: ltp Hi Li, > You are right. And seems the problem is only exist in original code, it put > reap_wd in wrong place and mislead my sight. > if ((wd = myinotify_add_watch(fd_notify, DIR_PATH, IN_ALL_EVENTS)) < > 0) { > tst_brk(TBROK | TERRNO, > "inotify_add_watch (%d, " DIR_PATH ", IN_ALL_EVENTS) > failed", > fd_notify); > reap_wd = 1; > }; Thanks for pointing it out. I was surprised why this is there. I'll note it in git commit. ... > You patch set looks good. > Sorry for the error in judgment, that remind me it's time to go to bed > now:). Really, thanks a lot for a review! (I'll add your ack). Kind regards, Petr ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH 2/2] inotify: Add SAFE_MYINOTIFY_ADD_WATCH() helper 2019-06-05 14:40 ` Li Wang 2019-06-05 15:02 ` Petr Vorel @ 2019-06-05 15:18 ` Petr Vorel 1 sibling, 0 replies; 10+ messages in thread From: Petr Vorel @ 2019-06-05 15:18 UTC (permalink / raw) To: ltp Hi, > > > If test exit with TBROK the reap_wd will never get a chance to set as 1, > > > and the cleanup() also make no sense in tst_brk() calling. > > No, that's a "flag" for cleanup function which is run always (no matter > > whether > > tst_brk() was called). See cleanup() and mount_flag in [1]. > You are right. And seems the problem is only exist in original code, it put > reap_wd in wrong place and mislead my sight. > if ((wd = myinotify_add_watch(fd_notify, DIR_PATH, IN_ALL_EVENTS)) < > 0) { > tst_brk(TBROK | TERRNO, > "inotify_add_watch (%d, " DIR_PATH ", IN_ALL_EVENTS) > failed", > fd_notify); > reap_wd = 1; > }; so I'll put into commit message: Also put reap_wd to correct place in inotify0[127].c (in original code it was in if clause after tst_brk() so it was 1) unreachable 2) for detection it should have been after if (outside). Fixes: 04f2177b6, inotify0[12].c, 763d02824 (inotify07.c) Acked-by: Li Wang <liwang@redhat.com> Kind regards, Petr ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{, 1}() helpers 2019-06-05 7:21 [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{,1}() helpers Petr Vorel 2019-06-05 7:21 ` [LTP] [PATCH 2/2] inotify: Add SAFE_MYINOTIFY_ADD_WATCH() helper Petr Vorel @ 2019-06-13 13:10 ` Cyril Hrubis 2019-06-13 16:34 ` Petr Vorel 2020-04-28 12:36 ` Petr Vorel 1 sibling, 2 replies; 10+ messages in thread From: Cyril Hrubis @ 2019-06-13 13:10 UTC (permalink / raw) To: ltp Hi! These two patches are obviously OK. Well I we were pedantic the licence change should be in a separate patch, but I guess that it's fine as it is. Also we should probably switch to the inotify_init() from sys/inotify.h and drop the my from the functions and macros, but that could be done in a subsequent patch. -- Cyril Hrubis chrubis@suse.cz ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{, 1}() helpers 2019-06-13 13:10 ` [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{, 1}() helpers Cyril Hrubis @ 2019-06-13 16:34 ` Petr Vorel 2020-04-28 12:36 ` Petr Vorel 1 sibling, 0 replies; 10+ messages in thread From: Petr Vorel @ 2019-06-13 16:34 UTC (permalink / raw) To: ltp Hi Cyril, > These two patches are obviously OK. Thanks for review. > Well I we were pedantic the licence change should be in a separate > patch, but I guess that it's fine as it is. I'll replace license text to SPDX in all tests using new API in separate commit. > Also we should probably switch to the inotify_init() from sys/inotify.h > and drop the my from the functions and macros, but that could be done in > a subsequent patch. Merged. I'll do it in a separate patch. Kind regards, Petr ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{, 1}() helpers 2019-06-13 13:10 ` [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{, 1}() helpers Cyril Hrubis 2019-06-13 16:34 ` Petr Vorel @ 2020-04-28 12:36 ` Petr Vorel 1 sibling, 0 replies; 10+ messages in thread From: Petr Vorel @ 2020-04-28 12:36 UTC (permalink / raw) To: ltp Hi Cyril, > Hi! > These two patches are obviously OK. > Well I we were pedantic the licence change should be in a separate > patch, but I guess that it's fine as it is. > Also we should probably switch to the inotify_init() from sys/inotify.h > and drop the my from the functions and macros, but that could be done in > a subsequent patch. Looking into this old TODO for inotify tests. I have similar question to fanotify: do you consider worth of testing both raw syscall and inotify_init()? Kind regards, Petr ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-04-28 12:36 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-05 7:21 [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{,1}() helpers Petr Vorel
2019-06-05 7:21 ` [LTP] [PATCH 2/2] inotify: Add SAFE_MYINOTIFY_ADD_WATCH() helper Petr Vorel
2019-06-05 14:07 ` Li Wang
2019-06-05 14:16 ` Petr Vorel
2019-06-05 14:40 ` Li Wang
2019-06-05 15:02 ` Petr Vorel
2019-06-05 15:18 ` Petr Vorel
2019-06-13 13:10 ` [LTP] [PATCH 1/2] inotify: Add SAFE_MYINOTIFY_INIT{, 1}() helpers Cyril Hrubis
2019-06-13 16:34 ` Petr Vorel
2020-04-28 12:36 ` Petr Vorel
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.