[LTP] [PATCH 2/2] syscalls/sendfile: Convert sendfile09 to the new API
Petr Vorel
pvorel@suse.cz
Tue May 25 17:13:07 CEST 2021
Hi all,
> Hi Ziyao,
> > > > +++ b/testcases/kernel/syscalls/sendfile/sendfile09.c
> > > ...
> > > > + * Copyright (c) International Business Machines Corp., 2014
> > > Again, missing copyright.
> > I wonder if I should add copyright without changing the code logic.
> IMHO yes. You significantly changed the code. At least we do that.
> ...
> > > > -static void cleanup(void);
> > > > -static void setup(void);
> > > > +#ifndef OFF_T
> > > > +#define OFF_T off_t
> > > > +#endif
> > > I wonder where OFF_T comes from and if we can just simply use off_t.
> > Not sure about this.
> @metan any idea?
> It looks like nothing needs it:
> https://travis-ci.org/github/pevik/ltp/builds/771843061
I see it must stay, it's for non- "_64" versions, which have it defined in
Makefile.
Merged with changes below. Thanks!
BTW I wonder if test could be run with less than 5GB, which is quite a lot.
Kind regards,
Petr
diff --git testcases/kernel/syscalls/sendfile/sendfile08.c testcases/kernel/syscalls/sendfile/sendfile08.c
index ddb8f1dd2..48a971bfb 100644
--- testcases/kernel/syscalls/sendfile/sendfile08.c
+++ testcases/kernel/syscalls/sendfile/sendfile08.c
@@ -14,11 +14,7 @@
*/
#include <stdio.h>
-#include <fcntl.h>
#include <string.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <sys/types.h>
#include <sys/sendfile.h>
#include "tst_test.h"
@@ -40,15 +36,17 @@ static void run(void)
tst_brk(TBROK | TTERRNO, "sendfile() failed");
char buf[BUFSIZ];
+
SAFE_LSEEK(out_fd, 0, SEEK_SET);
SAFE_READ(0, out_fd, buf, BUFSIZ);
- if (!strncmp(buf, TEST_MSG_ALL, strlen(TEST_MSG_ALL)))
- tst_res(TPASS, "sendfile(2) copies data correctly");
- else
- tst_res(TFAIL, "sendfile(2) copies data incorrectly. "
- "Expect \"%s%s\", got \"%s\"",
- TEST_MSG_OUT, TEST_MSG_IN, buf);
+ if (!strncmp(buf, TEST_MSG_ALL, strlen(TEST_MSG_ALL))) {
+ tst_res(TPASS, "sendfile() copies data correctly");
+ return;
+ }
+
+ tst_res(TFAIL, "sendfile() copies data incorrectly: '%s' expected: '%s%s'",
+ buf, TEST_MSG_OUT, TEST_MSG_IN);
}
static void setup(void)
diff --git testcases/kernel/syscalls/sendfile/sendfile09.c testcases/kernel/syscalls/sendfile/sendfile09.c
index 667e314bb..297b3e212 100644
--- testcases/kernel/syscalls/sendfile/sendfile09.c
+++ testcases/kernel/syscalls/sendfile/sendfile09.c
@@ -7,23 +7,19 @@
* [Description]
*
* Testcase copied from sendfile02.c to test the basic functionality of
- * the sendfile(2) system call on large file. There is a kernel bug which
+ * the sendfile() system call on large file. There is a kernel bug which
* introduced by commit 8f9c0119d7ba9 and fixed by commit 5d73320a96fcc.
*
* Only supports 64bit systems.
*
* [Algorithm]
*
- * 1. Call sendfile(2) with offset at 0;
- * 2. Call sendfile(2) with offset at 3GB.
+ * 1. Call sendfile() with offset at 0.
+ * 2. Call sendfile() with offset at 3GB.
*/
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/sendfile.h>
-#include <sys/types.h>
-#include <unistd.h>
#include <inttypes.h>
+#include <sys/sendfile.h>
#include "tst_test.h"
#include "lapi/abisize.h"
@@ -51,11 +47,13 @@ static struct test_case_t {
static void setup(void)
{
+ int i, fd;
+
if (!tst_fs_has_free(".", 5, TST_GB))
tst_brk(TCONF, "Test on large file needs 5G free space");
- int fd = SAFE_CREAT(IN_FILE, 00700);
- for (int i = 1; i <= (4 * 1024); ++i) {
+ fd = SAFE_CREAT(IN_FILE, 00700);
+ for (i = 1; i <= (4 * 1024); ++i) {
SAFE_LSEEK(fd, 1024 * 1024 - 1, SEEK_CUR);
SAFE_WRITE(1, fd, "C", 1);
}
@@ -71,27 +69,27 @@ static void run(unsigned int i)
int out_fd = SAFE_OPEN(OUT_FILE, O_WRONLY);
OFF_T offset = tc[i].offset;
- off_t before_pos, after_pos;
+ OFF_T before_pos, after_pos;
before_pos = SAFE_LSEEK(in_fd, 0, SEEK_CUR);
TEST(sendfile(out_fd, in_fd, &offset, tc[i].count));
after_pos = SAFE_LSEEK(in_fd, 0, SEEK_CUR);
if (TST_RET != tc[i].exp_retval)
- tst_res(TFAIL, "sendfile(2) failed to return expected value, "
+ tst_res(TFAIL, "sendfile() failed to return expected value, "
"expected: %" PRId64 ", got: %ld",
tc[i].exp_retval, TST_RET);
else if (offset != tc[i].exp_updated_offset)
- tst_res(TFAIL, "sendfile(2) failed to update OFFSET parameter to "
+ tst_res(TFAIL, "sendfile() failed to update OFFSET parameter to "
"expected value, expected: %" PRId64 ", got: %" PRId64,
tc[i].exp_updated_offset, (int64_t)(offset));
else if (before_pos != after_pos)
- tst_res(TFAIL, "sendfile(2) updated the file position of in_fd "
+ tst_res(TFAIL, "sendfile() updated the file position of in_fd "
"unexpectedly, expected file position: %" PRId64
", actual file position %" PRId64,
(int64_t)(before_pos), (int64_t)(after_pos));
else
- tst_res(TPASS, "sendfile(2) with %s", tc[i].desc);
+ tst_res(TPASS, "sendfile() with %s", tc[i].desc);
SAFE_CLOSE(in_fd);
SAFE_CLOSE(out_fd);
@@ -104,7 +102,6 @@ static struct tst_test test = {
.tcnt = ARRAY_SIZE(tc),
.min_kver = "2.6.33",
.tags = (const struct tst_tag[]) {
- {"linux-git", "8f9c0119d7ba9"},
{"linux-git", "5d73320a96fcc"},
{}
}
More information about the ltp
mailing list