18f8d8a575be5ee7c01438c98ff001ce0bc054115Darrick J. Wong#ifndef _CREATE_INODE_H 28f8d8a575be5ee7c01438c98ff001ce0bc054115Darrick J. Wong#define _CREATE_INODE_H 38f8d8a575be5ee7c01438c98ff001ce0bc054115Darrick J. Wong 40d4deba22e2aa95ad958b44972dc933fd0ebbc59Robert Yang#include <sys/types.h> 50d4deba22e2aa95ad958b44972dc933fd0ebbc59Robert Yang#include <sys/stat.h> 60d4deba22e2aa95ad958b44972dc933fd0ebbc59Robert Yang#include <fcntl.h> 70d4deba22e2aa95ad958b44972dc933fd0ebbc59Robert Yang#include "et/com_err.h" 80d4deba22e2aa95ad958b44972dc933fd0ebbc59Robert Yang#include "e2p/e2p.h" 90d4deba22e2aa95ad958b44972dc933fd0ebbc59Robert Yang#include "ext2fs/ext2fs.h" 100d4deba22e2aa95ad958b44972dc933fd0ebbc59Robert Yang 11f84894bc047898559f314531ed469c52d79ad7f2Robert Yangstruct hdlink_s 12f84894bc047898559f314531ed469c52d79ad7f2Robert Yang{ 13b99888a070656cb81994d2e1e08d946597b1fe43Darrick J. Wong dev_t src_dev; 14b99888a070656cb81994d2e1e08d946597b1fe43Darrick J. Wong ino_t src_ino; 15f84894bc047898559f314531ed469c52d79ad7f2Robert Yang ext2_ino_t dst_ino; 16f84894bc047898559f314531ed469c52d79ad7f2Robert Yang}; 17f84894bc047898559f314531ed469c52d79ad7f2Robert Yang 18f84894bc047898559f314531ed469c52d79ad7f2Robert Yangstruct hdlinks_s 19f84894bc047898559f314531ed469c52d79ad7f2Robert Yang{ 20f84894bc047898559f314531ed469c52d79ad7f2Robert Yang int count; 21b99888a070656cb81994d2e1e08d946597b1fe43Darrick J. Wong int size; 22f84894bc047898559f314531ed469c52d79ad7f2Robert Yang struct hdlink_s *hdl; 23f84894bc047898559f314531ed469c52d79ad7f2Robert Yang}; 24f84894bc047898559f314531ed469c52d79ad7f2Robert Yang 25b99888a070656cb81994d2e1e08d946597b1fe43Darrick J. Wong#define HDLINK_CNT (4) 26f84894bc047898559f314531ed469c52d79ad7f2Robert Yang 276686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknechtstruct fs_ops_callbacks { 286686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknecht errcode_t (* create_new_inode)(ext2_filsys fs, const char *target_path, 296686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknecht const char *name, ext2_ino_t parent_ino, ext2_ino_t root, 306686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknecht mode_t mode); 316686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknecht errcode_t (* end_create_new_inode)(ext2_filsys fs, 326686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknecht const char *target_path, const char *name, 336686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknecht ext2_ino_t parent_ino, ext2_ino_t root, mode_t mode); 346686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknecht}; 356686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknecht 360d4deba22e2aa95ad958b44972dc933fd0ebbc59Robert Yang/* For populating the filesystem */ 37a3111e80b82d28e2ad5c8ad74bc4acecf559d1d4Darrick J. Wongextern errcode_t populate_fs(ext2_filsys fs, ext2_ino_t parent_ino, 38a3111e80b82d28e2ad5c8ad74bc4acecf559d1d4Darrick J. Wong const char *source_dir, ext2_ino_t root); 396686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknechtextern errcode_t populate_fs2(ext2_filsys fs, ext2_ino_t parent_ino, 406686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknecht const char *source_dir, ext2_ino_t root, 416686ee96494413b48aa3dd70b5db533cbb7e4852Adrien Schildknecht struct fs_ops_callbacks *fs_callbacks); 42a3111e80b82d28e2ad5c8ad74bc4acecf559d1d4Darrick J. Wongextern errcode_t do_mknod_internal(ext2_filsys fs, ext2_ino_t cwd, 43a3111e80b82d28e2ad5c8ad74bc4acecf559d1d4Darrick J. Wong const char *name, struct stat *st); 44a3111e80b82d28e2ad5c8ad74bc4acecf559d1d4Darrick J. Wongextern errcode_t do_symlink_internal(ext2_filsys fs, ext2_ino_t cwd, 45a3111e80b82d28e2ad5c8ad74bc4acecf559d1d4Darrick J. Wong const char *name, char *target, 46a3111e80b82d28e2ad5c8ad74bc4acecf559d1d4Darrick J. Wong ext2_ino_t root); 47a3111e80b82d28e2ad5c8ad74bc4acecf559d1d4Darrick J. Wongextern errcode_t do_mkdir_internal(ext2_filsys fs, ext2_ino_t cwd, 4825f291c9b32d8017e6969c72a75e37d354c0570bTheodore Ts'o const char *name, ext2_ino_t root); 49a3111e80b82d28e2ad5c8ad74bc4acecf559d1d4Darrick J. Wongextern errcode_t do_write_internal(ext2_filsys fs, ext2_ino_t cwd, 50a3111e80b82d28e2ad5c8ad74bc4acecf559d1d4Darrick J. Wong const char *src, const char *dest, 51a3111e80b82d28e2ad5c8ad74bc4acecf559d1d4Darrick J. Wong ext2_ino_t root); 528f8d8a575be5ee7c01438c98ff001ce0bc054115Darrick J. Wong 538f8d8a575be5ee7c01438c98ff001ce0bc054115Darrick J. Wong#endif /* _CREATE_INODE_H */ 54