diff mbox

fsync-err: write to different offset on each fd

Message ID 20170913130624.24028-1-jlayton@kernel.org (mailing list archive)
State New, archived
Headers show

Commit Message

Jeffrey Layton Sept. 13, 2017, 1:06 p.m. UTC
From: Jeff Layton <jlayton@redhat.com>

NFS currently has slightly different semantics from other fs' and
fails this test due to the fact that the same range is overwritten
via each fd.

Change it so that each fd overwrites a different region, which is
more representative of a real workload anyway.

Reported-by: Neil Brown <neilb@suse.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
 src/fsync-err.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Eryu Guan Sept. 14, 2017, 6:24 a.m. UTC | #1
On Wed, Sep 13, 2017 at 09:06:24AM -0400, Jeff Layton wrote:
> From: Jeff Layton <jlayton@redhat.com>
> 
> NFS currently has slightly different semantics from other fs' and
> fails this test due to the fact that the same range is overwritten
> via each fd.

generic/441 and generic/442 require the SCRATCH_DEV to be a real block
device, tests should be skipped as _notrun on NFS, and I didn't expect a
test failure on NFS..

> 
> Change it so that each fd overwrites a different region, which is
> more representative of a real workload anyway.
> 
> Reported-by: Neil Brown <neilb@suse.com>
> Signed-off-by: Jeff Layton <jlayton@redhat.com>

But the change looks fine to me.

Thanks,
Eryu
> ---
>  src/fsync-err.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/fsync-err.c b/src/fsync-err.c
> index 4b0205cf2fd4..146688ddb01e 100644
> --- a/src/fsync-err.c
> +++ b/src/fsync-err.c
> @@ -106,7 +106,7 @@ int main(int argc, char **argv)
>  	memset(buf, 0x7c, bufsize);
>  
>  	for (i = 0; i < numfds; ++i) {
> -		ret = write(fd[i], buf, bufsize);
> +		ret = pwrite(fd[i], buf, bufsize, i * bufsize);
>  		if (ret < 0) {
>  			printf("First write on fd[%d] failed: %m\n", i);
>  			return 1;
> @@ -149,7 +149,7 @@ int main(int argc, char **argv)
>  	}
>  
>  	for (i = 0; i < numfds; ++i) {
> -		ret = write(fd[i], buf, bufsize);
> +		ret = pwrite(fd[i], buf, bufsize, i * bufsize);
>  		if (ret < 0) {
>  			printf("Second write on fd[%d] failed: %m\n", i);
>  			return 1;
> -- 
> 2.13.5
> 
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/src/fsync-err.c b/src/fsync-err.c
index 4b0205cf2fd4..146688ddb01e 100644
--- a/src/fsync-err.c
+++ b/src/fsync-err.c
@@ -106,7 +106,7 @@  int main(int argc, char **argv)
 	memset(buf, 0x7c, bufsize);
 
 	for (i = 0; i < numfds; ++i) {
-		ret = write(fd[i], buf, bufsize);
+		ret = pwrite(fd[i], buf, bufsize, i * bufsize);
 		if (ret < 0) {
 			printf("First write on fd[%d] failed: %m\n", i);
 			return 1;
@@ -149,7 +149,7 @@  int main(int argc, char **argv)
 	}
 
 	for (i = 0; i < numfds; ++i) {
-		ret = write(fd[i], buf, bufsize);
+		ret = pwrite(fd[i], buf, bufsize, i * bufsize);
 		if (ret < 0) {
 			printf("Second write on fd[%d] failed: %m\n", i);
 			return 1;