File: statfs.2

package info (click to toggle)
manpages-ja 0.5.0.0.20210215%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 28,568 kB
  • sloc: perl: 161; makefile: 58
file content (247 lines) | stat: -rw-r--r-- 12,114 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
.\" Copyright (C) 2003 Andries Brouwer (aeb@cwi.nl)
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\" Modified 2003-08-17 by Walter Harms
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\"
.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
.\"         all rights reserved.
.\" Translated Fri Dec 12 00:25:54 JST 1997
.\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
.\" Updated & Modified Sat Jun  2 20:25:46 JST 2001
.\"         by Yuichi SATO <ysato@h4.dion.ne.jp>
.\" Updated & Modified Sat Jan 18 16:48:08 JST 2003
.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
.\" Updated & Modified Sun Sep  7 00:52:44 JST 2003 by Yuichi SATO
.\" Updated & Modified Sun Jan  9 22:35:28 JST 2005 by Yuichi SATO
.\" Updated 2006-07-21, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
.\" Updated 2012-04-30, Akihiro MOTOKI <amotoki@gmail.com>
.\"
.TH STATFS 2 2014\-06\-13 Linux "Linux Programmer's Manual"
.SH 名前
statfs, fstatfs \- ファイルシステムの統計を取得する
.SH 書式
\fB#include <sys/vfs.h> \fP/* または <sys/statfs.h> */
.sp
\fBint statfs(const char *\fP\fIpath\fP\fB, struct statfs *\fP\fIbuf\fP\fB);\fP
.br
\fBint fstatfs(int \fP\fIfd\fP\fB, struct statfs *\fP\fIbuf\fP\fB);\fP
.SH 説明
関数 \fBstatfs\fP()  はマウントされたファイルシステムについての情報を返す。 \fIpath\fP
はマウントされたファイルシステムにあるファイルのパス名である。 \fIbuf\fP は \fIstatfs\fP
構造体へのポインターで、およそ以下のように定義される:

.in +4n
.nf
#if __WORDSIZE == 32		/* システムのワードサイズ */
# define __SWORD_TYPE           int
#else /* __WORDSIZE == 64 */
# define __SWORD_TYPE		long int
#endif

struct statfs {
    __SWORD_TYPE f_type;    /* ファイルシステムの種別 (下記参照) */
    __SWORD_TYPE f_bsize;   /* 最適な転送ブロックサイズ */
    fsblkcnt_t   f_blocks;  /* ファイルシステムの総データブロック数 */
    fsblkcnt_t   f_bfree;   /* ファイルシステムの空きブロック数 */
    fsblkcnt_t   f_bavail;  /* 非特権ユーザーが利用可能な空きブロック数 */
    fsfilcnt_t   f_files;   /* ファイルシステムの総ファイルノード数 */
    fsfilcnt_t   f_ffree;   /* ファイルシステムの空きファイルノード数 */
    fsid_t       f_fsid;    /* ファイルシステムの ID */
    __SWORD_TYPE f_namelen; /* ファイル名の最大長 */
    __SWORD_TYPE f_frsize;  /* フラグメントサイズ (Linux 2.6 以降) */
    __SWORD_TYPE f_spare[5];
};

