|
#!/bin/bash
|
|
set -x
|
|
set -e
|
|
mkdir /srv/tests || true
|
|
export DEST=$(mktemp -d -t BTRFS-XXX -p /srv/tests)
|
|
export MOCK="/srv/btrfs-testing"
|
|
export DISK="/dev/vdb1"
|
|
|
|
echo "DEST"
|
|
|
|
#stress-ng --class io --sequential 0 --hdd 1 | awk '{print $5}'
|
|
sync
|
|
(umount $DISK )|| true
|
|
sync
|
|
echo mkfs.btrfs -f $DISK && mount $DISK $DEST
|
|
mount -o bind $DEST $MOCK;
|
|
|
|
cd $MOCK
|
|
btrfs quota enable $MOCK
|
|
|
|
for i in btrfs{-balance,-scrub,-trim}; do echo "Triggering systemd timed service $i" && systemctl start $i.service && echo not masking :systemctl mask $i.{service,timer}; done;
|
|
|
|
ls -l $MOCK
|
|
echo "DEST is $MOCK"
|
|
for c in {e..h}; do btrfs subvolume create $MOCK/$c; done;
|
|
echo "We are in $MOCK"
|
|
|
|
# Fill with data
|
|
for c in {1..4}; do dd if=/dev/urandom bs=1M count=250 of=e/file$c; done;
|
|
for c in {1..4}; do dd if=/dev/urandom bs=1M count=250 of=f/file$c; done;
|
|
for c in {1..20}; do dd if=/dev/urandom bs=1M count=250 of=g/file$c; done;
|
|
for c in {1..15}; do dd if=/dev/urandom bs=1M count=250 of=h/file$c; done;
|
|
|
|
time sync
|
|
|
|
git config --global user.name "Santiago Zarate"
|
|
git config --global user.email santiago@zarate.co
|
|
git clone --depth 1 https://github.com/torvalds/linux.git /root/linux.git
|
|
|
|
snapper create --command 'for dir in {a..d}; do git clone --depth 1 /root/linux.git /srv/btrfs-testing/$(date | base64| sed s/=//)_linux; done;' --description "Before and after COMMAND"
|
|
|
|
snapper list
|
|
|
|
btrfs subvolume snapshot e z;
|
|
btrfs subvolume snapshot f y;
|
|
btrfs subvolume snapshot g x;
|
|
btrfs subvolume snapshot h w;
|
|
|
|
snapper list
|
|
|
|
time sync
|
|
# Remove data in original subvolume
|
|
rm {e,f,g,h}/file*;
|
|
|
|
# Re-fill original subvolumes
|
|
for c in {1..4}; do dd if=/dev/urandom bs=1M count=1024 of=e/file$c; done;
|
|
for c in {1..4}; do dd if=/dev/urandom bs=1M count=512 of=f/file$c; done;
|
|
for c in {1..20}; do dd if=/dev/urandom bs=1M count=128 of=g/file$c; done;
|
|
for c in {1..15}; do dd if=/dev/urandom bs=1M count=256 of=h/file$c; done;
|
|
|
|
# Remove original data in original subvolume
|
|
rm {e,f,g,h}/file*;
|
|
|
|
#for c in {a..d}; do btrfs subvolume delete $c; done;
|
|
|
|
sync;
|
|
snapper list
|
|
for c in {w..z}; do btrfs subvolume delete $MOCK/$c; done;
|
|
for c in {e..h}; do btrfs subvolume delete $MOCK/$c; done;
|
|
sync
|
|
for i in btrfs{-balance,-scrub,-trim}; do echo "Triggering systemd timed service $i" && systemctl start $i.service && echo not masking :systemctl mask $i.{service,timer}; done;
|
|
umount $MOCK
|
|
umount $DEST
|