aio-dio-append-write-fallocate-race: fix directio buffer alignment bugs
authorDarrick J. Wong <djwong@kernel.org>
Wed, 19 May 2021 23:57:16 +0000 (16:57 -0700)
committerEryu Guan <guaneryu@gmail.com>
Sun, 23 May 2021 13:31:33 +0000 (21:31 +0800)
This program fails on filesystems where the stat() block size isn't a
strict power of two because it foolishly feeds that to posix_memalign to
allocate an aligned memory buffer for directio.  posix_memalign requires
the alignment value to be a power of two, so generic/586 fails.

The system page size generally works well for directio buffers, so use
that instead.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
src/aio-dio-regress/aio-dio-append-write-fallocate-race.c

index 091b047d0fa268b4f7d1b2cd243386a796ffe21b..d3a2e5fcb9d22cdb6bb2ce2b5809aacf87aa1ba9 100644 (file)
@@ -65,7 +65,7 @@ test(
        }
        blocksize = sbuf.st_blksize;
 
-       ret = posix_memalign((void **)&buf, blocksize, blocksize);
+       ret = posix_memalign((void **)&buf, sysconf(_SC_PAGESIZE), blocksize);
        if (ret) {
                errno = ret;
                perror("buffer");