ファイルシステムの型:

   ADFS_SUPER_MAGIC      0xadf5
   AFFS_SUPER_MAGIC      0xADFF
   BDEVFS_MAGIC          0x62646576
   BEFS_SUPER_MAGIC      0x42465331
   BFS_MAGIC             0x1BADFACE
   BINFMTFS_MAGIC        0x42494e4d
   BTRFS_SUPER_MAGIC     0x9123683E
   CGROUP_SUPER_MAGIC    0x27e0eb
   CIFS_MAGIC_NUMBER     0xFF534D42
   CODA_SUPER_MAGIC      0x73757245
   COH_SUPER_MAGIC       0x012FF7B7
   CRAMFS_MAGIC          0x28cd3d45
   DEBUGFS_MAGIC         0x64626720
   DEVFS_SUPER_MAGIC     0x1373
   DEVPTS_SUPER_MAGIC    0x1cd1
   EFIVARFS_MAGIC        0xde5e81e4
   EFS_SUPER_MAGIC       0x00414A53
   EXT_SUPER_MAGIC       0x137D
   EXT2_OLD_SUPER_MAGIC  0xEF51
   EXT2_SUPER_MAGIC      0xEF53
   EXT3_SUPER_MAGIC      0xEF53
   EXT4_SUPER_MAGIC      0xEF53
   FUSE_SUPER_MAGIC      0x65735546
   FUTEXFS_SUPER_MAGIC   0xBAD1DEA
   HFS_SUPER_MAGIC       0x4244
   HOSTFS_SUPER_MAGIC    0x00c0ffee
   HPFS_SUPER_MAGIC      0xF995E849
   HUGETLBFS_MAGIC       0x958458f6
   ISOFS_SUPER_MAGIC     0x9660
   JFFS2_SUPER_MAGIC     0x72b6
   JFS_SUPER_MAGIC       0x3153464a
   MINIX_SUPER_MAGIC     0x137F /* オリジナルの minix */
   MINIX_SUPER_MAGIC2    0x138F /* 30 文字ファイル名の minix */
   MINIX2_SUPER_MAGIC    0x2468 /* minix V2 */
   MINIX2_SUPER_MAGIC2   0x2478 /* minix V2, 30 文字ファイル名 */
   MINIX3_SUPER_MAGIC    0x4d5a /* minix V3 ファイルシステム, 60 文字ファイル名 */
   MQUEUE_MAGIC          0x19800202
   MSDOS_SUPER_MAGIC     0x4d44
   NCP_SUPER_MAGIC       0x564c
   NFS_SUPER_MAGIC       0x6969
   NILFS_SUPER_MAGIC     0x3434
   NTFS_SB_MAGIC         0x5346544e
   OPENPROM_SUPER_MAGIC  0x9fa1
   PIPEFS_MAGIC          0x50495045
   PROC_SUPER_MAGIC      0x9fa0
   PSTOREFS_MAGIC        0x6165676C
   QNX4_SUPER_MAGIC      0x002f
   QNX6_SUPER_MAGIC      0x68191122
   RAMFS_MAGIC           0x858458f6
   REISERFS_SUPER_MAGIC  0x52654973
   ROMFS_MAGIC           0x7275
   SELINUX_MAGIC         0xf97cff8c
   SMACK_MAGIC           0x43415d53
   SMB_SUPER_MAGIC       0x517B
   SOCKFS_MAGIC          0x534F434B
   SQUASHFS_MAGIC        0x73717368
   SYSFS_MAGIC           0x62656572
   SYSV2_SUPER_MAGIC     0x012FF7B6
   SYSV4_SUPER_MAGIC     0x012FF7B5
   TMPFS_MAGIC           0x01021994
   UDF_SUPER_MAGIC       0x15013346
   UFS_MAGIC             0x00011954
   USBDEVICE_SUPER_MAGIC 0x9fa2
   V9FS_MAGIC            0x01021997
   VXFS_SUPER_MAGIC      0xa501FCF5
   XENFS_SUPER_MAGIC     0xabba1974
   XENIX_SUPER_MAGIC     0x012FF7B4
   XFS_SUPER_MAGIC       0x58465342
   _XIAFS_SUPER_MAGIC    0x012FD16D
