Re: [PATCH STABLE] xfs: trim IO to found COW exent limit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 23, 2020 at 05:37:39PM -0500, Eric Sandeen wrote:
> Here's a reproducer for the bug.
> 
> Requires sufficient privs to mount a loopback fs.

Please turn this into an fstest case, but otherwise this looks
reasonable.

--D

> 
> ======
> 
> #!/bin/bash
> 
> mkdir -p mnt
> umount mnt &>/dev/null
> 
> # Create 8g fs image
> mkfs.xfs -f -dfile,name=fsfile.img,size=8g &>/dev/null
> mount -o loop fsfile.img mnt
> 
> # Make all files w/ 1m hints; create original 2m file
> xfs_io -c "extsize 1048576" mnt
> xfs_io -c "cowextsize 1048576" mnt
> 
> echo "Create file mnt/b"
> xfs_io -f -c "pwrite -S 0x0 0 2m" -c fsync mnt/b &>/dev/null
> 
> # Make a reflinked copy
> echo "Reflink copy from mnt/b to mnt/a"
> cp --reflink=always mnt/b mnt/a
> 
> echo "Contents of mnt/b"
> hexdump -C mnt/b
> 
> # Cycle mount to get stuff out of cache
> umount mnt
> mount -o loop fsfile.img mnt
> 
> # Create a 1m-hinted IO at offset 0, then
> # do another IO that overlaps but extends past the 1m hint
> echo "Write to mnt/a"
> xfs_io -c "pwrite -S 0xa 0k -b 4k 4k" \
>        -c "pwrite -S 0xa 4k -b 1m 1m" \
>        mnt/a &>/dev/null
> 
> xfs_io -c fsync mnt/a
> 
> echo "Contents of mnt/b now:"
> hexdump -C mnt/b
> 
> umount mnt
> 



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux