トップ «前の日(03-06) 最新 次の日(03-08)» 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2010-03-07

_ [雑記]石丸電気売り尽くしセール

覗いてきてみた。

やはり、HGST 2TB 12k円は売り切れの模様(秋葉原までの移動コスト考えると破格に安いし)だったが、在庫潤沢だった太陽誘電のDVD-Rスピンドル 50枚 2.2k円は比較的安い部類だと思う


2011-03-07

_ [SAD]afsad2&3稼働開始

afsad2/3は、gptzfsbootな運用を開始したので、afsad1も gptzfsboot化 しようとしたものの失敗(pmbr→gptzfsbootまでは起動するが、BIOSエラーで zpoolを読み込めない)

ベンダが同じとはいえ、afsad1と afsad2/3でモデルが違う(Xeon VS Opteron) ので BIOSまわりの動作が異なっている?

あとは、Diskの容量の違いくらいか?(300GB VS 147GB)

_ [FreeBSD]Firefox 3.6 + OpenJDK6に移行

長らく JAVA Pluginのために Firefox 3.5 + JDK6だったところを IceTeaPluginを使って Firefox 3.6 + OpenJDK6に移行した。

一部の重いページが劇的に軽くなったが、Bookmark Menuのプルダウンの向きか 変わっていて戸惑う Orz


2013-03-07

_ [FreeBSD]recoverdisk errata

FreeBSD/amd64環境にて、sectorsizeが non-zeroかつ stripsizeが zeroの レアケースで発生するrecoverdiskのerrataです

stable/9で見つけましたが、headにも同様の問題があると思われる

  • Cではioctl(2)のような任意引数を受ける APIで型検査が出来ない
  • DIOCGSECTORSIZE/DIOCGSTRIPESIZE ioctlは u_int/off_t型を書き戻す
  • LP64環境では、u_intは 32bit unsigned int、off_tは 64bit signed intである
  • stripesize/sectorsizeの順に連続した領域に割り当てられている(コンパイラ依存)

結果として、ioctl(fdr, DIOCGSECTORSIZE, &sectorsize)の呼び出し後に ioctl(fdr, DIOCGSTRIPESIZE, &stripesize)を呼び出した時点で、sectorsize が上書きされて zeroになり bigsize = (bigsize / sectorsize) * sectorsize にて除算例外が発生する

diskinfoは正しく実装されてるのでケアレスミスの類ですが off_t型を返す ioctlの実装が直感的では無い気がします

DIOCGSTRIPESIZEと対になるDIOCGSTRIPEOFFSETが off_t型を返すのは当然ですが、 値の範囲は stripe offsetと同じなので同じ型なのだと思いますが、 本来は DIOCGSECTORSIZE/DIOCGSTRIPESIZE共に size_t型で戻す方が 現代的な Cの型システム的には自然に思えます

Index: sbin/recoverdisk/recoverdisk.c
===================================================================
--- sbin/recoverdisk/recoverdisk.c	(revision 247904)
+++ sbin/recoverdisk/recoverdisk.c	(working copy)
@@ -156,7 +156,7 @@
 	int error, state;
 	u_char *buf;
 	u_int sectorsize;
-	u_int stripesize;
+	off_t stripesize;
 	time_t t1, t2;
 	struct stat sb;
 	u_int n, snapshot = 60;

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記