[ltp] scsi vs ata ?
Dmitry E. Mikhailov
linux-thinkpad@linux-thinkpad.org
Tue, 24 Jun 2008 00:03:02 +0600
> The script below errors with:
> syntax error at - line 7, near "first
> open "
> Execution of - aborted due to compilation errors.
Must be new lines made by mail client.
> I did a diff of the scripts and do not see any difference.
I commented out
#DEVNODE=`ultrabay_dev_node` && hdparm -Y $DEVNODE
> Dmitry E. Mikhailov wrote:
> >> Thanks again. That worked.
> >
> > Let's fix the script. Back to the original.
> >
> > Let's try to skip 'nicely' powering down the HDD. I think it could be a
> > problem.
> >
> > Try the next one:
> >
> > #!/bin/bash
> > ULTRABAY_SYSDIR='/sys/class/scsi_device/1:0:0:0/device'
> > shopt -s nullglob
> >
> > # Umount the filesystem(s) backed by the given major:minor device(s)
> > unmount_rdev() { perl - "$@" <<'EOPERL' # let's do it in Perl
> > for $major_minor (@ARGV) {
> > $major_minor =~ m/^(\d+):(\d+)$/ or die;
> > push(@tgt_rdevs, ($1<<8)|$2);
> > }
> > # Sort by reverse length of mount point, to unmount
> > sub-directories first
> > open MOUNTS,"</proc/mounts" or die "$!";
> > @mounts=sort { length($b->[1]) <=> length($a->[1]) } map { [
> > split ] } <MOUNTS>;
> > close MOUNTS;
> > foreach $m (@mounts) {
> > ($dev,$dir)=@$m;
> > next unless -b $dev; $rdev=(stat($dev))[6];
> > next unless grep($_==$rdev, @tgt_rdevs);
> > system("umount","-v","$dir")==0 or $bad=1;
> > }
> > exit 1 if $bad;
> > EOPERL
> > }
> >
> > # Get the UltraBay's /dev/foo block device node
> > ultrabay_dev_node() {
> > UDEV_PATH="`readlink -e "$ULTRABAY_SYSDIR/block:"*`" || return 1
> > UDEV_NAME="`udevinfo -q name -p $UDEV_PATH`" || return 1
> > echo /dev/$UDEV_NAME
> > }
> >
> > if [ -d $ULTRABAY_SYSDIR ]; then
> > sync
> > # Unmount filesystems backed by this device
> > unmount_rdev `cat $ULTRABAY_SYSDIR/block\:*/dev \
> > $ULTRABAY_SYSDIR/block\:*/*/dev` \
> >
> > || {
> >
> > echo 10 > /proc/acpi/ibm/beep; # error tone
> > exit 1;
> > }
> > sync
> >
> > #DMITRY: Let's try NOT to 'nicely' power off the HDD
> > # Nicely power off the device
> > # DEVNODE=`ultrabay_dev_node` && hdparm -Y $DEVNODE
> > # Let HAL+KDE notice the unmount and let the disk spin down
> > # sleep 0.5
> > # Unregister this SCSI device:
> > sync
> > echo 1 > $ULTRABAY_SYSDIR/delete
> > fi
> > sync
> > # Turn off power to the UltraBay:
> > if [ -d /sys/devices/platform/bay.0 ]; then
> > echo 1 > /sys/devices/platform/bay.0/eject
> > elif [ -e /proc/acpi/ibm/bay ]; then
> > echo eject > /proc/acpi/ibm/bay
> > fi
> > # Tell the user we're OK
> > echo 12 > /proc/acpi/ibm/beep