diff options
author | Michael Hanson <hansonorders@verizon.net> | 2010-11-24 02:40:41 (GMT) |
---|---|---|
committer | Michael Hanson <hansonorders@verizon.net> | 2010-11-24 02:40:41 (GMT) |
commit | 12f50dbca6bf0191cd62445c036c8f8aa2e5f620 (patch) | |
tree | 72db7de082e902627ac874f5e97dbe7eb569a39d /abs/core/hdparm/wiper.sh.2_6.max-ranges.patch | |
parent | 675a0c5dea31728d72485d0e296e673c4969c427 (diff) | |
download | linhes_pkgbuild-12f50dbca6bf0191cd62445c036c8f8aa2e5f620.zip linhes_pkgbuild-12f50dbca6bf0191cd62445c036c8f8aa2e5f620.tar.gz linhes_pkgbuild-12f50dbca6bf0191cd62445c036c8f8aa2e5f620.tar.bz2 |
hdparm: upgrade
Diffstat (limited to 'abs/core/hdparm/wiper.sh.2_6.max-ranges.patch')
-rw-r--r-- | abs/core/hdparm/wiper.sh.2_6.max-ranges.patch | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/abs/core/hdparm/wiper.sh.2_6.max-ranges.patch b/abs/core/hdparm/wiper.sh.2_6.max-ranges.patch new file mode 100644 index 0000000..61d197b --- /dev/null +++ b/abs/core/hdparm/wiper.sh.2_6.max-ranges.patch @@ -0,0 +1,84 @@ +--- hdparm-9.28/wiper/wiper.sh.orig 2010-03-09 06:17:37.000000000 -0800 +--- hdparm-9.28/wiper/wiper.sh 2010-05-15 03:08:02.182856971 -0700 +@@ -29,7 +29,7 @@ + function usage_error(){ + echo >&2 + echo "Linux tune-up (TRIM) utility for SATA SSDs" +- echo "Usage: $0 [--verbose] [--commit] <mount_point|block_device>" >&2 ++ echo "Usage: $0 [--max-ranges <num>] [--verbose] [--commit] <mount_point|block_device>" >&2 + echo " Eg: $0 /dev/sda1" >&2 + echo >&2 + exit 1 +@@ -44,6 +44,7 @@ + + export verbose=0 + commit="" ++max_ranges=-1 + argc=$# + arg="" + while [ $argc -gt 0 ]; do +@@ -51,6 +52,10 @@ + commit=yes + elif [ "$1" = "--verbose" ]; then + verbose=$((verbose + 1)) ++ elif [ "$1" = "--max-ranges" -a $argc -gt 1 ]; then ++ max_ranges=$2 ++ argc=$((argc - 1)) ++ shift + elif [ "$1" = "" ]; then + usage_error + else +@@ -499,6 +550,18 @@ + fi + fi + ++## Different SSD's have a different maximum number of ranges they'll accept ++## in a single TRIM command. ++if [ $max_ranges -le 0 ] ; then ++ model=`$HDPARM -I $rawdev | $GAWK '/Model Number/ { print $NF }'` ++ case "$model" in ++ SSDSA[12]*) max_ranges=512 ;; # Intel X18-M/X25-M ++ OCZ-VERTEX2) max_ranges=64 ;; # OCZ Vertex2 ++ *) max_ranges=65535 ++ esac ++fi ++[ $verbose -gt 0 ] && echo "max-ranges = $max_ranges" ++ + ## All ready. Now let the user know exactly what we intend to do: + ## + mountstatus="$fstype non-mounted" +@@ -608,7 +671,7 @@ + nsectors += count; + while (count > 0) { + this_count = (count > 65535) ? 65535 : count +- printf "%u:%u ", lba, this_count ++ printf "%u:%u \n", lba, this_count + if (verbose > 1) + printf "%u:%u ", lba, this_count > "/dev/stderr" + lba += this_count +@@ -695,6 +758,22 @@ + -v verbose="$verbose" \ + -v xfs_blksects="$xfs_blksects" \ + -v xfs_agoffsets="$xfs_agoffsets" \ +- "$GAWKPROG" | $TRIM ++ "$GAWKPROG" | ( ++ i=0 ++ while read range ; do ++ ranges=$ranges" "$range ++ ((i++)) ++ if [ $i -ge $max_ranges ] ; then ++ [ $verbose -gt 0 ] && echo -e "Trim ranges:"$ranges"\n" ++ echo $ranges | $TRIM ++ ranges="" ++ i=0 ++ fi ++ done ++ if [ $i -gt 0 ] ; then ++ [ $verbose -gt 0 ] && echo -e "Trim ranges:"$ranges"\n" ++ echo $ranges | $TRIM ++ fi ++ ) + + do_cleanup $? + + |