.fi
.in
.PP
これらの MAGIC 定数のほとんどは \fI/usr/include/linux/magic.h\fP
で定義されており、いくつかはカーネルソースで直接書かれている。
.PP
\fIf_fsid\fP にどんな値が入るべきなのかは誰も知らない (但し、下記を参照)。
.PP
それぞれのファイルシステムにおいて未定義のフィールドには 0 が 設定される。 \fBfstatfs\fP()  はディスクリプター \fIfd\fP
によって参照されるオープンされたファイルについて、同じ情報を返す。
.SH 返り値
成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。
.SH エラー
.TP 
\fBEACCES\fP
(\fBstatfs\fP()  の場合)  \fIpath\fP のディレクトリ部分に検索許可が与えられていない (\fBpath_resolution\fP(7)
も参照すること)。
.TP 
\fBEBADF\fP
(\fBfstatfs\fP()  の場合)  \fIfd\fP は有効なオープンされたファイルディスクリプターではない。
.TP 
\fBEFAULT\fP
\fIbuf\fP または \fIpath\fP が不正なアドレスを指している。
.TP 
\fBEINTR\fP
この呼び出しがシグナルで中断された。
.TP 
\fBEIO\fP
ファイルシステムからの読み込みの間に I/O エラーが発生した。
.TP 
\fBELOOP\fP
(\fBstatfs\fP()  の場合)  \fIpath\fP を解決するのに辿るべきシンボリックリンクが多すぎる。
.TP 
\fBENAMETOOLONG\fP
(\fBstatfs\fP()  の場合)  \fIpath\fP が長過ぎる。
.TP 
\fBENOENT\fP
(\fBstatfs\fP()  の場合)  \fIpath\fP によって参照されるファイルが存在しない。
.TP 
\fBENOMEM\fP
十分なカーネルメモリーがない。
.TP 
\fBENOSYS\fP
ファイルシステムがこの呼び出しをサポートしていない。
.TP 
\fBENOTDIR\fP
(\fBstatfs\fP()  の場合)  \fIpath\fP のディレクトリ部分がディレクトリでない。
.TP 
\fBEOVERFLOW\fP
いくつかの値が大き過ぎて、返り値の構造体で表現できない。
.SH 準拠
Linux 固有である。 Linux の \fBstatfs\fP()  は 4.4BSD のものに影響を受けている。
(しかし同じ構造体を使用しているわけではない)
.SH 注意
元々の Linux の \fBstatfs\fP() と \fBfstatfs\fP() システムコールは
非常に大きなファイルサイズを念頭に入れて設計されていなかった。
その後、Linux 2.6 で、新しい構造体 \fIstatfs64\fP を使用する
新しいシステムコール \fBstatfs64\fP() と \fBfstatfs64\fP() が追加された。
新しい構造体は元の \fIstatfs\fP 構造体と同じフィールドを持つが、
いろいろなフィールドのサイズが大きなファイルサイズに対応できるように
増やされている。 glibc の \fBstatfs\fP() と \fBfstatfs\fP() のラッパー関数は
カーネルによるこれらの違いを吸収している。

\fI<sys/vfs.h>\fP しか持たないシステムもあり、 \fI<sys/statfs.h>\fP
も持っているシステムもある。 前者は後者をインクルードするので、 前者をインクルードするのが良いと考えられる。

LSB ではライブラリコール \fBstatfs\fP(), \fBfstatfs\fP()  を非推奨として、代わりに \fBstatvfs\fP(2),
\fBfstatvfs\fP(2)  を使うように指示している。
.SS "f_fsid フィールド"
Solaris, Irix, POSIX にはシステムコール \fBstatvfs\fP(2)  があり、 \fIstruct statvfs\fP を返す
(\fI<sys/statvfs.h>\fP で定義されている)。 この構造体には、 \fIunsigned long\fP \fIf_fsid\fP
が含まれている。 Linux, SunOS, HP\-UX, 4.4BSD にはシステムコール \fBstatfs\fP()  があり、 \fIstruct
statfs\fP を返す (\fI<sys/vfs.h>\fP で定義されている)。 この構造体には \fIfsid_t\fP \fIf_fsid\fP,
が含まれており、 \fIfsid_t\fP は \fIstruct { int val[2]; }\fP と定義されている。 FreeBSD
でも同じであるが、インクルードファイル \fI<sys/mount.h>\fP を使う。

\fIf_fsid\fP はあるランダムな値を持ち、 (\fIf_fsid\fP,\fIino\fP)  という 1 組の値でファイルを一意に決定できるようにする、
というのが基本的な考え方である。 いくつかの OS では、デバイス番号 (の変種) を使ったり、
デバイス番号とファイルシステムタイプを組み合わせて使ったりしている。 OS の中には \fIf_fsid\fP
フィールドの取得をスーパーユーザーに限定しているものもある (非特権ユーザーが取得すると 0 となる)。 NFS でエクスポートされる場合、
このフィールドがファイルシステムのファイルハンドルで使われており、 この値を提供するとセキュリティ上の問題がある。
.LP
いくつかの OS では、 \fIfsid\fP を \fBsysfs\fP(2)  システムコールの第 2 引き数として使用できる。
.SH バグ
.\" broken in commit ff0c7d15f9787b7e8c601533c015295cc68329f8
.\" fixed in commit d70ef97baf048412c395bb5d65791d8fe133a52b
Linux 2.6.38 から Linux 3.1 までは (3.1 を含む)、 \fBfstatfs\fP() は \fBpipe\fP(2)
で作成されたファイルディスクリプターに対してはエラー \fBENOSYS\fP で失敗していた。
.SH 関連項目
\fBstat\fP(2), \fBstatvfs\fP(2), \fBpath_resolution\fP(7)
.SH この文書について
この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。