X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=btrfsmaint;h=33cae4a36280351c170155f11fc83ba8ca3b2102;hb=ea108a03dfa2d7f73447c0b14210d766e5ee5d9b;hp=1639a8dd48f450e69fdf67558a4780059583ec1d;hpb=40dd151ec6ba75633c74568da59e35a45351f194;p=distro-setup diff --git a/btrfsmaint b/btrfsmaint index 1639a8d..33cae4a 100755 --- a/btrfsmaint +++ b/btrfsmaint @@ -41,13 +41,12 @@ check-idle() { fi } - usage() { cat <$tmp; then - if diff -q $mnt/btrfs-dev-stats $tmp; then - diff -u $mnt/btrfs-dev-stats $tmp | mail -s "$HOSTNAME: error: btrfs dev stats -c $mnt" root@localhost - cat $tmp >$mnt/btrfs-dev-stats - fi - fi + #### begin look for diff in stats, eg: increasing error count #### - if ! $idle; then - if $dryrun; then - echo "$0: not idle. if this wasnt a dry run, btrfs scrub cancel $mnt" - else - btrfs scrub cancel $mnt &>/dev/null ||: - continue + # Only run for $check, since it runs in parallel to non-check, avoid + # race condition. + if $check; then + if ! btrfs dev stats -c $mnt >$tmp; then + if diff -q $mnt/btrfs-dev-stats $tmp; then + diff -u $mnt/btrfs-dev-stats $tmp | mail -s "$HOSTNAME: error: btrfs dev stats -c $mnt" root@localhost + cat $tmp >$mnt/btrfs-dev-stats + fi fi + rm -f $tmp fi + #### end look for diff in stats, eg: increasing error count #### + if $check; then + if ! $idle; then + if $dryrun; then + echo "$0: not idle. if this wasnt a dry run, btrfs scrub cancel $mnt" + else + btrfs scrub cancel $mnt &>/dev/null ||: + fi + fi continue fi @@ -148,19 +169,25 @@ main() { echo "$0: last scrub finish for $mnt: $date" fi date=$(date --date="$date" +%s) - # if date is sooner than 90 days ago + # if date is sooner than 60 days ago # the wiki recommends 30 days or so, but - # it makes the comp lag like shit for a day, - # so I'm going with 90 days. - if (( date > $(date +%s) - 60*60*24*30 )); then + # I'm going with 60 days. + if (( date > EPOCHSECONDS - 60*60*24*60 )); then if $dryrun; then - echo "$0: skiping scrub of $mnt, last was $(( ($(date +%s) - date) / 60/60/24 )) days ago, < 30 days" + echo "$0: skiping scrub of $mnt, last was $(( (EPOCHSECONDS - date) / 60/60/24 )) days ago, < 30 days" fi continue fi fi # -c 2 -n 4 is from btrfsmaintenance, does ionice e btrfs scrub start -Bd -c 2 -n 4 $mnt + + # We normally only do one disk since this is meant to be run while I sleep + # and if we try to do all disks, we invariably end up doing a scrub still + # after I've woken up. So, just do one per day. + if ! $force; then + return 0 + fi done }