F8x86_64 on the Acer Ferrari 3400LMi
4.1 Potential problems
There are no problems regarding loading modules or mounting an external IEEE
1394 drive, and if you are patient you managed to browse the content as well.
The problems starts when you try to transfer larger amounts of data. The process
stalls and chokes up the system log with messages like:
kernel: ieee1394: sbp2: aborting sbp2 command
kernel: scsi1 : destination target 0, lun 0
kernel: command: Write (10): 2a 00 02 e1 bc 58 00 00 10 00
kernel: ieee1394: sbp2: aborting sbp2 command
kernel: scsi1 : destination target 0, lun 0
kernel: command: Write (10): 2a 00 02 e1 bc 58 00 00 10 00
kernel: ieee1394: sbp2: aborting sbp2 command
kernel: scsi1 : destination target 0, lun 0
kernel: command: Test Unit Ready: 00 00 00 00 00 00
kernel: ieee1394: sbp2: reset requested
kernel: ieee1394: sbp2: Generating sbp2 fetch agent reset
redneck kernel: ieee1394: sbp2: aborting sbp2 command
kernel: scsi1 : destination target 0, lun 0
kernel: command: Write (10): 2a 00 01 06 d0 df 00 00 03 00
kernel: ieee1394: sbp2: aborting sbp2 command
kernel: scsi1 : destination target 0, lun 0
kernel: command: Write (10): 2a 00 01 06 d0 df 00 00 03 00
kernel: ieee1394: sbp2: aborting sbp2 command
kernel: scsi1 : destination target 0, lun 0
kernel: command: Write (10): 2a 00 02 e1 bd b0 00 00 20 00
Seems to me like a hole bunch of timeouts with corresponding bus resets. These
suspicions got even stronger after timing a read data transfer:
# time cp rp /media/ieee1394disk/430MB_folder
~
real 20m29.516s
user 0m0.052s
sys 0m6.476s
Copying 430 MB takes 20 minutes 29 seconds (comparable to USB 1.0
performance). However, the “actual” time is less than 7 seconds. 20 minutes and
22 seconds are spent waiting. Waiting for what? I do not know, but obviously
some bits and pieces fail during the transfer. Furthermore, I do not feel
comfortable with the data integrity when I see these kind of results.
After some digging in the kernel documentation and a quick look in the
sbp2.c
source file it turned out that this problem probably is related to a “buggy IEEE
1394 chip” in the external device. The proposed solution is to load the
sbp2
module with the argument
serialize_io=1
. It turned out really well, so here are
some tips regarding the IEEE 1394 configuration.
7