HDDのパーティションのような、固定長のバイト列を取得できるブロックデバイス(ex. /dev/hda1)から
実際のバイト列の長さを求めたいのですが、read()する以外これを実現する方法はありますか?

思いついたのは、先頭から末尾にseekすることにより現在のポジションが
実際のバイト長に等しいことを利用することですが...
あまり賢い方法とは思えません。

よろおね。