一覧 検索 最終更新 改名 | ヘルプ | 最終更新のRSS |

NEC Express5800/110Gd/ATAドライバによるHDD相性問題 のバックアップ差分(No.1)


 -&size(14){''ATA ドライバによる HD ドライブ相性問題''};
 Seagate 製 [[Barracuda 7200.7 (160GB):http://www.seagate.com/support/disc/manuals/sata/cuda7200_sata_pm.pdf]] / [[Barracuda 7200.7 Plus (200GB):http://www.seagate.com/support/disc/manuals/ata/cuda7200pm.pdf]] 、日立 (HGST) 製 [[P7K500:http://www.hitachigst.com/portal/site/jp/menuitem.7f60d6528bc4715c21386293eac4f0a0/]] シリーズ等と、Intel 製等の [[ATA ドライバとの相性問題:http://www.hitachigst.com/hddt/knowtree.nsf/cffe836ed7c12018862565b000530c74/b531b8bce8745fb78825740f00580e23?OpenDocument]]が報告されている。
 --対象ドライブ: HDP7250xxGLA360/380 等
 --対策
 ---Windows 添付の ATA ドライバ (Vista用AHCI/IDE、XP用IDE)を使用する。
 ---IMSM (Intel® Matrix Strage Manager) 8.0 以降の AHCI ドライバなら修正されている???
 ---Linux 系では ATA ドライバ (libata) にパッチを当てる。
 ata.h 内 (block + n_block -1) の -1 を取る。
  static inline int lba_28_ok(u64 block, u32 n_block)
  {
  	/* check the ending block number */
  	return ((block + n_block - 1) < ((u64)1 << 28)) && (n_block <= 256);
  }
 ---FreeBSD 系では 6.3-Release / 7.0-Release、FreeNAS 系では 0.69Beta 以降で、[[ソースコードが修正されている:http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/ata/ata-all.c#rev1.280]]。
 /sys/dev/ata/ata-all.c
  --- src/sys/dev/ata/ata-all.c  2007/02/23 16:25:08     1.279
  +++ src/sys/dev/ata/ata-all.c  2007/10/04 19:17:15     1.280
  @@ -25,7 +25,7 @@
    */
  
   #include <sys/cdefs.h>
  -__FBSDID("$FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/dev/ata/ata-all.c,v 1.279 2007/02/23 16:25:08 jhb Exp $");
  +__FBSDID("$FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/dev/ata/ata-all.c,v 1.280 2007/10/04 19:17:15 sos Exp $");
  
   #include "opt_ata.h"
   #include <sys/param.h>
  @@ -738,7 +738,7 @@ ata_modify_if_48bit(struct ata_request *
  
       atadev->flags &= ~ATA_D_48BIT_ACTIVE;
  
  -    if ((request->u.ata.lba >= ATA_MAX_28BIT_LBA ||
  +    if (((request->u.ata.lba + request->u.ata.count) >= ATA_MAX_28BIT_LBA ||
          request->u.ata.count > 256) &&
         atadev->param.support.command2 & ATA_SUPPORT_ADDRESS48) {
 
 --原因
 ---LBA28/48bit を動的に切り替えるドライバで、LBA28 でセクタアドレス 0x0FFFFFFF (規格外)を指定した時にエラーとなる。
 --障害内容
 ---ビッグ・ドライブ(通常128GB)境界を跨いでFormatするとフリーズする、CHKDSKでエラーになる等。
 ---CygwinやUNIX環境では「dd if=/dev/sda bs=512 count=128 skip=268435400 > /dev/null」でエラー?
 ---DiskProbeにてセクタ268435455(0xFFFFFFF)を読むと、エラー/セクタ0と同じ内容/ランダムに内容が変わる等。
 

(HTML conversion costs 0.006 sec.)