Commit 9d03d77f authored by Andrew Vagin's avatar Andrew Vagin Committed by Pavel Emelyanov

zdtm: check a ghost file in a read-only directory

=[log]=> dump/zdtm/static/unlink_fstat00/39/1/restore.log
------------------------ grep Error ------------------------
(00.097701)      4: Error (files-reg.c:1231): Can't link zdtm/static/unlink_fstat00.test/test\file'
(00.097707)      4: Error (files-reg.c:1431): Can't link zdtm/static/unlink_fstat00.test/test\file'
(00.097952)      1: Error (cr-restore.c:1404): 4 exited, status=1
(00.108085) Error (cr-restore.c:1407): 64 killed by signal 9: Killed
(00.114341) Error (cr-restore.c:2246): Restoring FAILED.
------------------------ ERROR OVER ------------------------

v2: add a new test instead of changing the existing one.
Signed-off-by: 's avatarAndrew Vagin <avagin@virtuozzo.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent 330b0d16
...@@ -185,6 +185,7 @@ ...@@ -185,6 +185,7 @@
/static/unlink_fstat01+ /static/unlink_fstat01+
/static/unlink_fstat02 /static/unlink_fstat02
/static/unlink_fstat03 /static/unlink_fstat03
/static/unlink_fstat04
/static/unlink_largefile /static/unlink_largefile
/static/unlink_mmap00 /static/unlink_mmap00
/static/unlink_mmap01 /static/unlink_mmap01
......
...@@ -219,6 +219,7 @@ TST_DIR = \ ...@@ -219,6 +219,7 @@ TST_DIR = \
cgroup02 \ cgroup02 \
cgroup03 \ cgroup03 \
cgroup_stray \ cgroup_stray \
unlink_fstat04 \
mntns_open \ mntns_open \
mntns_link_remap \ mntns_link_remap \
mntns_link_ghost \ mntns_link_ghost \
...@@ -376,6 +377,7 @@ maps02: get_smaps_bits.o ...@@ -376,6 +377,7 @@ maps02: get_smaps_bits.o
mlock_setuid: get_smaps_bits.o mlock_setuid: get_smaps_bits.o
inotify01: override CFLAGS += -DINOTIFY01 inotify01: override CFLAGS += -DINOTIFY01
unlink_fstat01+: override CFLAGS += -DUNLINK_OVER unlink_fstat01+: override CFLAGS += -DUNLINK_OVER
unlink_fstat04: override CFLAGS += -DUNLINK_FSTAT04
sk-freebind-false: override CFLAGS += -DZDTM_FREEBIND_FALSE sk-freebind-false: override CFLAGS += -DZDTM_FREEBIND_FALSE
stopped01: override CFLAGS += -DZDTM_STOPPED_KILL stopped01: override CFLAGS += -DZDTM_STOPPED_KILL
stopped02: override CFLAGS += -DZDTM_STOPPED_TKILL stopped02: override CFLAGS += -DZDTM_STOPPED_TKILL
......
...@@ -5,13 +5,19 @@ ...@@ -5,13 +5,19 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
#include <linux/limits.h>
#include "zdtmtst.h" #include "zdtmtst.h"
const char *test_doc = "Open, unlink, change size, seek, migrate, check size"; const char *test_doc = "Open, unlink, change size, seek, migrate, check size";
#ifdef UNLINK_FSTAT04
char *dirname;
TEST_OPTION(dirname, string, "directory name", 1);
#else
char *filename; char *filename;
TEST_OPTION(filename, string, "file name", 1); TEST_OPTION(filename, string, "file name", 1);
#endif
int main(int argc, char ** argv) int main(int argc, char ** argv)
{ {
...@@ -23,15 +29,30 @@ int main(int argc, char ** argv) ...@@ -23,15 +29,30 @@ int main(int argc, char ** argv)
uint8_t buf[fsize]; uint8_t buf[fsize];
struct stat fst; struct stat fst;
uint32_t crc; uint32_t crc;
#ifdef UNLINK_FSTAT04
char filename[PATH_MAX];
#endif
test_init(argc, argv); test_init(argc, argv);
#ifdef UNLINK_FSTAT04
snprintf(filename, sizeof(filename), "%s/test\\file'\n\"un%%linkfstat00", dirname);
mkdir(dirname, 0700);
#endif
fd = open(filename, O_RDWR | O_CREAT | O_TRUNC, 0644); fd = open(filename, O_RDWR | O_CREAT | O_TRUNC, 0644);
if (fd < 0) { if (fd < 0) {
pr_perror("can't open %s", filename); pr_perror("can't open %s", filename);
exit(1); exit(1);
} }
#ifdef UNLINK_FSTAT04
if (chmod(dirname, 0500)) {
pr_perror("chmod");
exit(1);
}
#endif
if (fstat(fd, &fst) < 0) { if (fstat(fd, &fst) < 0) {
pr_perror("can't get file info %s before", filename); pr_perror("can't get file info %s before", filename);
goto failed; goto failed;
......
unlink_fstat00.c
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment