[Cluster-devel] [GFS2 PATCH] GFS2: Fix direct IO write rounding error
Steven Whitehouse
swhiteho at redhat.com
Thu Jan 28 13:29:18 UTC 2016
Hi,
On 28/01/16 13:24, Bob Peterson wrote:
> Hi,
>
> The fsx test in xfstests was failing because it was using direct IO
> writes which were using a bad calculation. It was using
> loff_t lstart = offset & (PAGE_CACHE_SIZE - 1); when it should be
> loff_t lstart = offset & ~(PAGE_CACHE_SIZE - 1);
> Thus, the write at offset 0x67e00 was calculating lstart to be
> 0xe00, the address of our corruption. Instead, it should have been
> 0x67000. This patch fixes the calculation.
>
> Regards,
>
> Bob Peterson
> Red Hat File Systems
>
> Signed-off-by: Bob Peterson <rpeterso at redhat.com>
Acked-by: Steven Whitehouse <swhiteho at redhat.com>
Steve.
> ---
> diff --git a/fs/gfs2/aops.c b/fs/gfs2/aops.c
> index 93f0746..aa016e4 100644
> --- a/fs/gfs2/aops.c
> +++ b/fs/gfs2/aops.c
> @@ -1082,7 +1082,7 @@ static ssize_t gfs2_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
> * the first place, mapping->nr_pages will always be zero.
> */
> if (mapping->nrpages) {
> - loff_t lstart = offset & (PAGE_CACHE_SIZE - 1);
> + loff_t lstart = offset & ~(PAGE_CACHE_SIZE - 1);
> loff_t len = iov_iter_count(iter);
> loff_t end = PAGE_ALIGN(offset + len) - 1;
>
>
More information about the Cluster-devel
mailing list