[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

newfs: ioctl (WDINFO): Invalid argument, newfs /dev/rwd0a can't re....



>                                            千葉市中央区長洲
>                                                    藤原  誠

Apple Partition を持った disk の場合、newfs をすると、次のよう
な表示が出ます。
  newfs: ioctl (WDINFO): Invalid argument
  newfs: /dev/rwd0a: can't rewrite disk label
僕は、これはそういうものだから、無視をすればいいと思って来ました。
実際手で起動する限り、これで問題はないと思っています。

しかし、例えば sysinst の中から newfs をする時には、これの戻り値
が、「正常ではない」と思われて、

 Status: Failed
Command: /sbin/newfs /dev/rwd0a
 Press any key to continue

なんていうことになってしまいます。こういう時はどうするのがいいの
でしょうか。

1. sysinst の中で戻り値を無視するようにする。
  (これは無条件にやると、当然うまくありません)
2. sysinst の中で自前で newfs する
3. newfs.c を変更して、そういう時には WDINFO しないようにする。
4. ioctl を変更して、そういう時は何もしないようにする
5. ioctl を変更して、正しく rewrite するようにする。
6. その他

5. 番が正解のような気もするのですが... 大変そう。

それと、ioctl() の src はどこにあるのでしょうか。(いつも済みません)

/usr/src/sbin/newfs/newfs.c から。
---------------------------------------------------------------
657 static void
658 rewritelabel(char *s, volatile int fd, struct disklabel *lp)
659 /* XXX why is fd volatile?! */
660 {
661 #ifdef COMPAT
662         if (unlabeled) 
663                 return;
664 #endif
665         lp->d_checksum = 0;
666         lp->d_checksum = dkcksum(lp);
667         if (ioctl(fd, DIOCWDINFO, (char *)lp) < 0) { 
668                 warn("ioctl (WDINFO)");
669                 errx(1, "%s: can't rewrite disk label", s);
670         }
671 #if __vax__
---------------------------------------------------------------
sysinst の変更は何故か 14k Bytes もあるのと、結局まだ途中で、
中身はまだ相当非道いものなので、Web に置いておくだけにします。

http://www.ki.nu/~makoto/diary/attach/2001-06-24-sysinst
---
(藤原)
http://www.ki.nu/software/NetBSD/iBook2/