Advertisement
ticpu

Untitled

May 30th, 2018
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.53 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. run_quiet () {
  4.     shift
  5.     "$@"
  6. }
  7.  
  8. test_zero_corruption () {
  9.     local disk="/dev/dm-21"
  10.     local table_fe="0 2000000 linear $disk 0"
  11.     local table_be1="0 8000000 linear $disk 2000000"
  12.     local table_be2="0 4000000 linear $disk 10000000"
  13.     local table_be3="0 4000000 linear $disk 14000000"
  14.  
  15.     dmsetup create fe <<< $table_fe
  16.     dmsetup create be1 <<< $table_be1
  17.     dmsetup create be2 <<< $table_be2
  18.     dmsetup create be3 <<< $table_be3
  19.  
  20.     run_quiet "" bcachefs format    \
  21.         --error_action=panic        \
  22.         --data_replicas=2           \
  23.         --metadata_replicas=3       \
  24.         --group ssd /dev/mapper/fe  \
  25.         --group hdd /dev/mapper/be*
  26.  
  27.     mount -t bcachefs /dev/mapper/fe:/dev/mapper/be1:/dev/mapper/be2:/dev/mapper/be3 /mnt
  28.  
  29.     echo ssd > /sys/fs/bcachefs/*/options/foreground_target
  30.     echo ssd > /sys/fs/bcachefs/*/options/promote_target
  31.     echo hdd > /sys/fs/bcachefs/*/options/background_target
  32.  
  33.     pushd /mnt > /dev/null
  34.  
  35.     # Initial test
  36.     dd if=/dev/urandom of=test0 bs=1M count=10 oflag=direct
  37.     sha256sum test0 > test0.sha256
  38.     sync
  39.  
  40.     # I/O error test
  41.     dmsetup suspend be1
  42.     dmsetup reload be1 <<< "0 8000000 error"
  43.     dmsetup resume be1
  44.     dd if=/dev/urandom of=test1 bs=1M count=10 oflag=direct
  45.     sha256sum test1 > test1.sha256
  46.     sync
  47.  
  48.     # Zero test
  49.     dmsetup suspend be2
  50.     dmsetup reload be2 <<< "0 4000000 zero"
  51.     dmsetup resume be2
  52.     dd if=/dev/urandom of=test2 bs=1M count=10 oflag=direct
  53.     sha256sum test2 > test2.sha256
  54.     sync
  55.  
  56.     # Second I/O error test
  57.     dmsetup suspend be3
  58.     dmsetup reload be3 <<< "0 4000000 error"
  59.     dmsetup resume be3
  60.     dd if=/dev/urandom of=test3 bs=1M count=10 oflag=direct
  61.     sha256sum test3 > test3.sha256
  62.     sync
  63.  
  64.     # Un-mount
  65.     popd > /dev/null
  66.     umount /mnt
  67.  
  68.     # Restore original tables
  69.     dmsetup suspend be1
  70.     dmsetup reload be1 <<< $table_be1
  71.     dmsetup resume be1
  72.     dmsetup suspend be2
  73.     dmsetup reload be2 <<< $table_be2
  74.     dmsetup resume be2
  75.     dmsetup suspend be3
  76.     dmsetup reload be3 <<< $table_be3
  77.     dmsetup resume be3
  78.  
  79.     # Mount without be1 and files test0 + test0.sha256 are unreadable.
  80.     pushd /mnt > /dev/null
  81.     mount -t bcachefs -o degraded /dev/mapper/fe:/dev/mapper/be2:/dev/mapper/be3 /mnt
  82.     bcachefs fs usage /mnt
  83.     sha256sum -c *.sha256
  84.     popd > /dev/null
  85.  
  86.     # Remove device with corruption, causes kernel bug + freeze FS: https://pastebin.com/gD3MsE5R
  87.     bcachefs device remove /dev/mapper/be2
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement