OSDN Git Service

2a80a5e4129b71013e385a60260d2ac04fe88892
[linuxjm/LDP_man-pages.git] / release / man2 / fallocate.2
1 .\" Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved
2 .\" Written by Dave Chinner <dgc@sgi.com>
3 .\"
4 .\" %%%LICENSE_START(GPLv2_ONELINE)
5 .\" May be distributed as per GNU General Public License version 2.
6 .\" %%%LICENSE_END
7 .\"
8 .\" 2011-09-19: Added FALLOC_FL_PUNCH_HOLE
9 .\" 2011-09-19: Substantial restructuring of the page
10 .\"
11 .\"*******************************************************************
12 .\"
13 .\" This file was generated with po4a. Translate the source file.
14 .\"
15 .\"*******************************************************************
16 .TH FALLOCATE 2 2013\-02\-12 Linux "Linux Programmer's Manual"
17 .SH 名前
18 fallocate \- ファイル空間の操作
19 .SH 書式
20 .nf
21 \fB#define _GNU_SOURCE\fP             /* feature_test_macros(7) 参照 */
22 \fB#include <fcntl.h>\fP
23
24 \fBint fallocate(int \fP\fIfd\fP\fB, int \fP\fImode\fP\fB, off_t \fP\fIoffset\fP\fB, off_t \fP\fIlen\fP\fB);\fP
25 .fi
26 .SH 説明
27 このシステムコールは、移植性のない、Linux 固有のシステムコールである。 移植性が必要な場合は、ファイルに対してディスク空間を確実に確保するために、
28 POSIX.1 で規定された方法である \fBposix_fallocate\fP(3)  を使うこと。
29
30 \fBfallocate\fP()  を使うと、 \fIfd\fP が参照するファイルに割り当てられたディスク空間を直接操作できる。 操作対象は、
31 \fIoffset\fP から始まる長さ \fIlen\fP バイトの領域である。
32
33 \fImode\fP 引き数は、指定された領域に対して実行する操作を指定する。
34 サポートされている操作の詳細は以下のサブセクションで説明する。
35 .SS ディスク領域の割り当て
36 \fBfallocate\fP() のデフォルトの動作 (つまり \fImode\fP が 0 の場合) は、
37 \fIoffset\fP と \fIlen\fP で指定された範囲のディスク領域の割り当てと初期化を行う。
38 \fIoffset\fP+\fIlen\fP がファイルサイズよりも大きかった場合、
39 (\fBstat\fP(2) で報告される) ファイルサイズが変更される。このデフォルトの動作は、
40 ライブラリ関数 \fBposix_fallocate\fP(3) の動作と非常に似ている。これは、
41 このシステムコールが \fBposix_fallocate\fP(3) を最適に実装する手段を提供する
42 ことを目的としているからである。
43
44 呼び出しが成功した場合、
45 \fIoffset\fP と \fIlen\fP で指定された範囲へのそれ以降の書き込みでは、
46 ディスクの領域不足での書き込み失敗が起こらないことが保証される。
47
48 \fBFALLOC_FL_KEEP_SIZE\fP フラグが \fImode\fP に指定された場合、このシステムコール
49 の動作は似ているが、 \fIoffset\fP+\fIlen\fP がファイルサイズよりも大きい場合で
50 あってもファイルサイズは変更されない点が異なる。この場合のファイルの末尾
51 よりも後ろの前もって割り当てられた 0 で埋められたブロックは、ファイルへの
52 追記を最適化したい場合に役に立つ。
53 .PP
54 割り当てはブロックサイズ単位で行われるため、 \fBfallocate\fP() は指定されたより
55 も大きなディスク領域を割り当てることがある。
56 .SS ファイル空間の割り当て解除
57 Specifying the \fBFALLOC_FL_PUNCH_HOLE\fP flag (available since Linux 2.6.38)
58 in \fImode\fP deallocates space (i.e., creates a hole)  in the byte range
59 starting at \fIoffset\fP and continuing for \fIlen\fP bytes.  Within the specified
60 range, partial file system blocks are zeroed, and whole file system blocks
61 are removed from the file.  After a successful call, subsequent reads from
62 this range will return zeroes.
63
64 The \fBFALLOC_FL_PUNCH_HOLE\fP flag must be ORed with \fBFALLOC_FL_KEEP_SIZE\fP in
65 \fImode\fP; in other words, even when punching off the end of the file, the
66 file size (as reported by \fBstat\fP(2))  does not change.
67
68 Not all file systems support \fBFALLOC_FL_PUNCH_HOLE\fP; if a file system
69 doesn't support the operation, an error is returned.
70 .SH 返り値
71 \fBfallocate\fP()  は成功すると 0 を返し、エラーの場合は \-1 を返す。
72 .SH エラー
73 .TP 
74 \fBEBADF\fP
75 \fIfd\fP が有効なファイルディスクリプタでないか、 書き込み用としてオープンされていない。
76 .TP 
77 \fBEFBIG\fP
78 \fIoffset + len\fP がファイルサイズの最大値よりも大きい。
79 .TP 
80 \fBEINTR\fP
81 実行中にシグナルが捕捉された。
82 .TP 
83 \fBEINVAL\fP
84 .\" FIXME (raise a kernel bug) Probably the len==0 case should be
85 .\" a no-op, rather than an error. That would be consistent with
86 .\" similar APIs for the len==0 case.
87 .\" See "Re: [PATCH] fallocate.2: add FALLOC_FL_PUNCH_HOLE flag definition"
88 .\" 21 Sep 2012
89 .\" http://thread.gmane.org/gmane.linux.file-systems/48331/focus=1193526
90 \fIoffset\fP が 0 未満だったか、 \fIlen\fP が 0 以下だった。
91 .TP 
92 \fBEIO\fP
93 ファイルシステムとの読み書き中に入出力エラーが発生した。
94 .TP 
95 \fBENODEV\fP
96 \fIfd\fP が通常のファイルかディレクトリを参照していない (\fIfd\fP がパイプや FIFO を参照している場合、別のエラーが発生する)。
97 .TP 
98 \fBENOSPC\fP
99 \fIfd\fP が参照するファイルを含むデバイスに十分な空き領域がない。
100 .TP 
101 \fBENOSYS\fP
102 このカーネルでは \fBfallocate\fP() は実装されていない。
103 .TP 
104 \fBEOPNOTSUPP\fP
105 \fIfd\fP が参照するファイルを含むファイルシステムが 指定された操作を
106 サポートしていない。 \fIfd\fP が参照するファイルを含むファイルシステムが
107 \fImode\fP をサポートしていない。
108 .TP 
109 \fBEPERM\fP
110 The file referred to by \fIfd\fP is marked immutable (see \fBchattr\fP(1)).  Or:
111 \fImode\fP specifies \fBFALLOC_FL_PUNCH_HOLE\fP and the file referred to by \fIfd\fP
112 is marked append\-only (see \fBchattr\fP(1)).
113 .TP 
114 \fBESPIPE\fP
115 \fIfd\fP がパイプか FIFO を参照している。
116 .SH バージョン
117 .\" See http://sourceware.org/bugzilla/show_bug.cgi?id=14964
118 \fBfallocate\fP()  はカーネル 2.6.23 以降の Linux で利用可能である。 glibc での対応はバージョン 3.10
119 以降で行われている。 \fBFALLOC_FL_*\fP が glibc のヘッダファイルで定義されているのは、バージョン 2.18 以降のみである。
120 .SH 準拠
121 \fBfallocate\fP()  は Linux 固有である。
122 .SH 関連項目
123 \fBfallocate\fP(1), \fBftruncate\fP(2), \fBposix_fadvise\fP(3), \fBposix_fallocate\fP(3)
124 .SH この文書について
125 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
126 である。プロジェクトの説明とバグ報告に関する情報は
127 http://www.kernel.org/doc/man\-pages/ に書かれている。