* [LTP] [PATCH v3 0/4] symlink01 split
@ 2024-07-10 8:54 Andrea Cervesato
2024-07-10 8:54 ` [LTP] [PATCH v3 1/4] Add stat04 test Andrea Cervesato
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: Andrea Cervesato @ 2024-07-10 8:54 UTC (permalink / raw)
To: ltp
This is a developement series (requested by Petr Vorel) that handle
symlink01 split, which has been already merged in the master branch.
In this series we face the next part of symlink01 split that
includes stat04, lstat03, open15 and chmod08.
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
Changes in v3:
- stat04: smarter cleanup
- lstat03: smarter cleanup
- open15: fix algorithm, read/write from/to symlink
- Link to v2: https://lore.kernel.org/r/20240709-stat04-v2-0-2693a473a2ab@suse.com
Changes in v2:
- update TST_EXP_EXTR to support stringification
- call stat() inside the test run() routine
- call lstat() inside the test run() routine
- simplify chmod08
- simplify open15
- Link to v1: https://lore.kernel.org/r/20240702-stat04-v1-0-e27d9953210d@suse.com
---
Andrea Cervesato (4):
Add stat04 test
Add lstat03 test
Add chmod08 test
Add open15 test
runtest/smoketest | 4 +-
runtest/syscalls | 11 +--
testcases/kernel/syscalls/chmod/.gitignore | 1 +
testcases/kernel/syscalls/chmod/chmod08.c | 45 +++++++++++
testcases/kernel/syscalls/lstat/.gitignore | 2 +
testcases/kernel/syscalls/lstat/lstat03.c | 102 ++++++++++++++++++++++++
testcases/kernel/syscalls/open/.gitignore | 1 +
testcases/kernel/syscalls/open/open15.c | 75 ++++++++++++++++++
testcases/kernel/syscalls/stat/.gitignore | 2 +
testcases/kernel/syscalls/stat/stat04.c | 121 +++++++++++++++++++++++++++++
10 files changed, 356 insertions(+), 8 deletions(-)
---
base-commit: 62d00fe990187c3f95b84e43c8cd06eae0e639dc
change-id: 20240702-stat04-ceeb58b80910
Best regards,
--
Andrea Cervesato <andrea.cervesato@suse.com>
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 12+ messages in thread
* [LTP] [PATCH v3 1/4] Add stat04 test
2024-07-10 8:54 [LTP] [PATCH v3 0/4] symlink01 split Andrea Cervesato
@ 2024-07-10 8:54 ` Andrea Cervesato
2024-07-10 12:15 ` Cyril Hrubis
` (2 more replies)
2024-07-10 8:54 ` [LTP] [PATCH v3 2/4] Add lstat03 test Andrea Cervesato
` (2 subsequent siblings)
3 siblings, 3 replies; 12+ messages in thread
From: Andrea Cervesato @ 2024-07-10 8:54 UTC (permalink / raw)
To: ltp
From: Andrea Cervesato <andrea.cervesato@suse.com>
This test has been extracted from symlink01 test and it checks that
stat() executed on file provide the same information of symlink linking
to it.
Reviewed-by: Li Wang <liwang@redhat.com>
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
runtest/smoketest | 4 +-
runtest/syscalls | 4 +-
testcases/kernel/syscalls/stat/.gitignore | 2 +
testcases/kernel/syscalls/stat/stat04.c | 121 ++++++++++++++++++++++++++++++
4 files changed, 126 insertions(+), 5 deletions(-)
diff --git a/runtest/smoketest b/runtest/smoketest
index f6f14fd2b..aeb74c9ee 100644
--- a/runtest/smoketest
+++ b/runtest/smoketest
@@ -8,9 +8,7 @@ time01 time01
wait02 wait02
write01 write01
symlink01 symlink01
-stat04 symlink01 -T stat04
-utime07 utime07
-rename01A symlink01 -T rename01
+stat04 stat04
splice02 splice02 -s 20
df01_sh df01.sh
shell_test01 echo "SUCCESS" | shell_pipe01.sh
diff --git a/runtest/syscalls b/runtest/syscalls
index b6cadb2df..1e1203503 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -1535,8 +1535,8 @@ stat02 stat02
stat02_64 stat02_64
stat03 stat03
stat03_64 stat03_64
-stat04 symlink01 -T stat04
-stat04_64 symlink01 -T stat04_64
+stat04 stat04
+stat04_64 stat04_64
statfs01 statfs01
statfs01_64 statfs01_64
diff --git a/testcases/kernel/syscalls/stat/.gitignore b/testcases/kernel/syscalls/stat/.gitignore
index fa0a4ce9f..0a62dc6ee 100644
--- a/testcases/kernel/syscalls/stat/.gitignore
+++ b/testcases/kernel/syscalls/stat/.gitignore
@@ -4,3 +4,5 @@
/stat02_64
/stat03
/stat03_64
+/stat04
+/stat04_64
diff --git a/testcases/kernel/syscalls/stat/stat04.c b/testcases/kernel/syscalls/stat/stat04.c
new file mode 100644
index 000000000..a156936db
--- /dev/null
+++ b/testcases/kernel/syscalls/stat/stat04.c
@@ -0,0 +1,121 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
+ * Author: David Fenner, Jon Hendrickson
+ * Copyright (C) 2024 Andrea Cervesato <andrea.cervesato@suse.com>
+ */
+
+/*\
+ * [Description]
+ *
+ * This test checks that stat() executed on file provide the same information
+ * of symlink linking to it.
+ */
+
+#include <stdlib.h>
+#include "tst_test.h"
+
+#define FILENAME "file.txt"
+#define MNTPOINT "mntpoint"
+#define SYMBNAME MNTPOINT"/file_symlink"
+
+static char symb_path[PATH_MAX];
+static char file_path[PATH_MAX];
+static struct stat *file_stat;
+static struct stat *symb_stat;
+static char *tmpdir;
+
+static void run(void)
+{
+ SAFE_STAT(file_path, file_stat);
+ SAFE_STAT(symb_path, symb_stat);
+
+ TST_EXP_EQ_LI(file_stat->st_dev, symb_stat->st_dev);
+ TST_EXP_EQ_LI(file_stat->st_mode, symb_stat->st_mode);
+ TST_EXP_EQ_LI(file_stat->st_nlink, symb_stat->st_nlink);
+ TST_EXP_EQ_LI(file_stat->st_uid, symb_stat->st_uid);
+ TST_EXP_EQ_LI(file_stat->st_gid, symb_stat->st_gid);
+ TST_EXP_EQ_LI(file_stat->st_size, symb_stat->st_size);
+ TST_EXP_EQ_LI(file_stat->st_atime, symb_stat->st_atime);
+ TST_EXP_EQ_LI(file_stat->st_mtime, symb_stat->st_mtime);
+ TST_EXP_EQ_LI(file_stat->st_ctime, symb_stat->st_ctime);
+}
+
+static void setup(void)
+{
+ char opt_bsize[32];
+ const char *const fs_opts[] = {opt_bsize, NULL};
+ struct stat sb;
+ int pagesize;
+ int fd;
+
+ tmpdir = tst_get_tmpdir();
+
+ if (strlen(tmpdir) >= (PATH_MAX - strlen(FILENAME))) {
+ tst_brk(TCONF, "Temporary folder name is too long. "
+ "Can't create file");
+ }
+
+ if (strlen(tmpdir) >= (PATH_MAX - strlen(SYMBNAME))) {
+ tst_brk(TCONF, "Temporary folder name is too long. "
+ "Can't create symbolic link");
+ }
+
+ /* change st_blksize / st_dev */
+ SAFE_STAT(".", &sb);
+ pagesize = sb.st_blksize == 4096 ? 1024 : 4096;
+
+ snprintf(opt_bsize, sizeof(opt_bsize), "-b %i", pagesize);
+ SAFE_MKFS(tst_device->dev, tst_device->fs_type, fs_opts, NULL);
+ SAFE_MOUNT(tst_device->dev, MNTPOINT, tst_device->fs_type, 0, 0);
+
+ SAFE_TOUCH(FILENAME, 0777, NULL);
+
+ /* change st_nlink */
+ SAFE_LINK(FILENAME, "linked_file");
+
+ /* change st_uid and st_gid */
+ SAFE_CHOWN(FILENAME, 1000, 1000);
+
+ /* change st_size */
+ fd = SAFE_OPEN(FILENAME, O_WRONLY, 0777);
+ tst_fill_fd(fd, 'a', TST_KB, 500);
+ SAFE_CLOSE(fd);
+
+ /* change st_atime / st_mtime / st_ctime */
+ usleep(1001000);
+
+ memset(file_path, 0, PATH_MAX);
+ snprintf(file_path, PATH_MAX, "%s/%s", tmpdir, FILENAME);
+
+ memset(symb_path, 0, PATH_MAX);
+ snprintf(symb_path, PATH_MAX, "%s/%s", tmpdir, SYMBNAME);
+
+ SAFE_SYMLINK(file_path, symb_path);
+}
+
+static void cleanup(void)
+{
+ if (tmpdir)
+ free(tmpdir);
+
+ if (access(SYMBNAME, F_OK) != -1)
+ SAFE_UNLINK(SYMBNAME);
+
+ if (tst_is_mounted(MNTPOINT))
+ SAFE_UMOUNT(MNTPOINT);
+}
+
+static struct tst_test test = {
+ .setup = setup,
+ .cleanup = cleanup,
+ .test_all = run,
+ .needs_root = 1,
+ .needs_device = 1,
+ .mntpoint = MNTPOINT,
+ .bufs = (struct tst_buffers []) {
+ {&file_stat, .size = sizeof(struct stat)},
+ {&symb_stat, .size = sizeof(struct stat)},
+ {}
+ }
+};
--
2.43.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [LTP] [PATCH v3 2/4] Add lstat03 test
2024-07-10 8:54 [LTP] [PATCH v3 0/4] symlink01 split Andrea Cervesato
2024-07-10 8:54 ` [LTP] [PATCH v3 1/4] Add stat04 test Andrea Cervesato
@ 2024-07-10 8:54 ` Andrea Cervesato
2024-07-10 14:53 ` Petr Vorel
2024-07-10 8:54 ` [LTP] [PATCH v3 3/4] Add chmod08 test Andrea Cervesato
2024-07-10 8:54 ` [LTP] [PATCH v3 4/4] Add open15 test Andrea Cervesato
3 siblings, 1 reply; 12+ messages in thread
From: Andrea Cervesato @ 2024-07-10 8:54 UTC (permalink / raw)
To: ltp
From: Andrea Cervesato <andrea.cervesato@suse.com>
This test has been extracted from symlink01 test and it checks that
lstat() provides the right information, according with device, access
time, block size, ownership, etc.
Reviewed-by: Li Wang <liwang@redhat.com>
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
runtest/syscalls | 4 +-
testcases/kernel/syscalls/lstat/.gitignore | 2 +
testcases/kernel/syscalls/lstat/lstat03.c | 102 +++++++++++++++++++++++++++++
3 files changed, 106 insertions(+), 2 deletions(-)
diff --git a/runtest/syscalls b/runtest/syscalls
index 1e1203503..160725893 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -725,12 +725,12 @@ lseek02 lseek02
lseek07 lseek07
lseek11 lseek11
-lstat01A symlink01 -T lstat01
-lstat01A_64 symlink01 -T lstat01_64
lstat01 lstat01
lstat01_64 lstat01_64
lstat02 lstat02
lstat02_64 lstat02_64
+lstat03 lstat03
+lstat03_64 lstat03_64
mallinfo02 mallinfo02
diff --git a/testcases/kernel/syscalls/lstat/.gitignore b/testcases/kernel/syscalls/lstat/.gitignore
index a497a445f..72cba871f 100644
--- a/testcases/kernel/syscalls/lstat/.gitignore
+++ b/testcases/kernel/syscalls/lstat/.gitignore
@@ -2,3 +2,5 @@
/lstat01_64
/lstat02
/lstat02_64
+/lstat03
+/lstat03_64
diff --git a/testcases/kernel/syscalls/lstat/lstat03.c b/testcases/kernel/syscalls/lstat/lstat03.c
new file mode 100644
index 000000000..134efb471
--- /dev/null
+++ b/testcases/kernel/syscalls/lstat/lstat03.c
@@ -0,0 +1,102 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
+ * Author: David Fenner, Jon Hendrickson
+ * Copyright (C) 2024 Andrea Cervesato andrea.cervesato@suse.com
+ */
+
+/*\
+ * [Description]
+ *
+ * This test verifies that lstat() provides correct information according
+ * with device, access time, block size, ownership, etc.
+ * The implementation provides a set of tests which are specific for each one
+ * of the `struct stat` used to read file and symlink information.
+ */
+
+#include "tst_test.h"
+
+#define FILENAME "file.txt"
+#define MNTPOINT "mntpoint"
+#define SYMBNAME MNTPOINT"/file_symlink"
+
+static struct stat *file_stat;
+static struct stat *symb_stat;
+
+static void run(void)
+{
+ SAFE_LSTAT(FILENAME, file_stat);
+ SAFE_LSTAT(SYMBNAME, symb_stat);
+
+ TST_EXP_EXPR(file_stat->st_dev != symb_stat->st_dev);
+ TST_EXP_EXPR(file_stat->st_mode != symb_stat->st_mode);
+ TST_EXP_EXPR(file_stat->st_nlink != symb_stat->st_nlink);
+ TST_EXP_EXPR(file_stat->st_ino != symb_stat->st_ino);
+ TST_EXP_EXPR(file_stat->st_uid != symb_stat->st_uid);
+ TST_EXP_EXPR(file_stat->st_gid != symb_stat->st_gid);
+ TST_EXP_EXPR(file_stat->st_size != symb_stat->st_size);
+ TST_EXP_EXPR(file_stat->st_blocks != symb_stat->st_blocks);
+ TST_EXP_EXPR(file_stat->st_blksize != symb_stat->st_blksize);
+ TST_EXP_EXPR(file_stat->st_atime != symb_stat->st_atime);
+ TST_EXP_EXPR(file_stat->st_mtime != symb_stat->st_mtime);
+ TST_EXP_EXPR(file_stat->st_ctime != symb_stat->st_ctime);
+}
+
+static void setup(void)
+{
+ char opt_bsize[32];
+ const char *const fs_opts[] = {opt_bsize, NULL};
+ struct stat sb;
+ int pagesize;
+ int fd;
+
+ /* change st_blksize / st_dev */
+ SAFE_STAT(".", &sb);
+ pagesize = sb.st_blksize == 4096 ? 1024 : 4096;
+
+ snprintf(opt_bsize, sizeof(opt_bsize), "-b %i", pagesize);
+ SAFE_MKFS(tst_device->dev, tst_device->fs_type, fs_opts, NULL);
+ SAFE_MOUNT(tst_device->dev, MNTPOINT, tst_device->fs_type, 0, 0);
+
+ SAFE_TOUCH(FILENAME, 0777, NULL);
+
+ /* change st_nlink */
+ SAFE_LINK(FILENAME, "linked_file");
+
+ /* change st_uid and st_gid */
+ SAFE_CHOWN(FILENAME, 1000, 1000);
+
+ /* change st_size */
+ fd = SAFE_OPEN(FILENAME, O_WRONLY, 0777);
+ tst_fill_fd(fd, 'a', TST_KB, 500);
+ SAFE_CLOSE(fd);
+
+ /* change st_atime / st_mtime / st_ctime */
+ usleep(1001000);
+
+ SAFE_SYMLINK(FILENAME, SYMBNAME);
+}
+
+static void cleanup(void)
+{
+ if (access(SYMBNAME, F_OK) != -1)
+ SAFE_UNLINK(SYMBNAME);
+
+ if (tst_is_mounted(MNTPOINT))
+ SAFE_UMOUNT(MNTPOINT);
+}
+
+static struct tst_test test = {
+ .setup = setup,
+ .cleanup = cleanup,
+ .test_all = run,
+ .needs_root = 1,
+ .needs_tmpdir = 1,
+ .needs_device = 1,
+ .mntpoint = MNTPOINT,
+ .bufs = (struct tst_buffers []) {
+ {&file_stat, .size = sizeof(struct stat)},
+ {&symb_stat, .size = sizeof(struct stat)},
+ {}
+ }
+};
--
2.43.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [LTP] [PATCH v3 3/4] Add chmod08 test
2024-07-10 8:54 [LTP] [PATCH v3 0/4] symlink01 split Andrea Cervesato
2024-07-10 8:54 ` [LTP] [PATCH v3 1/4] Add stat04 test Andrea Cervesato
2024-07-10 8:54 ` [LTP] [PATCH v3 2/4] Add lstat03 test Andrea Cervesato
@ 2024-07-10 8:54 ` Andrea Cervesato
2024-07-10 15:12 ` Petr Vorel
2024-07-10 8:54 ` [LTP] [PATCH v3 4/4] Add open15 test Andrea Cervesato
3 siblings, 1 reply; 12+ messages in thread
From: Andrea Cervesato @ 2024-07-10 8:54 UTC (permalink / raw)
To: ltp
From: Andrea Cervesato <andrea.cervesato@suse.com>
This test has been extracted from symlink01 and it verifies that
chmod() is working correctly on symlink() generated files.
Reviewed-by: Li Wang <liwang@redhat.com>
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
runtest/syscalls | 1 +
testcases/kernel/syscalls/chmod/.gitignore | 1 +
testcases/kernel/syscalls/chmod/chmod08.c | 45 ++++++++++++++++++++++++++++++
3 files changed, 47 insertions(+)
diff --git a/runtest/syscalls b/runtest/syscalls
index 160725893..40c0dd070 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -72,6 +72,7 @@ chmod03 chmod03
chmod05 chmod05
chmod06 chmod06
chmod07 chmod07
+chmod08 chmod08
chown01 chown01
chown01_16 chown01_16
diff --git a/testcases/kernel/syscalls/chmod/.gitignore b/testcases/kernel/syscalls/chmod/.gitignore
index 27ddfce16..f295f4dcb 100644
--- a/testcases/kernel/syscalls/chmod/.gitignore
+++ b/testcases/kernel/syscalls/chmod/.gitignore
@@ -3,3 +3,4 @@
/chmod05
/chmod06
/chmod07
+/chmod08
diff --git a/testcases/kernel/syscalls/chmod/chmod08.c b/testcases/kernel/syscalls/chmod/chmod08.c
new file mode 100644
index 000000000..87519dbe8
--- /dev/null
+++ b/testcases/kernel/syscalls/chmod/chmod08.c
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
+ * Author: David Fenner
+ * Copilot: Jon Hendrickson
+ * Copyright (C) 2024 Andrea Cervesato andrea.cervesato@suse.com
+ */
+
+/*\
+ * [Description]
+ *
+ * This test verifies that chmod() is working correctly on symlink()
+ * generated files.
+ */
+
+#include "tst_test.h"
+
+#define PERMS 01777
+#define TESTFILE "myobject"
+#define SYMBNAME "my_symlink0"
+
+static void run(void)
+{
+ struct stat oldsym_stat;
+ struct stat newsym_stat;
+
+ SAFE_TOUCH(TESTFILE, 0644, NULL);
+ SAFE_SYMLINK(TESTFILE, SYMBNAME);
+ SAFE_STAT(SYMBNAME, &oldsym_stat);
+
+ TST_EXP_PASS(chmod(SYMBNAME, PERMS));
+ SAFE_STAT(SYMBNAME, &newsym_stat);
+
+ TST_EXP_EQ_LI(newsym_stat.st_mode & PERMS, PERMS);
+ TST_EXP_EXPR(oldsym_stat.st_mode != newsym_stat.st_mode,
+ "file mode has changed");
+
+ SAFE_UNLINK(SYMBNAME);
+ SAFE_UNLINK(TESTFILE);
+}
+
+static struct tst_test test = {
+ .test_all = run,
+ .needs_tmpdir = 1,
+};
--
2.43.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [LTP] [PATCH v3 4/4] Add open15 test
2024-07-10 8:54 [LTP] [PATCH v3 0/4] symlink01 split Andrea Cervesato
` (2 preceding siblings ...)
2024-07-10 8:54 ` [LTP] [PATCH v3 3/4] Add chmod08 test Andrea Cervesato
@ 2024-07-10 8:54 ` Andrea Cervesato
2024-07-10 9:37 ` Li Wang
2024-07-10 14:39 ` Petr Vorel
3 siblings, 2 replies; 12+ messages in thread
From: Andrea Cervesato @ 2024-07-10 8:54 UTC (permalink / raw)
To: ltp
From: Andrea Cervesato <andrea.cervesato@suse.com>
This test has been extracted from symlink01 and it verifies that
open() is working correctly on symlink() generated files.
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
runtest/syscalls | 2 +-
testcases/kernel/syscalls/open/.gitignore | 1 +
testcases/kernel/syscalls/open/open15.c | 75 +++++++++++++++++++++++++++++++
3 files changed, 77 insertions(+), 1 deletion(-)
diff --git a/runtest/syscalls b/runtest/syscalls
index 40c0dd070..4dfdf3782 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -923,7 +923,6 @@ nice04 nice04
nice05 nice05
open01 open01
-open01A symlink01 -T open01
open02 open02
open03 open03
open04 open04
@@ -936,6 +935,7 @@ open11 open11
open12 open12
open13 open13
open14 open14
+open15 open15
openat01 openat01
openat02 openat02
diff --git a/testcases/kernel/syscalls/open/.gitignore b/testcases/kernel/syscalls/open/.gitignore
index 001d874d6..af5997572 100644
--- a/testcases/kernel/syscalls/open/.gitignore
+++ b/testcases/kernel/syscalls/open/.gitignore
@@ -12,3 +12,4 @@
/open12_child
/open13
/open14
+/open15
diff --git a/testcases/kernel/syscalls/open/open15.c b/testcases/kernel/syscalls/open/open15.c
new file mode 100644
index 000000000..09d7a1f3b
--- /dev/null
+++ b/testcases/kernel/syscalls/open/open15.c
@@ -0,0 +1,75 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
+ * Author: David Fenner
+ * Copilot: Jon Hendrickson
+ * Copyright (C) 2024 Andrea Cervesato andrea.cervesato@suse.com
+ */
+
+/*\
+ * [Description]
+ *
+ * This test verifies that open() is working correctly on symlink()
+ * generated files. We generate a file via symlink, then we read both from file
+ * and symlink, comparing that data has been correctly written.
+ */
+
+#include "tst_test.h"
+
+#define FILENAME "myfile.txt"
+#define SYMBNAME "myfile_symlink"
+#define BIG_STRING "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
+
+static char buff_file[128];
+static char buff_symb[128];
+static int str_size;
+
+static void run(void)
+{
+ int fd_file, fd_symb;
+
+ memset(buff_file, 0, sizeof(buff_file));
+ memset(buff_symb, 0, sizeof(buff_symb));
+
+ tst_res(TINFO, "Create symlink");
+ SAFE_TOUCH(FILENAME, 0777, NULL);
+ SAFE_SYMLINK(FILENAME, SYMBNAME);
+
+ fd_file = SAFE_OPEN(FILENAME, O_RDONLY, 0777);
+ fd_symb = SAFE_OPEN(SYMBNAME, O_RDWR, 0777);
+
+ tst_res(TINFO, "Write data via symlink");
+ SAFE_WRITE(SAFE_WRITE_ALL, fd_symb, BIG_STRING, str_size);
+ SAFE_LSEEK(fd_symb, 0, 0);
+
+ tst_res(TINFO, "Read data via file");
+ SAFE_READ(1, fd_file, buff_file, str_size);
+ SAFE_LSEEK(fd_file, 0, 0);
+
+ tst_res(TINFO, "Read data via symlink");
+ SAFE_READ(1, fd_symb, buff_symb, str_size);
+ SAFE_LSEEK(fd_symb, 0, 0);
+
+ TST_EXP_EXPR(!strncmp(buff_file, BIG_STRING, str_size),
+ "file data has been correctly written");
+
+ TST_EXP_EXPR(!strncmp(buff_file, buff_symb, str_size),
+ "file data is the equivalent to symlink generated file data");
+
+ SAFE_CLOSE(fd_file);
+ SAFE_CLOSE(fd_symb);
+
+ SAFE_UNLINK(SYMBNAME);
+ SAFE_UNLINK(FILENAME);
+}
+
+static void setup(void)
+{
+ str_size = strlen(BIG_STRING);
+}
+
+static struct tst_test test = {
+ .test_all = run,
+ .setup = setup,
+ .needs_tmpdir = 1,
+};
--
2.43.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v3 4/4] Add open15 test
2024-07-10 8:54 ` [LTP] [PATCH v3 4/4] Add open15 test Andrea Cervesato
@ 2024-07-10 9:37 ` Li Wang
2024-07-10 14:39 ` Petr Vorel
1 sibling, 0 replies; 12+ messages in thread
From: Li Wang @ 2024-07-10 9:37 UTC (permalink / raw)
To: Andrea Cervesato; +Cc: ltp
On Wed, Jul 10, 2024 at 4:56 PM Andrea Cervesato <andrea.cervesato@suse.de>
wrote:
> From: Andrea Cervesato <andrea.cervesato@suse.com>
>
> This test has been extracted from symlink01 and it verifies that
> open() is working correctly on symlink() generated files.
>
> Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
>
It is a bit different from something in my imagination, but anyway
this also looks good.
Reviewed-by: Li Wang <liwang@redhat.com>
---
> runtest/syscalls | 2 +-
> testcases/kernel/syscalls/open/.gitignore | 1 +
> testcases/kernel/syscalls/open/open15.c | 75
> +++++++++++++++++++++++++++++++
> 3 files changed, 77 insertions(+), 1 deletion(-)
>
> diff --git a/runtest/syscalls b/runtest/syscalls
> index 40c0dd070..4dfdf3782 100644
> --- a/runtest/syscalls
> +++ b/runtest/syscalls
> @@ -923,7 +923,6 @@ nice04 nice04
> nice05 nice05
>
> open01 open01
> -open01A symlink01 -T open01
> open02 open02
> open03 open03
> open04 open04
> @@ -936,6 +935,7 @@ open11 open11
> open12 open12
> open13 open13
> open14 open14
> +open15 open15
>
> openat01 openat01
> openat02 openat02
> diff --git a/testcases/kernel/syscalls/open/.gitignore
> b/testcases/kernel/syscalls/open/.gitignore
> index 001d874d6..af5997572 100644
> --- a/testcases/kernel/syscalls/open/.gitignore
> +++ b/testcases/kernel/syscalls/open/.gitignore
> @@ -12,3 +12,4 @@
> /open12_child
> /open13
> /open14
> +/open15
> diff --git a/testcases/kernel/syscalls/open/open15.c
> b/testcases/kernel/syscalls/open/open15.c
> new file mode 100644
> index 000000000..09d7a1f3b
> --- /dev/null
> +++ b/testcases/kernel/syscalls/open/open15.c
> @@ -0,0 +1,75 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
> + * Author: David Fenner
> + * Copilot: Jon Hendrickson
> + * Copyright (C) 2024 Andrea Cervesato andrea.cervesato@suse.com
> + */
> +
> +/*\
> + * [Description]
> + *
> + * This test verifies that open() is working correctly on symlink()
> + * generated files. We generate a file via symlink, then we read both
> from file
> + * and symlink, comparing that data has been correctly written.
> + */
> +
> +#include "tst_test.h"
> +
> +#define FILENAME "myfile.txt"
> +#define SYMBNAME "myfile_symlink"
> +#define BIG_STRING "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
> +
> +static char buff_file[128];
> +static char buff_symb[128];
> +static int str_size;
> +
> +static void run(void)
> +{
> + int fd_file, fd_symb;
> +
> + memset(buff_file, 0, sizeof(buff_file));
> + memset(buff_symb, 0, sizeof(buff_symb));
> +
> + tst_res(TINFO, "Create symlink");
> + SAFE_TOUCH(FILENAME, 0777, NULL);
> + SAFE_SYMLINK(FILENAME, SYMBNAME);
> +
> + fd_file = SAFE_OPEN(FILENAME, O_RDONLY, 0777);
> + fd_symb = SAFE_OPEN(SYMBNAME, O_RDWR, 0777);
> +
> + tst_res(TINFO, "Write data via symlink");
> + SAFE_WRITE(SAFE_WRITE_ALL, fd_symb, BIG_STRING, str_size);
> + SAFE_LSEEK(fd_symb, 0, 0);
> +
> + tst_res(TINFO, "Read data via file");
> + SAFE_READ(1, fd_file, buff_file, str_size);
> + SAFE_LSEEK(fd_file, 0, 0);
> +
> + tst_res(TINFO, "Read data via symlink");
> + SAFE_READ(1, fd_symb, buff_symb, str_size);
> + SAFE_LSEEK(fd_symb, 0, 0);
> +
> + TST_EXP_EXPR(!strncmp(buff_file, BIG_STRING, str_size),
> + "file data has been correctly written");
> +
> + TST_EXP_EXPR(!strncmp(buff_file, buff_symb, str_size),
> + "file data is the equivalent to symlink generated file
> data");
> +
> + SAFE_CLOSE(fd_file);
> + SAFE_CLOSE(fd_symb);
> +
> + SAFE_UNLINK(SYMBNAME);
> + SAFE_UNLINK(FILENAME);
> +}
> +
> +static void setup(void)
> +{
> + str_size = strlen(BIG_STRING);
> +}
> +
> +static struct tst_test test = {
> + .test_all = run,
> + .setup = setup,
> + .needs_tmpdir = 1,
> +};
>
> --
> 2.43.0
>
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
>
>
--
Regards,
Li Wang
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v3 1/4] Add stat04 test
2024-07-10 8:54 ` [LTP] [PATCH v3 1/4] Add stat04 test Andrea Cervesato
@ 2024-07-10 12:15 ` Cyril Hrubis
2024-07-10 14:44 ` Petr Vorel
2024-07-10 15:14 ` Petr Vorel
2 siblings, 0 replies; 12+ messages in thread
From: Cyril Hrubis @ 2024-07-10 12:15 UTC (permalink / raw)
To: Andrea Cervesato; +Cc: ltp
Hi!
> +static char symb_path[PATH_MAX];
> +static char file_path[PATH_MAX];
> +static struct stat *file_stat;
> +static struct stat *symb_stat;
> +static char *tmpdir;
> +
> +static void run(void)
> +{
> + SAFE_STAT(file_path, file_stat);
> + SAFE_STAT(symb_path, symb_stat);
> +
> + TST_EXP_EQ_LI(file_stat->st_dev, symb_stat->st_dev);
> + TST_EXP_EQ_LI(file_stat->st_mode, symb_stat->st_mode);
> + TST_EXP_EQ_LI(file_stat->st_nlink, symb_stat->st_nlink);
> + TST_EXP_EQ_LI(file_stat->st_uid, symb_stat->st_uid);
> + TST_EXP_EQ_LI(file_stat->st_gid, symb_stat->st_gid);
> + TST_EXP_EQ_LI(file_stat->st_size, symb_stat->st_size);
> + TST_EXP_EQ_LI(file_stat->st_atime, symb_stat->st_atime);
> + TST_EXP_EQ_LI(file_stat->st_mtime, symb_stat->st_mtime);
> + TST_EXP_EQ_LI(file_stat->st_ctime, symb_stat->st_ctime);
> +}
> +
> +static void setup(void)
> +{
> + char opt_bsize[32];
> + const char *const fs_opts[] = {opt_bsize, NULL};
> + struct stat sb;
> + int pagesize;
> + int fd;
> +
> + tmpdir = tst_get_tmpdir();
> +
> + if (strlen(tmpdir) >= (PATH_MAX - strlen(FILENAME))) {
> + tst_brk(TCONF, "Temporary folder name is too long. "
> + "Can't create file");
> + }
> +
> + if (strlen(tmpdir) >= (PATH_MAX - strlen(SYMBNAME))) {
> + tst_brk(TCONF, "Temporary folder name is too long. "
> + "Can't create symbolic link");
> + }
Uff, this is so 1990. Can we please use asprintf() instead?
Other than that this looks good to me:
Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
--
Cyril Hrubis
chrubis@suse.cz
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v3 4/4] Add open15 test
2024-07-10 8:54 ` [LTP] [PATCH v3 4/4] Add open15 test Andrea Cervesato
2024-07-10 9:37 ` Li Wang
@ 2024-07-10 14:39 ` Petr Vorel
1 sibling, 0 replies; 12+ messages in thread
From: Petr Vorel @ 2024-07-10 14:39 UTC (permalink / raw)
To: Andrea Cervesato; +Cc: ltp
Hi Andrea,
again, I would prefer this to be run on all_filesystems (symlink to be on
different filesystems), but this can be done later.
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v3 1/4] Add stat04 test
2024-07-10 8:54 ` [LTP] [PATCH v3 1/4] Add stat04 test Andrea Cervesato
2024-07-10 12:15 ` Cyril Hrubis
@ 2024-07-10 14:44 ` Petr Vorel
2024-07-10 15:14 ` Petr Vorel
2 siblings, 0 replies; 12+ messages in thread
From: Petr Vorel @ 2024-07-10 14:44 UTC (permalink / raw)
To: Andrea Cervesato; +Cc: ltp
Hi Andrea,
> +static void cleanup(void)
> +{
> + if (tmpdir)
> + free(tmpdir);
> +
> + if (access(SYMBNAME, F_OK) != -1)
> + SAFE_UNLINK(SYMBNAME);
nit: I would remove this (not needed).
+ Cyril's note about using asprintf(), hopefully v4 will be merged.
Thanks!
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v3 2/4] Add lstat03 test
2024-07-10 8:54 ` [LTP] [PATCH v3 2/4] Add lstat03 test Andrea Cervesato
@ 2024-07-10 14:53 ` Petr Vorel
0 siblings, 0 replies; 12+ messages in thread
From: Petr Vorel @ 2024-07-10 14:53 UTC (permalink / raw)
To: Andrea Cervesato; +Cc: ltp
Hi Andrea,
the same note as for stat04 - this could be using all_filesystems,
but let's do it as a separate effort.
...
> +static void cleanup(void)
> +{
> + if (access(SYMBNAME, F_OK) != -1)
> + SAFE_UNLINK(SYMBNAME);
nit: This is not needed (file created at setup).
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v3 3/4] Add chmod08 test
2024-07-10 8:54 ` [LTP] [PATCH v3 3/4] Add chmod08 test Andrea Cervesato
@ 2024-07-10 15:12 ` Petr Vorel
0 siblings, 0 replies; 12+ messages in thread
From: Petr Vorel @ 2024-07-10 15:12 UTC (permalink / raw)
To: Andrea Cervesato; +Cc: ltp
Hi Andrea,
Reviewed-by: Petr Vorel <pvorel@suse.cz>
thanks a lot, merged with tiny changes.
> +++ b/testcases/kernel/syscalls/chmod/chmod08.c
> @@ -0,0 +1,45 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
> + * Author: David Fenner
> + * Copilot: Jon Hendrickson
> + * Copyright (C) 2024 Andrea Cervesato andrea.cervesato@suse.com
very nit: <andrea.cervesato@suse.com> (missing < >). Added.
> + */
> +
> +/*\
> + * [Description]
> + *
> + * This test verifies that chmod() is working correctly on symlink()
> + * generated files.
> + */
> +
> +#include "tst_test.h"
> +
> +#define PERMS 01777
> +#define TESTFILE "myobject"
> +#define SYMBNAME "my_symlink0"
Very nit: you mix tabs and spaces as a separator after define. Fixed.
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v3 1/4] Add stat04 test
2024-07-10 8:54 ` [LTP] [PATCH v3 1/4] Add stat04 test Andrea Cervesato
2024-07-10 12:15 ` Cyril Hrubis
2024-07-10 14:44 ` Petr Vorel
@ 2024-07-10 15:14 ` Petr Vorel
2 siblings, 0 replies; 12+ messages in thread
From: Petr Vorel @ 2024-07-10 15:14 UTC (permalink / raw)
To: Andrea Cervesato; +Cc: ltp
Hi Andrea,
...
> +++ b/runtest/smoketest
> @@ -8,9 +8,7 @@ time01 time01
> wait02 wait02
> write01 write01
> symlink01 symlink01
> -stat04 symlink01 -T stat04
> -utime07 utime07
nit: you still remove utime07. Not sure why, I'd keep it.
Kind regards,
Petr
> -rename01A symlink01 -T rename01
> +stat04 stat04
> splice02 splice02 -s 20
> df01_sh df01.sh
> shell_test01 echo "SUCCESS" | shell_pipe01.sh
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-07-10 15:14 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-10 8:54 [LTP] [PATCH v3 0/4] symlink01 split Andrea Cervesato
2024-07-10 8:54 ` [LTP] [PATCH v3 1/4] Add stat04 test Andrea Cervesato
2024-07-10 12:15 ` Cyril Hrubis
2024-07-10 14:44 ` Petr Vorel
2024-07-10 15:14 ` Petr Vorel
2024-07-10 8:54 ` [LTP] [PATCH v3 2/4] Add lstat03 test Andrea Cervesato
2024-07-10 14:53 ` Petr Vorel
2024-07-10 8:54 ` [LTP] [PATCH v3 3/4] Add chmod08 test Andrea Cervesato
2024-07-10 15:12 ` Petr Vorel
2024-07-10 8:54 ` [LTP] [PATCH v3 4/4] Add open15 test Andrea Cervesato
2024-07-10 9:37 ` Li Wang
2024-07-10 14:39 ` Petr Vorel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox