[PATCH 18/18] xfs: use iolock on XFS_IOC_ALLOCSP calls
Mark Tinguely
tinguely at sgi.com
Mon Apr 16 10:10:48 CDT 2012
On 04/13/12 07:11, Dave Chinner wrote:
> From: Dave Chinner<dchinner at redhat.com>
>
> fsstress has a particular effective way of stopping debug XFS
> kernels. We keep seeing assert failures due finding delayed
> allocation extents where there should be none. This shows up when
> extracting extent maps and we are holding all the locks we should be
> to prevent races, so this really makes no sense to see these errors.
>
> After checking that fsstress does not use mmap, it occurred to me
> that fsstress uses something that no sane application uses - the
> XFS_IOC_ALLOCSP ioctl interfaces for preallocation. These interfaces
> do allocation of blocks beyond EOF without using preallocation, and
> then call setattr to extend and zero the allocated blocks.
>
> THe problem here is this is a buffered write, and hence the
> allocation is a delayed allocation. Unlike the buffered IO path, the
> allocation and zeroing are not serialised using the IOLOCK. Hence
> the ALLOCSP operation can race with operations holding the iolock to
> prevent buffered IO operations from occurring.
>
> Signed-off-by: Dave Chinner<dchinner at redhat.com>
> Reviewed-by: Christoph Hellwig<hch at lst.de>
> ---
Looks good.
Reviewed-by: Mark Tinguely <tinguely at sgi.com>
More information about the xfs
mailing list