#ifndef __ZVFS_HOOK_DIR_H__
#define __ZVFS_HOOK_DIR_H__

#include <fcntl.h>

/*
 * 目录操作 hook。
 *
 * mkdir / rmdir / opendir / readdir / getdents64 全部透传，不 hook。
 * 只需要感知路径变化的操作才进这里：
 *
 *   unlink / unlinkat
 *     - 真实文件由 real_unlink 删除
 *     - 若路径在 path_cache 中：
 *         若 ref_count == 0：blob_delete + inode_remove + path_cache_remove
 *         若 ref_count  > 0：标记 inode->deleted = true，
 *                            ref_count 归零时（close 路径）再 blob_delete
 *
 *   rename / renameat / renameat2
 *     - 真实文件由 real_rename* 移动（xattr 跟随文件，不需要重写）
 *     - path_cache_rename 更新内存缓存
 *     - renameat2 RENAME_EXCHANGE 返回 ENOTSUP
 */

int unlink(const char *path);
int unlinkat(int dirfd, const char *path, int flags);

int rename(const char *oldpath, const char *newpath);
int renameat(int olddirfd, const char *oldpath,
             int newdirfd, const char *newpath);

#endif // __ZVFS_HOOK_DIR_H__