fallocate(2) - wariua/manpages-ko GitHub Wiki

NAME

fallocate - ํŒŒ์ผ ๊ณต๊ฐ„ ์กฐ์ž‘ํ•˜๊ธฐ

SYNOPSIS

#define _GNU_SOURCE             /* feature_test_macros(7) ์ฐธ๊ณ  */
#include <fcntl.h>

int fallocate(int fd, int mode, off_t offset, off_t len);

DESCRIPTION

์ด์‹์„ฑ ์—†๋Š” ๋ฆฌ๋ˆ…์Šค ์ „์šฉ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด๋‹ค. ํŒŒ์ผ ๊ณต๊ฐ„ ํ• ๋‹น์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ด์‹์„ฑ ์žˆ๊ณ  POSIX.1์— ๋ช…์„ธ๋œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„  posix_fallocate(3)๋ฅผ ๋ณด๋ผ.

fallocate()๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ์ž๋Š” fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์˜ offset๋ถ€ํ„ฐ len ๋ฐ”์ดํŠธ๋งŒํผ ์ด์–ด์ง€๋Š” ๋ฐ”์ดํŠธ ๋ฒ”์œ„์— ๋Œ€ํ•ด ํ• ๋‹น ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ง์ ‘ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

mode ์ธ์ž๋Š” ํ•ด๋‹น ๋ฒ”์œ„์— ์ˆ˜ํ–‰ํ•  ๋™์ž‘์„ ๊ฒฐ์ •ํ•œ๋‹ค. ์ง€์›ํ•˜๋Š” ๋™์ž‘๋“ค์„ ์•„๋ž˜์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•œ๋‹ค.

๋””์Šคํฌ ๊ณต๊ฐ„ ํ• ๋‹นํ•˜๊ธฐ

fallocate()์˜ ๊ธฐ๋ณธ ๋™์ž‘(์ฆ‰ mode 0)์€ offset๊ณผ len์œผ๋กœ ์ง€์ •ํ•œ ๋ฒ”์œ„์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•œ๋‹ค. offset+len์ด (stat(2)์ด ์•Œ๋ ค ์ฃผ๋Š”) ํŒŒ์ผ ํฌ๊ธฐ๋ณด๋‹ค ํฌ๋ฉด ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. offset๊ณผ len์œผ๋กœ ์ง€์ •ํ•œ ๋ฒ”์œ„ ๋‚ด์—์„œ ํ˜ธ์ถœ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์ง€ ์•Š์•˜๋˜ ์˜์—ญ์€ 0์œผ๋กœ ์ดˆ๊ธฐํ™” ๋œ๋‹ค. ์ด ๊ธฐ๋ณธ ๋™์ž‘ ๋ฐฉ์‹์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜ posix_fallocate(3)์˜ ๋™์ž‘๊ณผ ๋งค์šฐ ๋น„์Šทํ•œ๋ฐ, ๊ทธ ํ•จ์ˆ˜๋ฅผ ์ตœ์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.

์„ฑ๊ณต ํ˜ธ์ถœ ํ›„์—๋Š” offset๊ณผ len์œผ๋กœ ์ง€์ •ํ•œ ๋ฒ”์œ„ ๋‚ด์—์„œ์˜ ์“ฐ๊ธฐ ๋™์ž‘์ด ๋””์Šคํฌ ๊ณต๊ฐ„ ๋ถ€์กฑ ๋•Œ๋ฌธ์— ์‹คํŒจํ•˜์ง€ ์•Š๋Š” ๊ฒŒ ๋ณด์žฅ๋œ๋‹ค.

mode์— FALLOC_FL_KEEP_SIZE ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๋ฉด ํ˜ธ์ถœ์ด ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋˜ offset+len์ด ํŒŒ์ผ ํฌ๊ธฐ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋„ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ํŒŒ์ผ ๋ ๋„ˆ๋จธ์— 0 ์ฑ„์šด ๋ธ”๋ก๋“ค์„ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•ด ๋‘๋Š” ๊ฒƒ์ด ๋ง๋ถ™์ด๊ธฐ ์ž‘์—… ์ตœ์ ํ™”์— ์“ธ๋ชจ๊ฐ€ ์žˆ๋‹ค.

