#ifndef __ZVFS_HOOK_SEEK_H__
#define __ZVFS_HOOK_SEEK_H__

#include <sys/types.h>
#include <unistd.h>

/*
 * lseek：更新 of->offset（非 O_APPEND fd）。
 *
 * truncate / ftruncate：
 *   更新 inode->logical_size，同步 st_size（ftruncate 到真实 fd），
 *   若 new_size < old_size，截断对 blob 的写入范围（blob_resize）。
 *
 * fallocate / posix_fallocate：
 *   zvfs 无"空洞"概念，blob 按需增长。
 *   对 zvfs fd，fallocate 只更新 logical_size（预占逻辑空间），
 *   不调用 blob_resize（避免提前分配 SPDK cluster）。
 *   FALLOC_FL_KEEP_SIZE 模式：不改 logical_size，直接返回 0。
 *   FALLOC_FL_PUNCH_HOLE：暂不支持，返回 ENOTSUP。
 */

off_t lseek(int fd, off_t offset, int whence);
off_t lseek64(int fd, off_t offset, int whence);

int truncate(const char *path, off_t length);
int truncate64(const char *path, off_t length);
int ftruncate(int fd, off_t length);
int ftruncate64(int fd, off_t length);

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

#endif // __ZVFS_HOOK_SEEK_H__