Notice
Please scroll down for the answer (it has few points but it is the correct one). The problem is solved by a patch that will be in kernel 3.12.7 and up; I hope it will back-ported to earlier ones, too.
My laptop is a Samsung Chronos serie s 7. Ubuntu Gnome Remix 13.04, with Intel updated drivers.
I have a problem with the internal SSD drive (8G capacity). It fails with COMRESET and input/output errors. I am quite convinced that the problem is hardware; unfortunately I do not have Windows installed in the laptop to check if it's a matter of SSD configuration or whatever.
The problem is that the disk is recognized by udev:
KERNEL[9.515930] add /devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb (block)
ACTION=add
DEVNAME=sdb
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb
DEVTYPE=disk
MAJOR=8
MINOR=16
SEQNUM=1785
SUBSYSTEM=block
UDEV_LOG=3and after that it fails in a lot of checks, delaying boot, delaying shutdown, and making (I think) suspend impossible.
Is it possible to tell Linux to completely ignore anything on the ata2 link? I tried adding this line to /etc/udev/rules.d/10-local.rules
SUBSYSTEMS=="pci" DRIVERS=="ahci" KERNELS=="ata2" OPTIONS=="ignore_device"but it doesn't work.
On the other hand, if anyone knows how to reset the SSD if it was left in "cache" mode without using Windows... or to boot a "live" windows to do the same...
Thanks!
Data added:
Full udevadm info -a -n /dev/sdb pasted to
smartctl -i /dev/sdb -T permissive gives:
root@samsung-romano:/home/romano# smartctl -i /dev/sdb -T permissive
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-3.8.0-31-generic] (local build)
Copyright (C) 2002-12 by Bruce Allen,
Vendor: /1:0:0:0
Product:
User Capacity: 600,332,565,813,390,450 bytes [600 PB]
Logical block size: 774843950 bytes
>> Terminate command early due to bad response to IEC mode pagewhich is clearly wrong. Nevertheless:
root@samsung-romano:/home/romano# fdisk -b 512 -C 970 -H 256 -S 63 /dev/sdb
fdisk: unable to read /dev/sdb: Input/output error(SSD data from ).
ADDITIONAL THOUGHT:
Could all this being a side effect of the Intel Smart Response Technology not being disabled before installing Linux? If yes, how can I check it short of reinstalling a windows on the machine? Or this is a shot in the dark? (In the bios the SSD drive doesn't show and there is nothing about Intel SRT).
ABOUT MARKING AS DUPLICATE:
I changed the title of the question; I do not think that the linked question answers my problem. I positively know that the SSD is failing. I am asking if it's possible to tell the linux kernel to not probe for it at all.
86 Answers
Two solutions here: one is fast to apply, although solves the problem only partially, the other one is the complete one but requires you to compile your own kernel.
The correct answer is a kernel patch.
Robin H. Johnson wrote a patch for the SATA kernel driver (find it in Unix/Linux stack exchange site) which hides completely the drive.
Update 1 The patch is now upstream (at least in 3.12.7 stable kernel), see the git repository. I asked for backport in the Ubuntu launchpad.
Update 2 The patch is in the standard kernel for Ubuntu Trusty Thar 14.04; so now only the following addition to boot parameter is needed.
Once the patch is installed, adding
libata.force=2.00:disableto the kernel boot parameters will hide the disk from the Linux kernel. Double check that the number is correct; searching for the device name can help:
(0)samsung-romano:~% dmesg | grep iSSD
[ 1.493279] ata2.00: ATA-8: SanDisk iSSD P4 8GB, SSD 9.14, max UDMA/133
[ 1.494236] scsi 1:0:0:0: Direct-Access ATA SanDisk iSSD P4 SSD PQ: 0 ANSI: 5To add a kernel parameter (bot temporarily and permanently) you can check this Q&A: How do I add a kernel boot parameter?
Workaround
At least the problem of enabling suspend-resume has been solved by by Unix StackExchange user Emmanuel in . As root, issue the command:
echo 1 > /sys/block/sdb/device/deletebefore suspend.
To make it permanent, add the following file in /etc/pm/sleep.d/ and make it executable:
-rwxr-xr-x 1 root root 204 Dec 6 16:03 99_delete_sdbwith content:
#!/bin/sh
# Delete the failing disk so that it will not block suspend
case "$1" in suspend|hibernate) if [ -d /sys/block/sdb ]; then echo 1 > /sys/block/sdb/device/delete fi ;;
esac...and now the system suspends (and resume) correctly.
4You can try to create the udev rule with the following information (output of udevadm info -a -n /dev/sdb).
INFO:
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0': KERNELS=="1:0:0:0" SUBSYSTEMS=="scsi" DRIVERS=="sd" ATTRS{rev}=="SSD " ATTRS{type}=="0" ATTRS{scsi_level}=="6" ATTRS{model}=="SanDisk iSSD P4 " ATTRS{state}=="running" ATTRS{queue_type}=="none" ATTRS{iodone_cnt}=="0x309" ATTRS{iorequest_cnt}=="0x30a" ATTRS{queue_ramp_up_period}=="120000" ATTRS{timeout}=="30" ATTRS{evt_media_change}=="0" ATTRS{ioerr_cnt}=="0x1d6" ATTRS{queue_depth}=="1" ATTRS{vendor}=="ATA " ATTRS{device_blocked}=="0" ATTRS{iocounterbits}=="32"1) Create the udev rule.
sudo nano /etc/udev/rules.d/99-hide-ssd.rules
You can try to match the "SUBSYSTEMS" &"DRIVERS" keys, and "ATTRS{rev}" & ATTRS{model} attributes, then assign the "UDISKS" variable to ignore it.
The content of the 99-hide-ssd.rules file would be:
SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{rev}=="SSD ", ATTRS{model}=="SanDisk iSSD P4 ", ENV{UDISKS_IGNORE}="1"
To save the changes in nano... Ctrl+O, then Enter and finally Ctrl+X.
2) Finally refresh the udev rules with:
sudo udevadm trigger
NOTE: With the ENV{UDISKS_IGNORE}="1" it will ignore the disk for Ubuntu 12.10 & 13.04.
For Ubuntu 12.04 the variable would be ENV{UDISKS_PRESENTATION_HIDE}="1".
Hope this helps.
3suggests in part:
As root, open up /etc/udev/rules.d/60-persistent-storage.rules with your favorite text editor.
A few lines down, you'll probably see a line that looks like this:
skip rules for inappropriate block devices
KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md", GOTO="persistent_storage_end"Add "sdb*" to that second line, so it looks like this:
KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md|sdb*", GOTO="persistent_storage_end"
Save, reboot, and maybe it works. If not, well, is this post-warranty?
2If your other disks are not using ahci, or aren't SSD, you may remove the kernel driver for them.
to remove for that session (until the next reboot), run:
sudo rmmod ahcito reload it, run:
sudo modprobe ahciif you see that everything is going fine, you now can disable it totally (don't load it next boots). open the file /etc/modprobe.d/blacklist.conf, and add the following line:
blacklist ahci to blacklist ssd drivers, just replace ahci with sd
1From what I know of, there is no way to remove the message, other than removing you SSD.
3I went and wrote a kernel patch for you that implements the ability to disable a single disk at boot time, so that you don't need to bother with disabling it in udev, or the waiting during the initial boot.
Should apply to many kernels very easily (the line above it was added 2013-05-21/v3.10-rc1*, but can be safely applied manually without that line).