Forum: Ruby-dev IO#statfs and File::Statfs

B11f10c4cd9d53970e7be20caa43f940?d=identicon&s=25 unknown (Guest)
on 2014-04-26 16:21
(Received via mailing list)
Issue #9772 has been updated by Akira Tanaka.


Takahiro Kambe wrote:
>  「NetBSD はどうなのかなぁ。」とは、どのような意味でしょう??

NetBSD で動かないのはよろしくないんじゃないか、という意味です。


----------------------------------------
Feature #9772: IO#statfs and File::Statfs
https://bugs.ruby-lang.org/issues/9772#change-46331

* Author: Yui NARUSE
* Status: Assigned
* Priority: Normal
* Assignee: Yukihiro Matsumoto
* Category:
* Target version:
----------------------------------------
IO#statfs and File::Statfs を追加しませんか。
(テストで statfs.f_type が必要だったのでとりあえず追加してしまっていますが)

statfs(2) は Unix 系 OS
でそこそこ普及している、あるパスが属するファイルシステムについての情報を得るためのシステムコールです。
OS によって多少差がありますが、だいたい以下の様な情報が得られます。

     struct statfs {
     uint32_t f_type;                /* type of filesystem */
     uint64_t f_bsize;               /* filesystem fragment size */
     uint64_t f_blocks;              /* total data blocks in filesystem
*/
     uint64_t f_bfree;               /* free blocks in filesystem */
     int64_t  f_bavail;              /* free blocks avail to
non-superuser */
     uint64_t f_files;               /* total file nodes in filesystem
*/
     int64_t  f_ffree;               /* free nodes avail to
non-superuser */
     char      f_fstypename[MFSNAMELEN]; /* filesystem type name */
     };

f_type の値が OS 依存だったり、Linux 以外だとそもそもどれがどの値かきちんと定義されていないとか
ツッコミどころの多い API ではあるのですが、他では得られない情報が得られます。

たとえば、以前から CRuby で使われている用途としては、あるファイルの乗っているファイルシステムが、
HFS+ かどうかがわかります。言い換えると、ファイル名が正規化されているかどうかがわかります。
ありがちな反論として、書き込めば正規化されるかわかるだろうというのがありえますが、
目当てのファイルと同じディレクトリに書き込めるとは限りません。
違うディレクトリだと別のファイルシステムがマウントされている可能性があります。

なお今回の用途は、SEEK\_DATA/SEEK\_HOLEができるか否かを、実際にやってみる以外の方法で知りたかった、というものです。
(Rubyのテストなのにやってみて調べるではテストにあまりならない)
D37d474748a040cddbbc04774701d4ce?d=identicon&s=25 Takahiro Kambe (Guest)
on 2014-04-30 16:38
(Received via mailing list)
In message
<redmine.journal-46331.20140426142125.1b2e3962cfe9fb0b@ruby-lang.org>
  on Sat, 26 Apr 2014 14:21:25 +0000,
  akr@fsij.org wrote:
> Issue #9772 has been updated by Akira Tanaka.
>
>
> Takahiro Kambe wrote:
>>  $B!V(BNetBSD $B$O$I$&$J$N$+$J$!!#!W$H$O!"$I$N$h$&$J0UL#$G$7$g$&(B??
>
> NetBSD $B$GF0$+$J$$$N$O$h$m$7$/$J$$$s$8$c$J$$$+!"$H$$$&0UL#$G$9!#(B
$B$"!"$=$&$$$&0UL#$G$7$?$+!#(B

NetBSD$B$O(Bstatfs(2)$B$r<N$F$F(Bstatvfs(2)$B$K$7$?$H$-!"%=!<%9%l%Y%k$G$O(B
statfs(2)$B$r40A4$K<N$F$F$7$^$$$^$7$?!#(B
This topic is locked and can not be replied to.