Skip to contentSkip to conversation

TCQ problems in 2.6.0-test1: the summary

DISCUSSION Ivan Gyurdiev 4 participants 6 messages Jul 20, 2003 – Jul 22, 2003

lore
Share & tools
lore
#0 lore raw

2.6.0-test1-current.
The TCQ bugs/problems that I have found in the kernel have not been addressed yet. Some of the things posted below are new, but most have been posted before, and there have been no replies. If those bug reports are invalid, please say so, and I will stop sending them.

================================================================================

I own an IC35L080AVVA07-0 80 GB drive
(IBM Desktar 120 GXP, which is supposed to support TCQ). TCQ will not be activated on boot unless TCQ is enabled by default.

The problems:

======================================================================================
1) This patch by Jens Axboe makes my machine bootable with tcq enabled. It hasn't been included in the kernel yet.

http://www.ussg.iu.edu/hypermail/linux/kernel/0307.1/1006.html

2) The default for queue depth is commented as 32, but is in fact 8.

3) This is described as a way to set tcq depth in the docs:
echo "using_tcq:32" > /proc/ide/hdX/settings

but it results in: proc_ide_write_settings(): parse error (hdparm -Q works instead)

4) Using a tcq-enabled kernel with queue depth of 8 results in massive filesystem corruption for me, verified under reiserfs, and xfs. Elevator choice does not appear to matter, while queue depth is important - I do not appear to get filesystem corruption with queue depth of 32. Reiser refuses to mount with such a kernel, and runs --fix-fixable at boot time. This is reproducible every time.

5) Using a tcq-enabled kernel causes i/o lockups (disk read/write freezes, while I am still able to move the mouse, type dmesg, etc..). To trigger the partial i/o lockups I set the disk standby to 5 seconds. After waking up the disk, I get numerous errors, and I have also gotten an oops. Attempts to reproduce this with tcq off have failed so far. The errors and oops are posted here:

http://www.ussg.iu.edu/hypermail/linux/kernel/0307.1/1682.html

I also get full system hangs like everybody else, but that doesn't appear to be caused by tcq - have tested without it.

=============================================================================================

I am still keeping an old damaged reiser root filesystem, for the purposes of testing. If there is interest in testing filesystem corruption bugs, I am willing to do that. Please reply, though, because I will eventually destroy that partition if there is no interest.

=============================================================================================
Finally, a comment on buffer-cache read speeds:
they're double what they used to be!
577.80 MB/sec vs 250-ish on 2.4.
That's great - I wondered what causes this improvement? Thanks to all kernel developers.

#1 lore raw
Quoted 12 lines · Ivan Gyurdiev

2.6.0-test1-current.
The TCQ bugs/problems that I have found in the kernel have not been addressed yet. Some of the things posted below are new, but most have been posted before, and there have been no replies. If those bug reports are invalid, please say so, and I will stop sending them.

================================================================================

I own an IC35L080AVVA07-0 80 GB drive
(IBM Desktar 120 GXP, which is supposed to support TCQ). TCQ will not be activated on boot unless TCQ is enabled by default.

Quoted 7 lines

The problems:

======================================================================================
1) This patch by Jens Axboe makes my machine bootable with tcq enabled. It hasn't been included in the kernel yet.

http://www.ussg.iu.edu/hypermail/linux/kernel/0307.1/1006.html

I'll send that in.

Quoted 1 line

2) The default for queue depth is commented as 32, but is in fact 8.

I'll fix that up, too.

Quoted 5 lines

3) This is described as a way to set tcq depth in the docs:
echo "using_tcq:32" > /proc/ide/hdX/settings

but it results in: proc_ide_write_settings(): parse error (hdparm -Q works instead)

Huhm weird, someone has broking the proc parsing. I'll look into that. -Q does the same thing, as you know.

Quoted 6 lines

4) Using a tcq-enabled kernel with queue depth of 8 results in massive filesystem corruption for me, verified under reiserfs, and xfs. Elevator choice does not appear to matter, while queue depth is important - I do not appear to get filesystem corruption with queue depth of 32. Reiser refuses to mount with such a kernel, and runs --fix-fixable at boot time. This is reproducible every time.

This is really strange. The only difference between using 8 or 32 tags is when ide-disk stops attempting to queue. Are you getting any errors in dmesg when this happens? Reading the start io path for this, it looks correct to me. I'll have to try and reproduce when I get back.

Quoted 8 lines

5) Using a tcq-enabled kernel causes i/o lockups (disk read/write freezes, while I am still able to move the mouse, type dmesg, etc..). To trigger the partial i/o lockups I set the disk standby to 5 seconds. After waking up the disk, I get numerous errors, and I have also gotten an oops. Attempts to reproduce this with tcq off have failed so far. The errors and oops are posted here:

http://www.ussg.iu.edu/hypermail/linux/kernel/0307.1/1682.html

Noted, that is something I haven't tested.

Quoted 4 lines

I am still keeping an old damaged reiser root filesystem, for the purposes of testing. If there is interest in testing filesystem corruption bugs, I am willing to do that. Please reply, though, because I will eventually destroy that partition if there is no interest.

If it's an ide tcq bug, it isn't very interesting. You can safely fry that partition.

Signature · 1 line
Jens Axboe
#2 lore raw
Quoted 11 lines
Quoted 10 lines

4) Using a tcq-enabled kernel with queue depth of 8 results in

massive filesystem corruption for me, verified under reiserfs, and xfs. Elevator choice does not appear to matter, while queue depth is important - I do not appear to get filesystem corruption with queue depth of 32. Reiser refuses to mount with such a kernel, and runs --fix-fixable at boot time. This is reproducible every time.

Quoted 5 lines

This is really strange. The only difference between using 8 or 32 tags is when ide-disk stops attempting to queue. Are you getting any errors in dmesg when this happens? Reading the start io path for this, it looks correct to me. I'll have to try and reproduce when I get back.

On my laptop:

Here is the only thing that is similar on my system. When TCQ is enabled, I have filesystem problems (minimal) every time I reboot and it nearly always affects the same files every time. I too am using reiserfs. I usually run reiserfsck and emerge the particular group of files. For a while it was openssl libraries, now it's kde libraries.

Note, reiserfsck never indicates any problems were found or fixed but the problems are none-the-less fixed. (reiser guys: reiserfsck --fix-fixable always results in "--fix-fixable ignored")

Also note that there is never any indication ever that something is wacky. Just out of the blue a file or files are corrupt and the bootup result is the same every time.

(~) # hdparm -I /dev/hda |head -n10

/dev/hda:

ATA device, with non-removable media

       Model Number:       IC25N030ATCS04-0                       
       Serial Number:      CSL305DAGVK71A
       Firmware Revision:  CA3OA72A

On one of my servers:

TCQ fscks it up bad. It ran for over a month on .73 with nary an issue then all of a sudden it started barfing within hours of boot complaining about:

Jul 19 10:55:31 james hdc: invalidating tag queue (0 commands)
Jul 19 10:55:41 james ide_tcq_intr_timeout: timeout waiting for completion interrupt

and further disk access causes D state. I upgraded this machine to 2.6.0-test1 and now it's having fits with apic or acpi but that's another email. And a side note, if I have TCQ compiled in w/ 2.6.0-test1, the kernel barfs a long 40+ function OOPS on bootup. It's a 24/7 server so I haven't put a serial cable on it to capture the oops yet :/

(~) # hdparm -I /dev/hdc

/dev/hdc:

ATA device, with non-removable media

       Model Number:       IBM-DPTA-372050                        
       Serial Number:      JMYJMFZ1555
       Firmware Revision:  P76OA30A

more if desired.

Other than this, I don't see any filesystem issues.

david

#3 lore raw
Quoted 3 lines

Note, reiserfsck never indicates any problems were found or fixed but the problems are none-the-less fixed. (reiser guys: reiserfsck --fix-fixable always results in "--fix-fixable ignored")

I think it does that when the root fs is mounted - not sure. You should fsck from a different root.

Quoted 2 lines
Jul 19 10:55:31 james hdc: invalidating tag queue (0 commands)
Jul 19 10:55:41 james ide_tcq_intr_timeout: timeout waiting for completion interrupt

Yes - that's in my original email.

Quoted 1 line

and further disk access causes D state. I upgraded this machine to 2.6.0-test1 and now it's having fits with apic or acpi but that's another email. And a side note, if I have TCQ compiled in w/ 2.6.0-test1, the kernel barfs a long 40+ function OOPS on bootup.

Jens's patch in my email should fix that.
However, TCQ seems rather broken to me right now (or maybe it's just my machine) - so I'd be careful with it.

#4 lore raw
Quoted 6 lines · Ivan Gyurdiev
Quoted 1 line

Note, reiserfsck never indicates any problems were found or fixed

but the problems are none-the-less fixed. (reiser guys: reiserfsck --fix-fixable always results in "--fix-fixable ignored")

I think it does that when the root fs is mounted - not sure. You should fsck from a different root.

Right, let me just add a harddrive to my notebook ;)

Quoted 5 lines
Jul 19 10:55:31 james hdc: invalidating tag queue (0 commands)
Quoted 1 line
Jul 19 10:55:41 james ide_tcq_intr_timeout: timeout waiting for completion interrupt
Quoted 8 lines

Yes - that's in my original email.

Quoted 1 line

and further disk access causes D state. I upgraded this machine to 2.6.0-test1 and now it's having fits with apic or acpi but that's another email. And a side note, if I have TCQ compiled in w/ 2.6.0-test1, the kernel barfs a long 40+ function OOPS on bootup.

Jens's patch in my email should fix that.
However, TCQ seems rather broken to me right now (or maybe it's just my machine) - so I'd be careful with it.

noted.

I'm waiting for the next batch of updates, 2.6.0-test1 seems to be quite broken in several places for several of my machines. :/

david

#5 lore raw
In reply to Jens Axboe
Quoted 5 lines

This is really strange. The only difference between using 8 or 32 tags is when ide-disk stops attempting to queue. Are you getting any errors in dmesg when this happens? Reading the start io path for this, it looks correct to me. I'll have to try and reproduce when I get back.

I get filesystem errors.
Well, reiserfs refuses to pass the filesystem check every time with a queue of depth 8. The one time that I decied to bypass it to look for errors, I got a bunch:

http://www.ussg.iu.edu/hypermail/linux/kernel/0307.1/1307.html

XFS will boot, but corrupts the fs after a while, and I got an oops there:

http://www.ussg.iu.edu/hypermail/linux/kernel/0307.1/2583.html

Other than that - no messages.

Quoted 2 lines

If it's an ide tcq bug, it isn't very interesting. You can safely fry that partition.

Already done.