<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Dec 2, 2010, at 3:33 AM, Michael Monnerie wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>On Dienstag, 30. November 2010 Eli Morris wrote:<br><blockquote type="cite">Thanks for your help with this. I wrote the program and ran it<br></blockquote><blockquote type="cite">through and it looks like we have we able to preserve 44 TB of valid<br></blockquote><blockquote type="cite">data, while removing the corrupted files, which is a great result,<br></blockquote><blockquote type="cite">considering the circumstances. <br></blockquote><br>Eli, could you post the relevant program here so others can use it if <br>needed? There are requests from time to time, and it would be good if <br>such a program were available (like I'm sure you'd been happy if it <br>already existed the time you needed it).<br><br>Thanks, and wow: what an amazing filesystem can recover such an event!<br><br>-- <br>mit freundlichen Grüssen,<br>Michael Monnerie, Ing. BSc<br><br>it-management Internet Services: Protéger<br><a href="http://proteger.at">http://proteger.at</a> [gesprochen: Prot-e-schee]<br>Tel: +43 660 / 415 6531<br><br>// ****** Radiointerview zum Thema Spam ******<br>// <a href="http://www.it-podcast.at/archiv.html#podcast-100716">http://www.it-podcast.at/archiv.html#podcast-100716</a><br>// <br>// Haus zu verkaufen: <a href="http://zmi.at/langegg/">http://zmi.at/langegg/</a><br></div></blockquote></div><br><div><br></div><div>Good idea, here is the program:</div><div><br></div><div>Eli</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); ">#!/bin/bash</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># Copyright 2010 Eli Morris, Travis O'Brien, University of California </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># remove_bad.sh is free software: you can redistribute it under the terms</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># of the GNU General Public License as published by the Free Software</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># Foundation, either version 3 of the License, or (at your option) any later</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># version. </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># This program is distributed in the hope that it will be useful, but</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># for more details. </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># You should have received a copy of the GNU General Public License along</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># with this program. If not, see <<a href="http://www.gnu.org/licenses/"><span style="color: #1f00ff">http://www.gnu.org/licenses/</span></a>>. </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); ">#</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); ">#</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); ">#remove_bad.sh: A script to determine whether any part of a file falls within a</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); ">#set of blocks (indicated by arguments 1 and 2). This script is</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); ">#originally written with the intent to find files on a file system that</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); ">#exist(ed) on a corrupt section of the file system. It generates a list of files</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); ">#that are potentially bad, so that they can be removed by another script.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); ">#</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); ">#Check command line arguments; grab arguments 1 and 2</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #c800a3">if</span> [ $# -eq <span style="color: #2f00dd">2</span> ]; <span style="color: #c800a3">then</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">        </span>BAD_BLOCK_BEGINNING=$<span style="color: #2f00dd">1</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">        </span>BAD_BLOCK_END=$<span style="color: #2f00dd">2</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>echo </span>"bad block beginning $BAD_BLOCK_BEGINNING"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>echo </span>"bad block ending $BAD_BLOCK_END"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); ">#if there aren't exactly 2 arguments then print the usage to the user</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(200, 0, 163); ">else</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>echo </span>"usage: remove_bad.sh beginning_block ending_block"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(200, 0, 163); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>exit</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(200, 0, 163); ">fi</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">remove file from last run</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #c800a3">if</span><span style="color: #000000"> ( test -e </span>"./naughty_list.txt"<span style="color: #000000">) </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(200, 0, 163); ">then</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>echo </span>"removing the previous naughty list"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>rm </span>"./naughty_list.txt"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(200, 0, 163); ">fi</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000">IFS=$</span><span style="color: #e00000">'\n'</span><span style="color: #000000"> </span>#set the field separator to the carriage return character</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000">ALL_FILES=(</span><span style="color: #e00000">`find /export/vol5 -type f`</span><span style="color: #000000">) </span>#A list of all files on the volume, SUBSTITUTE NAME OF YOUR VOLUME</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000">NUM_FILES=${</span>#ALL_FILES[@]} #The number of files on the volume</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000">echo </span><span style="color: #e00000">"number of files is $NUM_FILES"</span><span style="color: #000000"> </span>#Report the number of files to the user</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "># for each of the file in vol5</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #c800a3">for</span> (( COUNT=<span style="color: #2f00dd">0</span>; COUNT<$NUM_FILES; COUNT++))</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(200, 0, 163); ">do</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"> <span class="Apple-tab-span" style="white-space:pre">        </span></span>#Report which file is being worked on</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>echo </span>"file number: $COUNT is ${ALL_FILES[$COUNT]}"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span># report number of files to go</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">        </span>FILES_TO_GO=$((NUM_FILES-COUNT))</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>echo </span>"files left: $FILES_TO_GO"<span style="color: #000000"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"> <span class="Apple-tab-span" style="white-space:pre">        </span></span>#Run xfs_bmap to get the blocks that the file lives within</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>OUTPUT=(</span>`xfs_bmap ${ALL_FILES[$COUNT]}`<span style="color: #000000">)</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span># output looks like this</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span># vol5dump:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span># 0: [0..1053271]: 5200578944..5201632215</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>BAD_FILE=</span><span style="color: #2f00dd">0</span><span style="color: #000000"> </span>#Initialize the bad file flag</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>NUM_LINES=${</span>#OUTPUT[@]} #The number of lines from xfs_bmap</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span># echo "number of lines for file: $NUM_LINES" #Report the number of lines to the user</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"> <span class="Apple-tab-span" style="white-space:pre">        </span></span>#Loop through each line</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #c800a3">for</span> (( LINE=<span style="color: #2f00dd">1</span>; LINE < $NUM_LINES; LINE++))</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(200, 0, 163); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>do</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span># echo "line number $LINE: output: ${OUTPUT[$LINE]}" #Report the current working line</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span># get the block range from the line</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span>BLOCKS=</span>`echo ${OUTPUT[$LINE]} | cut -d':' -f3`</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"> <span class="Apple-tab-span" style="white-space:pre">        </span> <span class="Apple-tab-span" style="white-space:pre">        </span></span>#Report the number of blocks occupied</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span># echo "blocks after cut: '$BLOCKS'" </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"> <span class="Apple-tab-span" style="white-space:pre">        </span></span>#Use cut to get the first and last block for the file</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span>FIRST_BLOCK=</span>`echo $BLOCKS | cut -d'.' -f1`<span style="color: #000000"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span>LAST_BLOCK=</span>`echo $BLOCKS | cut -d'.' -f3`</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"><span class="Apple-tab-span" style="white-space:pre">                </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"> <span class="Apple-tab-span" style="white-space:pre">        </span></span>#Report these to the user</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span># echo "beginning block: $FIRST_BLOCK"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span># echo "ending block: $LAST_BLOCK"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span>#TODO: I'm not sure what exactly 'hole' means, but I get the impression that it has something</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span>#to do with XFS's way of avoiding file fragmentation. TAO</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span><span style="color: #c800a3">if</span><span style="color: #000000"> [ </span><span style="color: #e00000">"$BLOCKS"</span><span style="color: #000000"> != </span><span style="color: #e00000">" hole"</span><span style="color: #000000"> ]; </span><span style="color: #c800a3">then</span><span style="color: #000000"> </span>#Don't deal with lines that report 'hole'</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                        </span></span># compare to bad block region</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                        </span></span>#For now, check whether the blocks for the file fall within the user-given block range</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                        </span></span>#if any of the blocks do, then mark this file as bad.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span> <span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #c800a3">if</span><span style="color: #000000"> ( (( </span>"$BAD_BLOCK_BEGINNING"<span style="color: #000000"> <= </span>"$FIRST_BLOCK"<span style="color: #000000">)) && (( </span>"$FIRST_BLOCK"<span style="color: #000000"> <= </span>"$BAD_BLOCK_END"<span style="color: #000000">)) ); </span><span style="color: #c800a3">then</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                                </span> </span># echo "hit first criterium"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                                </span> BAD_FILE=<span style="color: #2f00dd">1</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                                </span> <span style="color: #c800a3">break</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span> <span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #c800a3">elif</span><span style="color: #000000"> ( (( </span>"$BAD_BLOCK_BEGINNING"<span style="color: #000000"> <= </span>"$LAST_BLOCK"<span style="color: #000000">)) && (( </span>"$LAST_BLOCK"<span style="color: #000000"> <= </span>"$BAD_BLOCK_END"<span style="color: #000000">)) ); </span><span style="color: #c800a3">then</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                                </span> </span># echo "hit second criterium"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                                </span> BAD_FILE=<span style="color: #2f00dd">1</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                                </span> <span style="color: #c800a3">break</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                </span> <span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #c800a3">fi</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #c800a3">fi</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(200, 0, 163); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>done</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span># add the file to the list of bad files</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #c800a3">if</span> (($BAD_FILE == <span style="color: #2f00dd">1</span>)); <span style="color: #c800a3">then</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"> </span>#Report to the user that the current file is bad</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span>echo </span>"putting file: ${ALL_FILES[$COUNT]} on the naughty list"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 139, 0); "><span style="color: #000000"> </span>#Write the file's name to the list</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">                </span>echo <span style="color: #e00000">"${ALL_FILES[$COUNT]}"</span> >> naughty_list.txt</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(200, 0, 163); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>fi</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(200, 0, 163); ">done</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(224, 0, 0); "><span style="color: #000000">echo </span>"program_ended_succesfully"<span style="color: #000000"> >> naughty_list.txt</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div></div></body></html>