Skip to content

Commit 1fc6da4

Browse files
committed
separate cr.h and add DUMP_TESTING macro for required places
1 parent 499b164 commit 1fc6da4

12 files changed

+77
-46
lines changed

ckpt_restore_test.sh

+7
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,10 @@ sudo umount -l /mnt/test-verifs2
1111
sudo rm -rf /mnt/test-verifs2/*
1212
sudo umount -l /mnt/test-verifs1
1313
sudo rm -rf /mnt/test-verifs1/*
14+
sudo rm -r /mnt/test-verifs2
15+
sudo rm -r /mnt/test-verifs1
16+
sudo mkdir /mnt/test-verifs2
17+
sudo mkdir /mnt/test-verifs1
18+
sudo chown yifei:yifei /mnt/test-verifs2
19+
sudo chown yifei:yifei /mnt/test-verifs1
20+

src/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.2)
33
set(CMAKE_BUILD_TYPE Debug)
44
# preprocessor for verifying Checkpoint/Restore APIs
55
#add_definitions(-DDUMP_TESTING)
6-
add_executable(fuse-cpp-ramfs main.cpp directory.cpp inode.cpp symlink.cpp file.cpp util.cpp fuse_cpp_ramfs.cpp special_inode.cpp cr.cpp)
6+
add_executable(fuse-cpp-ramfs main.cpp directory.cpp inode.cpp symlink.cpp file.cpp util.cpp fuse_cpp_ramfs.cpp special_inode.cpp cr_util.cpp)
77
add_executable(ckpt ckpt.cpp testops.cpp)
88
add_executable(restore restore.cpp testops.cpp)
99
set_property(TARGET fuse-cpp-ramfs PROPERTY CXX_STANDARD 17)

src/cr.h

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#ifndef cr_h
2+
#define cr_h
3+
4+
#ifdef __cplusplus
5+
extern "C" {
6+
#endif
7+
#include <sys/ioctl.h>
8+
9+
#define VERIFS2_IOC_CODE '1'
10+
#define VERIFS2_IOC_NO(x) (VERIFS2_IOC_CODE + (x))
11+
#define VERIFS2_IOC(n) _IO(VERIFS2_IOC_CODE, VERIFS2_IOC_NO(n))
12+
#define VERIFS2_GET_IOC(n, type) _IOR(VERIFS2_IOC_CODE, VERIFS2_IOC_NO(n), type)
13+
#define VERIFS2_SET_IOC(n, type) _IOW(VERIFS2_IOC_CODE, VERIFS2_IOC_NO(n), type)
14+
15+
#define VERIFS2_CHECKPOINT VERIFS2_IOC(1)
16+
#define VERIFS2_RESTORE VERIFS2_IOC(2)
17+
18+
#ifdef __cplusplus
19+
}
20+
#endif
21+
22+
#endif

src/cr.hpp

-36
This file was deleted.

src/cr.cpp src/cr_util.cpp

+8-6
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@
22
#include <vector>
33
#include <cstdint>
44
#include <cerrno>
5-
#include "cr.hpp"
5+
#include "cr_util.hpp"
66

7-
#define PRINT_CLASS(x) std::cout << "Class Name: " << typeid(x).name() << std::endl
7+
#ifdef DUMP_TESTING
88
#define PRINT_VAL(x) std::cout << #x" : " << x << std::endl
99

1010
bool isExistInDeleted(fuse_ino_t curr_ino, std::queue<fuse_ino_t> DeletedInodes);
1111
void print_ino_queue(std::queue<fuse_ino_t> DeletedInodes);
12+
#endif
1213

13-
std::unordered_map<uint64_t, std::tuple<std::vector <Inode *>, std::queue<fuse_ino_t>, struct statvfs> > state_pool;
14+
std::unordered_map<uint64_t, verifs2_state > state_pool;
1415

1516
int insert_state(uint64_t key,
1617
std::tuple<std::vector <Inode *>, std::queue<fuse_ino_t>,
@@ -25,14 +26,13 @@ int insert_state(uint64_t key,
2526
return 0;
2627
}
2728

28-
std::tuple<std::vector <Inode *>, std::queue<fuse_ino_t>, struct statvfs>
29-
find_state(uint64_t key)
29+
verifs2_state find_state(uint64_t key)
3030
{
3131
auto it = state_pool.find(key);
3232
if (it == state_pool.end()) {
3333
std::queue<fuse_ino_t> empty_queue;
3434
struct statvfs empty_statvfs = {};
35-
return std::tuple<std::vector <Inode *>, std::queue<fuse_ino_t>, struct statvfs>{std::vector <Inode *>(), empty_queue, empty_statvfs};
35+
return verifs2_state{std::vector <Inode *>(), empty_queue, empty_statvfs};
3636
} else {
3737
return it->second;
3838
}
@@ -48,6 +48,7 @@ int remove_state(uint64_t key)
4848
return 0;
4949
}
5050

51+
#ifdef DUMP_TESTING
5152
/* Dump functionalites to verify Checkpoint/Restore APIs */
5253

5354
void dump_File(File* file)
@@ -191,3 +192,4 @@ int dump_state_pool()
191192
return ret;
192193
}
193194

195+
#endif

src/cr_util.hpp

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#ifndef cr_util_hpp
2+
#define cr_util_hpp
3+
4+
#include "inode.hpp"
5+
#include "file.hpp"
6+
#include "directory.hpp"
7+
#include "special_inode.hpp"
8+
#include "symlink.hpp"
9+
10+
typedef std::tuple<std::vector <Inode *>, std::queue<fuse_ino_t>, struct statvfs> verifs2_state;
11+
12+
int insert_state(uint64_t key, verifs2_state fs_states_vec);
13+
verifs2_state find_state(uint64_t key);
14+
int remove_state(uint64_t key);
15+
16+
#ifdef DUMP_TESTING
17+
void dump_File(File* file);
18+
void dump_Directory(Directory* dir);
19+
void dump_SpecialInode(SpecialInode* sinode);
20+
void dump_SymLink(SymLink* symlink);
21+
int dump_inodes_verifs2(std::vector<Inode *> Inodes, std::queue<fuse_ino_t> DeletedInodes,
22+
std::string info);
23+
int dump_state_pool();
24+
bool isExistInDeleted(fuse_ino_t curr_ino, std::queue<fuse_ino_t> DeletedInodes);
25+
void print_ino_queue(std::queue<fuse_ino_t> DeletedInodes);
26+
#endif
27+
28+
#endif

src/directory.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@ class Directory : public Inode {
5656
const std::map<std::string, fuse_ino_t> &Children() { return m_children; }
5757

5858
std::shared_mutex& DirLock() { return childrenRwSem; }
59-
59+
#ifdef DUMP_TESTING
6060
friend void dump_Directory(Directory* dir);
61+
#endif
6162
};
6263

6364
#endif /* directory_hpp */

src/file.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ class File : public Inode {
3030
int FileTruncate(size_t newSize);
3131

3232
friend class FuseRamFs;
33+
#ifdef DUMP_TESTING
3334
friend void dump_File(File* file);
35+
#endif
3436
// size_t Size();
3537
};
3638

src/fuse_cpp_ramfs.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ int FuseRamFs::restore(uint64_t key)
233233
return ret;
234234
}
235235
#endif
236-
std::tuple<std::vector <Inode *>, std::queue<fuse_ino_t>, struct statvfs> stored_states = find_state(key);
236+
verifs2_state stored_states = find_state(key);
237237

238238
std::vector <Inode *> stored_files = std::get<0>(stored_states);
239239
std::queue<fuse_ino_t> stored_DeletedInodes = std::get<1>(stored_states);

src/fuse_cpp_ramfs.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77

88
#include "common.h"
99
#include "inode.hpp"
10-
#include "cr.hpp"
10+
#include "cr_util.hpp"
11+
#include "cr.h"
1112

1213
class Directory;
1314

src/special_inode.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ class SpecialInode : public Inode {
2929
int ReadAndReply(fuse_req_t req, size_t size, off_t off);
3030

3131
enum SpecialInodeTypes Type();
32+
#ifdef DUMP_TESTING
3233
friend void dump_SpecialInode(SpecialInode* sinode);
34+
#endif
3335
};
3436

3537
#endif /* special_inode_hpp */

src/symlink.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ class SymLink : public Inode {
2626

2727

2828
const std::string &Link() { return m_link; }
29+
#ifdef DUMP_TESTING
2930
friend void dump_SymLink(SymLink* m_link);
31+
#endif
3032
};
3133

3234
#endif /* symlink_hpp */

0 commit comments

Comments
 (0)