/* * cow.h * * Created on: 22.08.2018 * Author: michael */ #ifndef COW_H_ #define COW_H_ #include #include #include #include #include #include #include "../shared/fdsignal.h" typedef struct cow_request{ struct cow_request *next; off_t offset; off_t end; struct cow_request *dependencies[6]; struct cow_request *myDependencies[6]; dnbd3_signal_t* signal; }cow_request; bool create_cow_file(char *cow_path, char *image_Name,uint64_t imageSize); bool createBigBlock(unsigned long id); void onClose(); cow_request getAccess(off_t offset,size_t size); void closeAcccess(cow_request *request); int write_cow(const char *data, size_t size, off_t offset); int writeToBigBlock(unsigned long bigBlockId,const char *data, off_t offset,size_t size); int getSmallBlockId(off_t offset); int cow_read(char *buf, size_t size, off_t offset); int readBigBlock(long bigBlockId ,char *buf,size_t size, off_t offset); void test(); #endif /* COW_H_ */