SFUSE_Documentation
|
#include "super.h"
#include <fuse3/fuse.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
데이터 구조 | |
struct | sfuse_fs |
SFUSE 파일 시스템 컨텍스트 구조체 더 자세히 ... |
함수 | |
struct sfuse_fs * | fs_initialize (const char *path, int *error_out) |
파일 시스템 초기화 | |
void | fs_teardown (struct sfuse_fs *fs) |
파일 시스템 정리 | |
int | fs_resolve_path (struct sfuse_fs *fs, const char *path, uint32_t *out_ino) |
경로를 inode 번호로 변환 | |
int | fs_getattr (struct sfuse_fs *fs, const char *path, struct stat *stbuf) |
파일/디렉터리 속성 조회 | |
int | fs_access (struct sfuse_fs *fs, const char *path, int mask) |
접근 권한 검사 | |
int | fs_readdir (struct sfuse_fs *fs, const char *path, void *buf, fuse_fill_dir_t filler, off_t offset) |
디렉터리 내용 읽기 | |
int | fs_open (struct sfuse_fs *fs, const char *path, struct fuse_file_info *fi) |
파일 열기 | |
int | fs_read (struct sfuse_fs *fs, const char *path, char *buf, size_t size, off_t offset) |
파일 읽기 | |
int | fs_write (struct sfuse_fs *fs, const char *path, const char *buf, size_t size, off_t offset) |
파일 쓰기 | |
int | fs_create (struct sfuse_fs *fs, const char *path, mode_t mode, struct fuse_file_info *fi) |
파일 생성 | |
int | fs_mkdir (struct sfuse_fs *fs, const char *path, mode_t mode) |
디렉터리 생성 | |
int | fs_unlink (struct sfuse_fs *fs, const char *path) |
파일 삭제 | |
int | fs_rmdir (struct sfuse_fs *fs, const char *path) |
디렉터리 삭제 | |
int | fs_rename (struct sfuse_fs *fs, const char *from, const char *to) |
파일 또는 디렉터리 이름 변경 | |
int | fs_truncate (struct sfuse_fs *fs, const char *path, off_t size) |
파일 크기 조정 (truncate) | |
int | fs_utimens (struct sfuse_fs *fs, const char *path, const struct timespec tv[2]) |
파일의 시간 속성 변경 (utimens) | |
int | fs_flush (struct sfuse_fs *fs, const char *path, struct fuse_file_info *fi) |
FUSE에서 플러시 요청 처리 | |
int | fs_fsync (struct sfuse_fs *fs, const char *path, int datasync, struct fuse_file_info *fi) |
FUSE에서 fsync 요청 처리 | |
struct fuse_operations * | sfuse_get_operations (void) |
SFUSE용 FUSE operations 구조체 반환 |
변수 | |
bool | g_force_format = false |
강제 포맷 옵션 플래그 |
int fs_access | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
int | mask ) |
접근 권한 검사
fs | 파일 시스템 컨텍스트 |
path | 대상 경로 |
mask | 검사할 접근 마스크 |
접근 권한 검사
fs | 파일 시스템 컨텍스트 포인터 |
path | 검사할 경로 (null-terminated 문자열) |
mask | 접근 마스크 (R_OK, W_OK, X_OK) |
fs.c 파일의 1343 번째 라인에서 정의되었습니다.
int fs_create | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
mode_t | mode, | ||
struct fuse_file_info * | fi ) |
파일 생성
fs | 파일 시스템 컨텍스트 |
path | 생성할 파일 경로 |
mode | 생성 모드 (퍼미션) |
fi | FUSE 파일 정보 구조체 |
파일 생성
지정된 경로에 새 파일을 생성하고 상위 디렉터리에 디렉터리 엔트리를 추가한다.
fs | 파일 시스템 컨텍스트 포인터 |
path | 생성할 파일 경로 (null-terminated 문자열) |
mode | 파일 모드 및 권한 (하위 12비트 사용) |
fi | FUSE 파일 정보 구조체 (사용되지 않음) |
< 일반 파일로 설정
< 파일/디렉터리 이름의 최대 길이
< 파일/디렉터리 이름의 최대 길이
< 파일/디렉터리 이름의 최대 길이
< 파일/디렉터리 이름의 최대 길이
int fs_flush | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
struct fuse_file_info * | fi ) |
FUSE에서 플러시 요청 처리
fs | 파일 시스템 컨텍스트 |
path | 대상 파일 경로 |
fi | FUSE 파일 정보 구조체 |
FUSE에서 플러시 요청 처리
fs | 파일 시스템 컨텍스트 포인터 |
path | 대상 경로 (사용되지 않음) |
fi | FUSE 파일 정보 구조체 (사용되지 않음) |
fs.c 파일의 1302 번째 라인에서 정의되었습니다.
int fs_fsync | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
int | datasync, | ||
struct fuse_file_info * | fi ) |
FUSE에서 fsync 요청 처리
fs | 파일 시스템 컨텍스트 |
path | 대상 파일 경로 |
datasync | 데이터 sync 플래그 |
fi | FUSE 파일 정보 구조체 |
FUSE에서 fsync 요청 처리
fs | 파일 시스템 컨텍스트 포인터 |
path | 대상 경로 (사용되지 않음) |
datasync | 데이터만 동기화할지 여부 |
fi | FUSE 파일 정보 구조체 (사용되지 않음) |
fs.c 파일의 1280 번째 라인에서 정의되었습니다.
int fs_getattr | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
struct stat * | stbuf ) |
파일/디렉터리 속성 조회
fs | 파일 시스템 컨텍스트 |
path | 대상 경로 |
stbuf | 출력할 stat 구조체 포인터 |
파일/디렉터리 속성 조회
지정 경로의 inode를 조회하여 stat 구조체에 채움
fs | 파일 시스템 컨텍스트 포인터 |
path | 대상 경로 문자열 |
stbuf | 속성 정보를 채울 stat 구조체 포인터 |
struct sfuse_fs * fs_initialize | ( | const char * | path, |
int * | error_out ) |
파일 시스템 초기화
image_path | 디스크 이미지 파일 경로 |
error_out | 오류 코드를 저장할 포인터 |
파일 시스템 초기화
int fs_mkdir | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
mode_t | mode ) |
디렉터리 생성
fs | 파일 시스템 컨텍스트 |
path | 생성할 디렉터리 경로 |
mode | 생성 모드 (퍼미션) |
디렉터리 생성
지정된 경로에 새 디렉터리를 생성하고 상위 디렉터리에 디렉터리 엔트리를 추가한다.
fs | 파일 시스템 컨텍스트 포인터 |
path | 생성할 디렉터리 경로 (null-terminated 문자열) |
mode | 디렉터리 모드 및 권한 (하위 12비트 사용) |
< 디렉터리 타입 설정
< 첫 엔트리에 새 inode 설정
< 파일/디렉터리 이름의 최대 길이
< 파일/디렉터리 이름의 최대 길이
< 디렉터리 크기 갱신
< 빈 슬롯에 inode 설정
< 파일/디렉터리 이름의 최대 길이
< 파일/디렉터리 이름의 최대 길이
< 수정 시간 갱신
< 변경 시간 갱신
int fs_open | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
struct fuse_file_info * | fi ) |
파일 열기
fs | 파일 시스템 컨텍스트 |
path | 파일 경로 |
fi | FUSE 파일 정보 구조체 |
파일 열기
path가 유효한 파일인지 확인
fs | 파일 시스템 컨텍스트 포인터 |
path | 열고자 하는 파일 경로 문자열 |
fi | FUSE 파일 정보 구조체 (사용하지 않음) |
int fs_read | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
char * | buf, | ||
size_t | size, | ||
off_t | offset ) |
파일 읽기
fs | 파일 시스템 컨텍스트 |
path | 파일 경로 |
buf | 읽은 데이터를 저장할 버퍼 |
size | 읽을 바이트 수 |
offset | 읽기 오프셋 |
지정된 경로의 파일 데이터를 읽어 사용자 버퍼에 복사한다.
fs | 파일 시스템 컨텍스트 포인터 |
path | 읽을 파일 경로 (null-terminated 문자열) |
buf | 데이터를 저장할 사용자 버퍼 포인터 |
size | 요청한 읽기 크기 (바이트 단위) |
offset | 파일 내 시작 오프셋 (바이트 단위) |
< 논리 블록 인덱스
< 블록 내 오프셋
< 이터레이션당 최대 읽기 바이트
int fs_readdir | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
void * | buf, | ||
fuse_fill_dir_t | filler, | ||
off_t | offset ) |
디렉터리 내용 읽기
fs | 파일 시스템 컨텍스트 |
path | 디렉터리 경로 |
buf | FUSE가 제공하는 버퍼 |
filler | 디렉터리 엔트리 추가 콜백 |
offset | 읽기 오프셋 |
디렉터리 내용 읽기
지정 경로의 디렉터리 엔트리를 FUSE callback에 전달
fs | 파일 시스템 컨텍스트 포인터 |
path | 디렉터리 경로 문자열 |
buf | FUSE가 제공하는 버퍼 포인터 |
filler | FUSE 디렉터리 엔트리 추가 콜백 |
offset | 읽기 시작 오프셋 (사용되지 않음) |
int fs_rename | ( | struct sfuse_fs * | fs, |
const char * | from, | ||
const char * | to ) |
파일 또는 디렉터리 이름 변경
fs | 파일 시스템 컨텍스트 |
from | 원본 경로 |
to | 대상 경로 |
파일 또는 디렉터리 이름 변경
지정된 경로의 엔트리를 원본 디렉터리에서 제거하고, 대상 디렉터리에 새 엔트리를 추가한다.
fs | 파일 시스템 컨텍스트 포인터 |
from | 원본 경로 (null-terminated 문자열) |
to | 대상 경로 (null-terminated 문자열) |
< 파일/디렉터리 이름의 최대 길이
< 파일/디렉터리 이름의 최대 길이
< 파일/디렉터리 이름의 최대 길이
< 파일/디렉터리 이름의 최대 길이
fs.c 파일의 1011 번째 라인에서 정의되었습니다.
int fs_resolve_path | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
uint32_t * | out_ino ) |
경로를 inode 번호로 변환
fs | 파일 시스템 컨텍스트 |
path | 변환할 경로 문자열 |
out_ino | 변환된 inode 번호 저장 위치 |
경로를 inode 번호로 변환
루트("/")는 inode 1로 처리하며, 경로를 '/' 구분자로 분할하여 순차 검색
fs | 파일 시스템 컨텍스트 포인터 |
path | 변환할 경로 문자열 (null-terminated) |
out_ino | 변환된 inode 번호를 저장할 포인터 |
int fs_rmdir | ( | struct sfuse_fs * | fs, |
const char * | path ) |
디렉터리 삭제
fs | 파일 시스템 컨텍스트 |
path | 삭제할 디렉터리 경로 |
디렉터리 삭제
지정된 경로의 디렉터리가 비어 있는지 확인한 후, fs_unlink 로직을 재사용하여 디렉터리를 제거한다.
fs | 파일 시스템 컨텍스트 포인터 |
path | 삭제할 디렉터리 경로 (null-terminated 문자열) |
void fs_teardown | ( | struct sfuse_fs * | fs | ) |
파일 시스템 정리
fs | 해제할 파일 시스템 컨텍스트 |
파일 시스템 정리
슈퍼블록과 비트맵을 디스크에 동기화하고, 할당된 메모리 및 파일 디스크립터 정리
fs | 해제할 파일 시스템 컨텍스트 포인터 |
int fs_truncate | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
off_t | size ) |
파일 크기 조정 (truncate)
fs | 파일 시스템 컨텍스트 |
path | 대상 파일 경로 |
size | 새로운 파일 크기 |
파일 크기 조정 (truncate)
지정된 경로의 파일 크기를 주어진 크기로 변경. 크기 축소 시 불필요한 데이터 블록을 해제하고, 크기 확장 시 필요한 경우 단일 바이트 쓰기를 통해 공간을 확보.
fs | 파일 시스템 컨텍스트 포인터 |
path | 대상 파일 경로 (null-terminated 문자열) |
size | 새 파일 크기 (바이트 단위) |
< 유지할 블록 수
< 기존 블록 수
< 1차 인덱스
< 2차 인덱스
< 파일 크기 갱신
< 수정 시간 갱신
< 변경 시간 갱신
fs.c 파일의 1138 번째 라인에서 정의되었습니다.
int fs_unlink | ( | struct sfuse_fs * | fs, |
const char * | path ) |
파일 삭제
fs | 파일 시스템 컨텍스트 |
path | 삭제할 파일 경로 |
지정된 경로의 파일을 삭제하고, 관련 데이터 블록 및 아이노드를 해제한다.
fs | 파일 시스템 컨텍스트 포인터 |
path | 삭제할 파일 경로 (null-terminated 문자열) |
< 파일/디렉터리 이름의 최대 길이
int fs_utimens | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
const struct timespec | tv[2] ) |
파일의 시간 속성 변경 (utimens)
fs | 파일 시스템 컨텍스트 |
path | 대상 경로 |
tv | [0]=접근 시간, [1]=변경 시간 |
파일의 시간 속성 변경 (utimens)
fs | 파일 시스템 컨텍스트 포인터 |
path | 대상 경로 (null-terminated 문자열) |
tv | tv[0]=접근 시간, tv[1]=수정 시간 |
< 접근 시간 설정
< 수정 시간 설정
< 메타데이터 변경 시간 갱신
fs.c 파일의 1318 번째 라인에서 정의되었습니다.
int fs_write | ( | struct sfuse_fs * | fs, |
const char * | path, | ||
const char * | buf, | ||
size_t | size, | ||
off_t | offset ) |
파일 쓰기
fs | 파일 시스템 컨텍스트 |
path | 파일 경로 |
buf | 쓸 데이터 버퍼 |
size | 쓸 바이트 수 |
offset | 쓰기 오프셋 |
지정된 경로의 파일에 사용자 버퍼의 데이터를 기록한다.
fs | 파일 시스템 컨텍스트 포인터 |
path | 쓰기 대상 파일 경로 (null-terminated 문자열) |
buf | 기록할 데이터가 담긴 버퍼 포인터 |
size | 기록할 바이트 수 |
offset | 파일 내 시작 오프셋 (바이트 단위) |
< 현재 오프셋
< 논리 블록 인덱스
< 블록 내 오프셋
< 블록 경계까지 쓸 바이트
< 대상 블록 포인터 위치
< 실제 할당된 디스크 블록 번호
< 1차 인덱스
< 2차 인덱스
< 수정 시간 갱신
< 변경 시간 갱신
struct fuse_operations * sfuse_get_operations | ( | void | ) |
SFUSE용 FUSE operations 구조체 반환
SFUSE용 FUSE operations 구조체 반환
생성된 콜백 함수들을 ops 구조체에 등록하여 반환한다.
ops.c 파일의 232 번째 라인에서 정의되었습니다.
|
extern |
강제 포맷 옵션 플래그
< fs_initialize, fs_teardown, g_force_format extern
main.c에서 정의되며, fs_initialize에서 VSFS 포맷을 강제할 때 사용됩니다.
강제 포맷 옵션 플래그
이 플래그는 main.c에서 정의되며, FS 초기화 시 포맷을 강제할 때 사용됩니다.
< fs_initialize, fs_teardown, g_force_format extern
main.c에서 정의되며, fs_initialize에서 VSFS 포맷을 강제할 때 사용됩니다.