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인지 확인을 해준다.
(현재 queue init은 write path안에서 해주고 있다.)
3. push한 주소 꺼내서 읽어보기
// fs/nova/dedup.c
// Get next Dedup queue entry
u64 nova_dedup_queue_get_next_entry(void){
struct nova_dedup_queue *ptr;
if(nova_dedup_queue_head.list.next){
ptr = list_entry(nova_dedup_queue_head.list.next, struct nova_dedup_queue, list);
printk("checking~ %llu\n",ptr->write_entry_address);
return 1;
}
else{
return 0;
}
}
4. 결과
마지막으로 저장된 주소와 pop했을 때의 주소가 같다. 성공!
'DeNOVA Test' 카테고리의 다른 글
10. Fingerprinting algorithm 설정 + dedup queue 수정 (0) | 2021.07.31 |
---|---|
9. Dedup Queue remove (dedup-queue 3부) (0) | 2021.07.21 |
7. Dedup Queue 선언해보기(dedup-queue 1부) (0) | 2021.07.21 |
6. Radix Tree추가해보기 2부 (실제 코딩) (0) | 2021.07.20 |
5. Radix Tree추가해보기 1부 (Free list로 탐색) (0) | 2021.07.20 |