mode์— FALLOC_FL_UNSHARE ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๋ฉด ๊ณต์œ  ํŒŒ์ผ ๋ฐ์ดํ„ฐ ์ต์Šคํ…ํŠธ(extent)๋ฅผ ๊ทธ ํŒŒ์ผ ์ „์šฉ์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ์ดํ›„์˜ ์“ฐ๊ธฐ ๋™์ž‘์ด ๊ณต๊ฐ„ ๋ถ€์กฑ์œผ๋กœ ์‹คํŒจํ•˜์ง€ ์•Š๊ฒŒ ๋ณด์žฅํ•œ๋‹ค. ๋ณดํ†ต ์ด๋ฅผ ์œ„ํ•ด ํŒŒ์ผ ๋‚ด ๋ชจ๋“  ๊ณต์œ  ๋ฐ์ดํ„ฐ์— copy-on-write ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ชจ๋“  ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์›ํ•˜์ง€๋Š” ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.

ํ• ๋‹น์ด ๋ธ”๋ก ํฌ๊ธฐ ๋‹จ์œ„๋กœ ์ด๋ค„์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ง€์ •ํ•œ ๊ฒƒ๋ณด๋‹ค ํฐ ๋””์Šคํฌ ๊ณต๊ฐ„ ๋ฒ”์œ„๋ฅผ fallocate()์—์„œ ํ• ๋‹นํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

ํŒŒ์ผ ๊ณต๊ฐ„ ํ•ด์ œํ•˜๊ธฐ

mode์— (๋ฆฌ๋ˆ…์Šค 2.6.38๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ) FALLOC_FL_PUNCH_HOLE ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๋ฉด offset๋ถ€ํ„ฐ len ๋ฐ”์ดํŠธ๋งŒํผ ์ด์–ด์ง€๋Š” ๋ฐ”์ดํŠธ ๋ฒ”์œ„์˜ ๊ณต๊ฐ„์„ ํ•ด์ œํ•œ๋‹ค. (์ฆ‰ ๊ตฌ๋ฉ์„ ๋งŒ๋“ ๋‹ค.) ์ง€์ • ๋ฒ”์œ„ ๋‚ด์— ์ผ๋ถ€๋งŒ ์†ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ธ”๋ก์€ 0์œผ๋กœ ์ฑ„์›Œ์ง€๊ณ  ์ „์ฒด๊ฐ€ ์†ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ธ”๋ก์€ ํŒŒ์ผ์—์„œ ์ œ๊ฑฐ๋œ๋‹ค. ์„ฑ๊ณต ํ˜ธ์ถœ ํ›„์—๋Š” ๊ทธ ๋ฒ”์œ„์—์„œ์˜ ์ฝ๊ธฐ ๋™์ž‘์ด 0 ๊ฐ’๋“ค์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค.

mode์—์„œ FALLOC_FL_PUNCH_HOLE ํ”Œ๋ž˜๊ทธ์— ๋ฐ˜๋“œ์‹œ FALLOC_FL_KEEP_SIZE๋ฅผ OR ํ•ด์„œ ์จ์•ผ ํ•œ๋‹ค. ๋‹ฌ๋ฆฌ ๋งํ•ด ํŒŒ์ผ ๋์— ๊ตฌ๋ฉ์„ ๋‚ด๋Š” ๊ฒฝ์šฐ์—๋„ (stat(2)์ด ์•Œ๋ ค ์ฃผ๋Š”) ํŒŒ์ผ ํฌ๊ธฐ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

๋ชจ๋“  ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ FALLOC_FL_PUNCH_HOLE์„ ์ง€์›ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ด ๋™์ž‘์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ ์–ด๋„ ๋‹ค์Œ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ด ๋™์ž‘์„ ์ง€์›ํ•œ๋‹ค.

  • XFS (๋ฆฌ๋ˆ…์Šค 2.6.38๋ถ€ํ„ฐ)

  • ext4 (๋ฆฌ๋ˆ…์Šค 3.0๋ถ€ํ„ฐ)

  • Btrfs (๋ฆฌ๋ˆ…์Šค 3.7๋ถ€ํ„ฐ)

  • tmpfs(5) (๋ฆฌ๋ˆ…์Šค 3.5๋ถ€ํ„ฐ)

ํŒŒ์ผ ๊ณต๊ฐ„ ์••์ฐฉํ•˜๊ธฐ

mode์— (๋ฆฌ๋ˆ…์Šค 3.15๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ) FALLOC_FL_COLLAPSE_RANGE ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๋ฉด ํŒŒ์ผ์—์„œ ์–ด๋–ค ๋ฐ”์ดํŠธ ๋ฒ”์œ„๋ฅผ ๊ตฌ๋ฉ์„ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ์ œ๊ฑฐํ•œ๋‹ค. ์••์ฐฉํ•  ๋ฐ”์ดํŠธ ๋ฒ”์œ„๊ฐ€ offset๋ถ€ํ„ฐ len ๋ฐ”์ดํŠธ๋งŒํผ ์ด์–ด์ง„๋‹ค. ๋™์ž‘์ด ์™„๋ฃŒ๋˜๋ฉด offset+len ์œ„์น˜๋ถ€ํ„ฐ์˜ ํŒŒ์ผ ๋‚ด์šฉ๋ฌผ์ด offset ์œ„์น˜์— ๋ถ™์œผ๋ฉฐ ํŒŒ์ผ์ด len ๋ฐ”์ดํŠธ๋งŒํผ ์ž‘์•„์ง„๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ํšจ์œจ์  ๊ตฌํ˜„์ด ๊ฐ€๋Šฅ์ผ€ ํ•˜๊ธฐ ์œ„ํ•ด ๋™์ž‘ ๋‹จ์œ„์— ์ œํ•œ์„ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค. ๋ณดํ†ต offset๊ณผ len์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋…ผ๋ฆฌ์  ๋ธ”๋ก ํฌ๊ธฐ์˜ ๋ฐฐ์ˆ˜์—ฌ์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ ํฌ๊ธฐ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์ข…๋ฅ˜์™€ ์„ค์ •์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๊ทธ๋Ÿฐ ์กฐ๊ฑด์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ทธ ์š”๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š์œผ๋ฉด fallocate()๊ฐ€ EINVAL ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•œ๋‹ค.

offset ๋”ํ•˜๊ธฐ len์ด ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒ”์œ„๊ฐ€ ํŒŒ์ผ ๋์— ๋‹ฟ๊ฑฐ๋‚˜ ๋์„ ๋„˜์œผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํŒŒ์ผ์„ ์ ˆ๋‹จํ•˜๋ ค๋ฉด ftruncate(2)๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค.

mode์— FALLOC_FL_COLLAPSE_RANGE์™€ ๋‹ค๋ฅธ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ•จ๊ป˜ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค.

๋ฆฌ๋ˆ…์Šค 3.15 ๊ธฐ์ค€์œผ๋กœ ext4(์ต์Šคํ…ํŠธ ๊ธฐ๋ฐ˜ ํŒŒ์ผ ํ•œ์ •)์™€ XFS์—์„œ FALLOC_FL_COLLAPSE_RANGE๋ฅผ ์ง€์›ํ•œ๋‹ค.

ํŒŒ์ผ ๊ณต๊ฐ„ 0์œผ๋กœ ์ฑ„์šฐ๊ธฐ

mode์— (๋ฆฌ๋ˆ…์Šค 3.15๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ) FALLOC_FL_ZERO_RANGE ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๋ฉด offset๋ถ€ํ„ฐ len ๋ฐ”์ดํŠธ๋งŒํผ ์ด์–ด์ง€๋Š” ๋ฐ”์ดํŠธ ๋ฒ”์œ„์˜ ๊ณต๊ฐ„์„ 0์œผ๋กœ ์ฑ„์šด๋‹ค. ์ง€์ • ๋ฒ”์œ„ ๋‚ด์—์„œ ํŒŒ์ผ ๋‚ด ๊ตฌ๋ฉ์— ๊ฑธ์ณ ์žˆ๋Š” ์˜์—ญ๋“ค์— ๋ธ”๋ก์„ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•œ๋‹ค. ์„ฑ๊ณต ํ˜ธ์ถœ ํ›„์—๋Š” ๊ทธ ๋ฒ”์œ„์—์„œ์˜ ์ฝ๊ธฐ ๋™์ž‘์ด 0์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ ๋‚ด์—์„œ 0์œผ๋กœ ์ฑ„์šฐ๋Š” ๋™์ž‘์€ ๊ฐ€๊ธ‰์ ์ด๋ฉด ๊ทธ ๋ฒ”์œ„๋ฅผ ๊ธฐ๋ก ์•ˆ ๋œ ์ต์Šคํ…ํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด๋ค„์ง„๋‹ค. ์ด ๋ฐฉ์‹์—์„œ๋Š” ์žฅ์น˜ ์ƒ์—์„œ ์ง€์ • ๋ฒ”์œ„๊ฐ€ (๋ฒ”์œ„ ์–‘๋์˜ ์ผ๋ถ€๋งŒ ์†ํ•œ ๋ธ”๋ก์„ ์ œ์™ธํ•˜๊ณ ) ๋ฌผ๋ฆฌ์ ์œผ๋กœ 0์œผ๋กœ ์ฑ„์›Œ์ง€๋Š” ๊ฒŒ ์•„๋‹ˆ๋ฉฐ, (์ผ๋ถ€๋งŒ ์†ํ•œ ๋ธ”๋ก์ด ์—†๋‹ค๋ฉด) ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐฑ์‹ ์—๋งŒ I/O๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

mode์— FALLOC_FL_KEEP_SIZE ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€๋กœ ์ง€์ •ํ•˜๋ฉด ํ˜ธ์ถœ์ด ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋˜ offset+len์ด ํŒŒ์ผ ํฌ๊ธฐ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋„ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ์ด๋Š” ๊ณต๊ฐ„์„ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•˜๋ฉด์„œ FALLOC_FL_KEEP_SIZE๋ฅผ ์ง€์ •ํ•  ๋•Œ์™€ ๊ฐ™์€ ๋™์ž‘ ๋ฐฉ์‹์ด๋‹ค.

๋ชจ๋“  ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ FALLOC_FL_ZERO_RANGE๋ฅผ ์ง€์›ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ด ๋™์ž‘์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ ์–ด๋„ ๋‹ค์Œ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ด ๋™์ž‘์„ ์ง€์›ํ•œ๋‹ค.

  • XFS (๋ฆฌ๋ˆ…์Šค 3.15๋ถ€ํ„ฐ)

  • ext4, ์ต์Šคํ…ํŠธ ๊ธฐ๋ฐ˜ ํŒŒ์ผ (๋ฆฌ๋ˆ…์Šค 3.15๋ถ€ํ„ฐ)

  • SMB3 (๋ฆฌ๋ˆ…์Šค 3.17๋ถ€ํ„ฐ)

  • Btrfs (๋ฆฌ๋ˆ…์Šค 4.16๋ถ€ํ„ฐ)

ํŒŒ์ผ ๊ณต๊ฐ„ ๋Š˜์ด๊ธฐ

mode์— (๋ฆฌ๋ˆ…์Šค 4.1๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ) FALLOC_FL_INSERT_RANGE ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๋ฉด ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฎ์–ด ์“ฐ์ง€ ์•Š์œผ๋ฉด์„œ ํŒŒ์ผ ํฌ๊ธฐ ๋‚ด์— ๊ตฌ๋ฉ์„ ์ง‘์–ด๋„ฃ์–ด์„œ ํŒŒ์ผ ๊ณต๊ฐ„์„ ๋Š˜์ธ๋‹ค. ๊ทธ ๊ตฌ๋ฉ์€ offset๋ถ€ํ„ฐ len ๋ฐ”์ดํŠธ๋งŒํผ ์ด์–ด์ง€๊ฒŒ ๋œ๋‹ค. ํŒŒ์ผ ๋‚ด๋ถ€์— ๊ตฌ๋ฉ์„ ์ง‘์–ด๋„ฃ์„ ๋•Œ offset๋ถ€ํ„ฐ ์žˆ๋Š” ํŒŒ์ผ ๋‚ด์šฉ๋ฌผ์ด len ๋ฐ”์ดํŠธ๋งŒํผ ์œ„์ชฝ์œผ๋กœ (์ฆ‰ ํŒŒ์ผ ์˜คํ”„์…‹์ด ๋†’์•„์ง€๋Š” ์ชฝ์œผ๋กœ) ๋ฐ€๋ฆฌ๊ฒŒ ๋œ๋‹ค. ํŒŒ์ผ ๋‚ด๋ถ€์— ๊ตฌ๋ฉ์„ ์ง‘์–ด๋„ฃ์œผ๋ฉด ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ len ๋ฐ”์ดํŠธ๋งŒํผ ์ปค์ง„๋‹ค.

์ด ๋ชจ๋“œ๋Š” ๋™์ž‘ ๋‹จ์œ„์™€ ๊ด€๋ จํ•ด FALLOC_FL_COLLAPSE_RANGE์™€ ๊ฐ™์€ ์ œ์•ฝ์ด ์žˆ๋‹ค. ํฌ๊ธฐ ๋‹จ์œ„ ์š”๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š์œผ๋ฉด fallocate()๊ฐ€ EINVAL ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•œ๋‹ค. offset์ด ํŒŒ์ผ ๋๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ๊ทธ๋ณด๋‹ค ํฌ๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋Ÿฐ ๋™์ž‘์—๋Š” (์ฆ‰ ํŒŒ์ผ ๋์— ๊ตฌ๋ฉ์„ ์ง‘์–ด๋„ฃ๋Š” ๋ฐ๋Š”) ftruncate(2)๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค.

mode์— FALLOC_FL_INSERT_RANGE์™€ ๋‹ค๋ฅธ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ•จ๊ป˜ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค.

FALLOC_FL_INSERT_RANGE์—๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์ง€์›์ด ํ•„์š”ํ•˜๋‹ค. ์ด ๋™์ž‘์„ ์ง€์›ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ XFS(๋ฆฌ๋ˆ…์Šค 4.1๋ถ€ํ„ฐ)์™€ ext4(๋ฆฌ๋ˆ…์Šค 4.2๋ถ€ํ„ฐ) ๋“ฑ์ด ์žˆ๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ fallocate()๋Š” 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฅ˜ ์‹œ -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋„๋ก errno๋ฅผ ์„ค์ •ํ•œ๋‹ค.

ERRORS

