Skip to content
Snippets Groups Projects
Commit ead624f0 authored by wangchao's avatar wangchao
Browse files

b=1792

r=Chris

add sanity test for "iopen_connect_dentry() on already-connected dentry"
parent 751d30e7
No related branches found
No related tags found
No related merge requests found
...@@ -21,13 +21,15 @@ noinst_PROGRAMS += wantedi statone runas openfile getdents mkdirdeep o_directory ...@@ -21,13 +21,15 @@ noinst_PROGRAMS += wantedi statone runas openfile getdents mkdirdeep o_directory
noinst_PROGRAMS += small_write multiop sleeptest ll_sparseness_verify noinst_PROGRAMS += small_write multiop sleeptest ll_sparseness_verify
noinst_PROGRAMS += ll_sparseness_write mrename noinst_PROGRAMS += ll_sparseness_write mrename
# noinst_PROGRAMS += ldaptest # noinst_PROGRAMS += ldaptest
bin_PROGRAMS = mcreate munlink mkdirmany bin_PROGRAMS = mcreate munlink mkdirmany iopentest1 iopentest2
# ldaptest_SOURCES = ldaptest.c # ldaptest_SOURCES = ldaptest.c
tchmod_SOURCES = tchmod.c tchmod_SOURCES = tchmod.c
toexcl_SOURCES = toexcl.c toexcl_SOURCES = toexcl.c
testreq_SOURCES = testreq.c testreq_SOURCES = testreq.c
mcreate_SOURCES = mcreate.c mcreate_SOURCES = mcreate.c
iopentest1_SOURCES = iopentest1.c
iopentest2_SOURCES = iopentest2.c
munlink_SOURCES = munlink.c munlink_SOURCES = munlink.c
mlink_SOURCES = mlink.c mlink_SOURCES = mlink.c
truncate_SOURCES = truncate.c truncate_SOURCES = truncate.c
......
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#include <libgen.h>
#include <errno.h>
const char *progname;
const char usage_fmt[] = "Usage: %s <file> <mountpoint>\n";
#define INAME_LEN (PATH_MAX + 1)
#define CHECK_IT(exp, pstr) \
if (!(exp)) { \
fprintf(stderr, "%s: at %s:%d: ", progname, __FILE__, __LINE__); \
perror((pstr)); \
exit(1); \
}
#define CHECK_SNPRINTF(rc, len) \
CHECK_IT((rc) > 0 && (rc) <= (len), "snprintf() failed")
static char *get_iname(char *fname, const char *mtpt)
{
char *iname;
int fd, rc;
struct stat buf;
iname = malloc(INAME_LEN);
CHECK_IT(iname, "malloc() failed");
fd = open(fname, O_CREAT, 0644);
CHECK_IT(fd >= 0 || errno == EISDIR, "open(fname) failed");
if (fd >= 0)
close(fd);
rc = stat(fname, &buf);
CHECK_IT(rc == 0, "stat(fname) failed");
rc = snprintf(iname, INAME_LEN,
"%s/__iopen__/%lu", mtpt, buf.st_ino);
CHECK_SNPRINTF(rc, INAME_LEN);
return iname;
}
int main(int argc, char *argv[])
{
char *fname, *mtpt, *iname, *pname;
struct stat buf;
int rc;
int i;
pname = strdup(argv[0]);
progname = basename(pname);
if (argc != 3) {
fprintf(stderr, usage_fmt, progname);
return 1;
}
fname = argv[1];
mtpt = argv[2];
iname = get_iname(fname, mtpt);
i=10000;
printf("%s:started...\n",argv[0]);
do {
rc = stat(fname, &buf);
CHECK_IT(rc == 0, "stat(fname) failed");
rc = stat(iname, &buf);
CHECK_IT(rc == 0, "stat(iname) failed");
i--;
} while (i>=1);
return 0;
}
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#include <libgen.h>
#include <errno.h>
const char usage_fmt[] = "Usage: %s <mountpoint>\n";
#define INAME_LEN (PATH_MAX + 1)
const char *progname;
#define CHECK_IT(exp, pstr) \
if (!(exp)) { \
fprintf(stderr, "%s: at %s:%d: ", progname, __FILE__, __LINE__); \
perror((pstr)); \
exit(1); \
}
#define CHECK_SNPRINTF(rc, len) \
CHECK_IT((rc) > 0 && (rc) <= (len), "snprintf() failed")
static char *get_iname(char *fname, const char *mtpt)
{
char *iname;
int fd, rc;
struct stat buf;
iname = malloc(INAME_LEN);
CHECK_IT(iname, "malloc() failed");
fd = open(fname, O_CREAT, 0644);
CHECK_IT(fd >= 0 || errno == EISDIR, "open(fname) failed");
if (fd >= 0)
close(fd);
rc = stat(fname, &buf);
CHECK_IT(rc == 0, "stat(fname) failed");
rc = snprintf(iname, INAME_LEN,
"%s/__iopen__/%lu", mtpt, buf.st_ino);
CHECK_SNPRINTF(rc, INAME_LEN);
return iname;
}
int main(int argc, char *argv[])
{
char *fname, *mtpt, *pname;
int rc, fd;
char *fname_iname, *dir;
char *dir_iname = NULL, *foo = NULL, *bar = NULL;
int i,j;
int thread=0;
pname = strdup(argv[0]);
progname = basename(argv[0]);
if (argc != 2) {
fprintf(stderr, usage_fmt, progname);
return 1;
}
for(i=1;i<=10;i++) {
rc=fork();
if (rc < 0) {
fprintf(stderr, "error: %s: #%ld - %s\n", argv[0], i,
strerror(rc = errno));
break;
} else if (rc == 0) {
thread = i;
break;
} else {
printf("%s: thread #%ld (PID %d) started\n",
argv[0], i, rc);
}
rc = 0;
}
if (thread!=0){
j=1000;
mtpt = argv[1];
fname = malloc(INAME_LEN);
CHECK_IT(fname, "malloc() failed");
rc = snprintf(fname, INAME_LEN,
"%s/%d", mtpt, getpid());
CHECK_SNPRINTF(rc, INAME_LEN);
rc = mkdir(fname, 0644);
CHECK_IT(rc == 0, "mkdir(fname) failed");
fname_iname = get_iname(fname, mtpt);
dir = malloc(INAME_LEN);
CHECK_IT(dir, "malloc() failed");
rc = snprintf(dir, INAME_LEN,
"%s/dir", fname_iname);
CHECK_SNPRINTF(rc, INAME_LEN);
foo = malloc(INAME_LEN);
CHECK_IT(foo, "malloc() failed");
bar = malloc(INAME_LEN);
CHECK_IT(bar, "malloc() failed");
do {
rc = mkdir(dir, 0644);
CHECK_IT(rc == 0, "mkdir() failed");
dir_iname = get_iname(dir, mtpt);
rc = snprintf(foo, INAME_LEN,
"%s/bar", dir_iname);
CHECK_SNPRINTF(rc, INAME_LEN);
rc = snprintf(bar, INAME_LEN,
"%s/bar", dir_iname);
CHECK_SNPRINTF(rc, INAME_LEN);
fd = open(foo, O_CREAT, 0644);
CHECK_IT(fd >= 0, "open(foo) failed");
close(fd);
rc = rename(foo, bar);
CHECK_IT(rc == 0, "rename(foo, bar) failed");
rc = unlink(bar);
CHECK_IT(rc == 0, "unlink(bar) failed");
rc = rmdir(dir);
CHECK_IT(rc == 0, "rmdir(dir) failed");
free(dir_iname);
j--;
} while (j>=1);
}
return 0;
}
...@@ -14,6 +14,8 @@ ALWAYS_EXCEPT=${ALWAYS_EXCEPT:-"42b"} ...@@ -14,6 +14,8 @@ ALWAYS_EXCEPT=${ALWAYS_EXCEPT:-"42b"}
SRCDIR=`dirname $0` SRCDIR=`dirname $0`
PATH=$PWD/$SRCDIR:$SRCDIR:$SRCDIR/../utils:$PATH PATH=$PWD/$SRCDIR:$SRCDIR:$SRCDIR/../utils:$PATH
TMP=${TMP:-/tmp}
CHECKSTAT=${CHECKSTAT:-"checkstat -v"} CHECKSTAT=${CHECKSTAT:-"checkstat -v"}
CREATETEST=${CREATETEST:-createtest} CREATETEST=${CREATETEST:-createtest}
LFIND=${LFIND:-lfind} LFIND=${LFIND:-lfind}
...@@ -27,6 +29,8 @@ TRUNCATE=${TRUNCATE:-truncate} ...@@ -27,6 +29,8 @@ TRUNCATE=${TRUNCATE:-truncate}
MUNLINK=${MUNLINK:-munlink} MUNLINK=${MUNLINK:-munlink}
SOCKETSERVER=${SOCKETSERVER:-socketserver} SOCKETSERVER=${SOCKETSERVER:-socketserver}
SOCKETCLIENT=${SOCKETCLIENT:-socketclient} SOCKETCLIENT=${SOCKETCLIENT:-socketclient}
IOPENTEST1=${IOPENTEST1:-iopentest1}
IOPENTEST2=${IOPENTEST2:-iopentest2}
if [ $UID -ne 0 ]; then if [ $UID -ne 0 ]; then
RUNAS_ID="$UID" RUNAS_ID="$UID"
...@@ -1542,6 +1546,22 @@ test_54d() { ...@@ -1542,6 +1546,22 @@ test_54d() {
} }
run_test 54d "fifo device works in lustre" run_test 54d "fifo device works in lustre"
test_55() {
for i in `ls $TMP|grep -E 'mds|ost'` ; do
rm -rf $DIR/d55
mkdir $DIR/d55
mount -o loop,iopen $TMP/$i $DIR/d55
touch $DIR/d55/foo
$IOPENTEST1 $DIR/d55/foo $DIR/d55
$IOPENTEST2 $DIR/d55
echo "check for $TMP/$i. Please wait..."
sleep 6
rm -rf $DIR/d55/*
umount $DIR/d55
done
}
run_test 55 "check iopen_connect_dentry()======================="
test_59() { test_59() {
echo "touch 130 files" echo "touch 130 files"
for i in `seq 1 130` ; do for i in `seq 1 130` ; do
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment