아무것도 몰라요

DeNOVA Test 10

10. Fingerprinting algorithm 설정 + dedup queue 수정

우선 진행 과정을 간단하게 설명하자면 - Fingerprinting algorithm SHA1으로 변경 - Radix tree, RB tree, B+ tree 등, dedup-table을 위한 트리를 생각했지만 공간 복잡도 문제로 포기 - Dedup table을 파일로 만들었었지만, pre-defined 영역으로 변경 오늘 기록할 내용은 우선 Linux Crypto API를 사용하여 SHA1알고리즘을 사용한 예시이고 또한 dedup queue에 push 하는 부분을 수정한 것이다. dedup queue에 기존에는 write entry의 주소만을 넣었지만, write entry만으로는 파일의 inode에 대한 접근을 할 수 없었다. inode log에 read, write을 해야 되는 특성상 lock을 잡..

DeNOVA Test 2021.07.31

8. Dedup Queue insert (dedup-queue 2부)

1. dedup-queue 자료구조 변경 // fs/nova/dedup.h /* nova_dedup_queue queue of entries that needs to be deduplicated */ struct nova_dedup_queue{ u64 write_entry_address; struct list_head list; }; 2. write path를 따라가서 write-entry의 pmem주소 찾기 // fs/nova/log.c /* DEDUP NOVA KHJ */ if(type == FILE_WRITE){ nova_dedup_queue_push(curr_p); } /*****************/ 해당 함수에는 다른 entry도 들어오기 때문에 Write entry인지 확인을 해준다. (현..

DeNOVA Test 2021.07.21

6. Radix Tree추가해보기 2부 (실제 코딩)

ㅇ1. nova_sb_info에 Radix Tree root를 선언한다. 2. dedup_test에서 SB 뽑아서 radix_tree 초기화해보기 그동안 판 시스템 콜들이 제대로 작동하는지를 알기 위해 경로에 printk들을 심어두었다. // dedup/dedup.c #include #include #include #include int real_dedup(struct file *file){ printk("System Call level\n"); if(file->f_op->dedup){ printk("calling dedup\n"); return file->f_op->dedup(file); } return 0; } int ksys_dedup(unsigned int fd){ struct fd f = fdg..

DeNOVA Test 2021.07.20

5. Radix Tree추가해보기 1부 (Free list로 탐색)

Deduplication 구현에서 가장 중요한 것은 Dedup Table이다. Table에서 fingerprint가 같은 것이 있는지를 확인하고 같은 것이 있다면 저장하지 않는 것이 간단하면서도 중요한 아이디어이다. 하지만 NVMM의 특성상 Search가 빠르지 않기 때문에 이를 도와주기 위해 DRAM에 추가적인 자료구조가 필요하다. NOVA에서 이미 사용하고 있는 Radix-Tree를 사용하기로 하였다. 결국 이 Radix Tree는 File System전체에 하나가 있는 것이다. 그렇다면 이에 대한 접근, 즉 선언은 어디에 해야 되는 것일까? 실제 Table은 root file로 생성하기로 정했다. 그렇다면 Radix tree의 참조는...음...NOVA에 nova_sb_info라는 구조체가 있다. ..

DeNOVA Test 2021.07.20