EBADF
fd๊ฐ€ ์œ ํšจํ•œ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์—ด๋ ค ์žˆ์ง€ ์•Š๋‹ค.
EFBIG
offset+len์ด ์ตœ๋Œ€ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•œ๋‹ค.
EFBIG
mode๊ฐ€ FALLOC_FL_INSERT_RANGE์ด๋ฉฐ ํ˜„์žฌ ํŒŒ์ผ ํฌ๊ธฐ+len์ด ์ตœ๋Œ€ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•œ๋‹ค.
EINTR
์‹คํ–‰ ์ค‘ ์‹œ๊ทธ๋„์„ ์žก์•˜๋‹ค. signal(7) ์ฐธ๊ณ .
EINVAL
offset์ด 0๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ len์ด 0 ์ดํ•˜์ด๋‹ค.
EINVAL
mode๊ฐ€ FALLOC_FL_COLLAPSE_RANGE์ธ๋ฐ offset ๋”ํ•˜๊ธฐ len์ด ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒ”์œ„๊ฐ€ ํŒŒ์ผ ๋์— ๋‹ฟ๊ฑฐ๋‚˜ ๋์„ ๋„˜๋Š”๋‹ค.
EINVAL
mode๊ฐ€ FALLOC_FL_INSERT_RANGE์ธ๋ฐ offset์ด ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒ”์œ„๊ฐ€ ํŒŒ์ผ ๋์— ๋‹ฟ๊ฑฐ๋‚˜ ๋์„ ๋„˜๋Š”๋‹ค.
EINVAL
mode๊ฐ€ FALLOC_FL_COLLAPSE_RANGE๋‚˜ FALLOC_FL_INSERT_RANGE์ธ๋ฐ offset์ด๋‚˜ len์ด ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ธ”๋ก ํฌ๊ธฐ์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.
EINVAL
mode์— FALLOC_FL_COLLAPSE_RANGE๋‚˜ FALLOC_FL_INSERT_RANGE ์ค‘ ํ•˜๋‚˜์™€ ๋”๋ถˆ์–ด ๋‹ค๋ฅธ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ๋‹ค. FALLOC_FL_COLLAPSE_RANGE์™€ FALLOC_FL_INSERT_RANGE์— ๋‹ค๋ฅธ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
EINVAL
mode๊ฐ€ FALLOC_FL_COLLAPSE_RANGE๋‚˜ FALLOC_FL_ZERO_RANGE, FALLOC_FL_INSERT_RANGE์ธ๋ฐ fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์ด ์ •๊ทœ ํŒŒ์ผ์ด ์•„๋‹ˆ๋‹ค.
EIO
ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ฝ๊ธฐ๋‚˜ ์“ฐ๊ธฐ๋ฅผ ํ•˜๋Š” ์ค‘์— I/O ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
ENODEV
fd๊ฐ€ ์ •๊ทœ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์ง€ ์•Š๋‹ค. (fd๊ฐ€ ํŒŒ์ดํ”„๋ผ FIFO์ด๋ฉด ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์˜จ๋‹ค.)
ENOSPC
fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์„ ๋‹ด์€ ์žฅ์น˜์— ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์ด ๋‚จ์•„ ์žˆ์ง€ ์•Š๋‹ค.
ENOSYS
์ด ์ปค๋„์—์„œ fallocate()๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค.
EOPNOTSUPP
fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์„ ํฌํ•จํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ด ๋™์ž‘์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋˜๋Š” fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์„ ํฌํ•จํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ mode๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
EPERM
fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์ด ๋ถˆ๋ณ€์œผ๋กœ ํ‘œ์‹œ๋ผ ์žˆ๋‹ค. (chattr(1) ์ฐธ๊ณ .)
EPERM
mode๊ฐ€ FALLOC_FL_PUNCH_HOLE์ด๋‚˜ FALLOC_FL_COLLAPSE_RANGE, FALLOC_FL_INSERT_RANGE๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์ด ๋ง๋ถ™์ด๊ธฐ ์ „์šฉ์œผ๋กœ ํ‘œ์‹œ๋ผ ์žˆ๋‹ค. (chattr(1) ์ฐธ๊ณ .)
EPERM
ํŒŒ์ผ ๋ด‰์ธ ๋•Œ๋ฌธ์— ๋™์ž‘์ด ๋ง‰ํ˜”๋‹ค. fcntl(2) ์ฐธ๊ณ .
ESPIPE
fd๊ฐ€ ํŒŒ์ดํ”„๋‚˜ FIFO๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.
ETXTBSY
mode์— FALLOC_FL_COLLAPSE_RANGE๋‚˜ FALLOC_FL_INSERT_RANGE๋ฅผ ์ง€์ •ํ–ˆ๋Š”๋ฐ fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์ด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ด๋‹ค.

VERSIONS

๋ฆฌ๋ˆ…์Šค ์ปค๋„ 2.6.23๋ถ€ํ„ฐ fallocate()๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. glibc ๋ฒ„์ „ 2.10๋ถ€ํ„ฐ ์ง€์›์„ ์ œ๊ณตํ•œ๋‹ค. FALLOC_FL_* ํ”Œ๋ž˜๊ทธ๋“ค์€ glibc ๋ฒ„์ „ 2.18๋ถ€ํ„ฐ ํ—ค๋”์— ์ •์˜๋ผ ์žˆ๋‹ค.

CONFORMING TO

fallocate()๋Š” ๋ฆฌ๋ˆ…์Šค ์ „์šฉ์ด๋‹ค.

SEE ALSO

fallocate(1), ftruncate(2), posix_fadvise(3), posix_fallocate(3)


2018-04-30

โš ๏ธ **GitHub.com Fallback** โš ๏ธ