Note: You can jump to [Fixing the problem] directly and skip the hole stoy if you want.

[Introduction]

Two days ago I started my computer as usual and after an hour or so I tried to open Chromium web broser and nothing happened. Then I tried to open a console and it opened normally but when I typed "tailf /var/log/syslog" a Input/Output Error was displayed and nothing else happened. Typed "ls" and it worked. Typed "touch foo", I got an error saying that the hard drive was mounted un read-only mode (¿?) and the comand was exited with error.

Fine. I LOVE problems with hard drives [mode_irony=on].

Luckly, I had made a backup to my external hard drive just a few days ago. But the v4 SSD from Crucial had costed me about 300$USD and I just bought it one and a half yaer ago. I was a little bit upset about that because I cannot pay that amount of money every year. Luckly I had three years warranty.

[Investigating]

I noticed that after a hard reset (because the comand halt or init 0 didn't worked at all) the hard driver worked about one hour more, and then it remount itself to read-only mode. I checked syslog and see:

ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen  
ata1.00: failed command: FLUSH CACHE  
ata1.00: cmd e7/00:00:00:00:00/00:00:00:00:00/a0 tag 0  
res 40/00:00:00:00:00/00:00:00:00:00/40 Emask 0x4 (timeout)  
ata1.00: status: { DRDY }  
ata1: hard resetting link  
ata1: link is slow to respond, please be patient (ready=0)  
ata1: COMRESET failed (errno=-16)  
ata1: hard resetting link  
ata1: link is slow to respond, please be patient (ready=0)  
ata1: COMRESET failed (errno=-16)  
ata1: hard resetting link  
ata1: link is slow to respond, please be patient (ready=0)  
ata1: COMRESET failed (errno=-16)  
ata1: limiting SATA link speed to 1.5 Gbps  
ata1: hard resetting link

Ok, if the HDD if in read-only mode I can try to remount it, right?

$ sudo mount -o remount,rw /  
mount: cannot remount block device /dev/sda read-write, is
write-protected

No, I can't. Crap. Now what? Well, the obvious thing to do is to try to run fsck. You can do by typing:

$ sudo touch /forcefsck
$ reboot

This way we are forcing a fsck in the next reboot. I had no errors in this process. With all of this, evey our the system just get hanged and I had to hard-reset it in order to be able to keep doing more tests. I backed up my latest stuff and I removed all the stuff "not necessary". Went from 80 GiB used to 25GiB just for freeing space and see what happens. Well, next step? I cheked up the SSD looking for bad blocks the badblocks:

$ sudo badblocks -svb 4096 /dev/sda  
Checking blocks 0 to 31258709  
Checking for bad blocks (read-only test): done  
Pass completed, 0 bad blocks found. (0/0/0 errors)

No errors too. Fine. Next, check if SMART is saying me something of interest.

$ sudo smartctl -a /dev/sda

[..... CUTTED ....]

Device Model:     M4-CT128M4SSD2  
LU WWN Device Id: 5 00a075 103[......]  
Firmware Version: 0001  
User Capacity:    128,035,676,160 bytes [128 GB]  
Sector Size:      512 bytes logical/physical  
Device is:        Not in smartctl database [for details use: -P
showall]  
ATA Version is:   8  
ATA Standard is:  ATA-8-ACS revision 6  
Local Time is:    Tue Jan 15 20:38:53 2013 CET  
SMART support is: Available - device has SMART capability.  
SMART support is: Enabled

[...... CUTTED .... ]

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE     
UPDATED  WHEN_FAILED RAW_VALUE  
1 Raw_Read_Error_Rate     0x002f   100   100   050    Pre-fail 
Always       -       0  
5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail 
Always       -       0  
9 Power_On_Hours          0x0032   100   100   001    Old_age  
Always       -       5868  
12 Power_Cycle_Count       0x0032   100   100   001    Old_age  
Always       -       1718  
170 Unknown_Attribute       0x0033   100   100   010    Pre-fail 
Always       -       0  
171 Unknown_Attribute       0x0032   100   100   001    Old_age  
Always       -       0  
172 Unknown_Attribute       0x0032   100   100   001    Old_age  
Always       -       0  
173 Unknown_Attribute       0x0033   100   100   010    Pre-fail 
Always       -       21  
174 Unknown_Attribute       0x0032   100   100   001    Old_age  
Always       -       2

[.... CUTTED ....]

SMART Error Log Version: 1  
No Errors Logged

Ooooooook. Here I saw two things. First the Firmware Version = 0001 (Spoiler= Yes, It was f*kings firmware) and then the Power_On_Hours =5868. Nearly 6K hours. About 245 days using the HDD 24/7. Not bad. About 11 hours a day on average staying on the cumputer. I need a girlfirend.

Googling arround, I found this Crucial thread and that was it. The firmare version 0001 has  a problem and the next version of the firmware fixes the problem.

[Fixing the problen]

Is as easy as pee. Just upgrade the firmware to the newest version. You can upgrade the firmware from 0001 version to the lattest version without problem using the tools provided by Crucial. If you are using Windows download the program that will do the upgrade for you, and if you are using Linux you can do the upgrade too downloading a ISO and "burning it" to a USB using unetbootin, for example. Then reboot the computer, load from the USB and enjoy seeing how your harddrive is being upgrade. I had no problems doing it and Crucial promises that you will have no data loss unless you have a problem and the computer loses its power because you will end up with a unrecoverable HDD. Do a back up if you don't have it yet, please!!

And this is it, I just freaked out when I thought that the SDD was broken because I love it, and luckly the problem has been solved without major issues. Take care.