Commit f303136c authored by Vitaly Lipatov's avatar Vitaly Lipatov

fix_disk.sh: improve for the latest kernel

parent 87e27540
...@@ -58,33 +58,28 @@ fix_block() ...@@ -58,33 +58,28 @@ fix_block()
# FIXME: which device?? # FIXME: which device??
#BLOCKLIST= #BLOCKLIST=
#Buffer I/O error on device sda, logical block 32607659 #Buffer I/O error on device sda, logical block 32607659
#dmesg | grep "logical block " | sed -e "s|.*Buffer I/O error on device \(sd[a-z]\), logical block \([0-9]*\)|\1 \2|g" | sort -u | \ dmesg | grep "logical block " | sed -e "s|.*Buffer I/O error on dev.* \(sd[a-z][0-9]*\), logical block \([0-9]*\)|\1 \2|g" | sort -u | \
echo | #echo |
while read devname block ; do while read devname block ; do
#for i in $BLOCKLIST ; do #for i in $BLOCKLIST ; do
echo echo
#FIXME: logical block - 8 sectors (on 64 bit) or 4 sectors (on 32 bit?) #FIXME: logical block - 8 sectors (on 64 bit) or 4 sectors (on 32 bit?)
echo "List $block bad block on /dev/$devname ..." echo "Logical bad block $block on /dev/$devname ..."
#echo "Fixing $block block on /dev/$devname ..." #echo "Fixing $block block on /dev/$devname ..."
#fix_block /dev/$devname $block #fix_block /dev/$devname $block
done done
[ -n "$LIST" ] && exit
# [23743.306922] blk_update_request: critical medium error, dev sdc, sector 510634067 # [23743.306922] blk_update_request: critical medium error, dev sdc, sector 510634067
dmesg | grep "blk_update_request: critical medium error" | sed -e "s|.*blk_update_request: critical medium error, dev \(sd[a-z]\), sector \([0-9]*\)|\1 \2|g" | sort -u | \ # [ 6.934350] blk_update_request: I/O error, dev sda, sector 16780432
dmesg | grep -E "(blk_update_request|end_request): (critical medium error|I/O error)" | sed -e "s|.*, dev \(sd[a-z]\), sector \([0-9]*\)|\1 \2|g" | sort -u | \
while read devname block ; do while read devname block ; do
#for i in $BLOCKLIST ; do #for i in $BLOCKLIST ; do
echo echo
echo "Fixing $block block on /dev/$devname ..." if [ -n "$LIST" ] ; then
fix_block /dev/$devname $block echo "Error with sector $block on /dev/$devname ..."
done else
echo "Fixing $block block on /dev/$devname ..."
fix_block /dev/$devname $block
dmesg | grep "end_request: I/O error" | sed -e "s|.*end_request: I/O error, dev \(sd[a-z]\), sector \([0-9]*\)|\1 \2|g" | sort -u | \ fi
while read devname block ; do
#for i in $BLOCKLIST ; do
echo
echo "Fixing $block block on /dev/$devname ..."
fix_block /dev/$devname $block
done done
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment