@@ -23,58 +23,45 @@ static void clean_dr_mmap() {
2323 struct free_dr_pool * temp_dr_good_info = NULL ;
2424 int dr_fd = 0 , ret = 0 , i = 0 , j = 0 ;
2525 int num_blocks = clean_overwrite == 1 ? (DR_OVER_SIZE / MMAP_PAGE_SIZE ) : (DR_SIZE / MMAP_PAGE_SIZE );
26+ size_t mmap_size = clean_overwrite == 1 ? DR_OVER_SIZE : DR_SIZE ;
2627 char prefault_buf [MMAP_PAGE_SIZE ];
2728 struct stat stat_buf ;
2829 char dr_fname [256 ];
29-
30+
3031 DEBUG_FILE ("%s: Enterred BG thread successfully. Will mmap\n" , __func__ );
3132
3233 for (i = 0 ; i < MMAP_PAGE_SIZE ; i ++ )
3334 prefault_buf [i ] = '0' ;
3435 for (i = 0 ; i < BG_NUM_DR ; i ++ ) {
3536 temp_dr_good_info = (struct free_dr_pool * ) malloc (sizeof (struct free_dr_pool ));
3637 if (clean_overwrite )
37- sprintf (dr_fname , "%s%s" , NVMM_PATH , "DR-OVER-XXXXXX" );
38+ sprintf (dr_fname , "%s%s" , NVMM_PATH , "DR-OVER-XXXXXX" );
3839 else
39- sprintf (dr_fname , "%s%s" , NVMM_PATH , "DR-XXXXXX" );
40+ sprintf (dr_fname , "%s%s" , NVMM_PATH , "DR-XXXXXX" );
4041 dr_fd = _hub_find_fileop ("posix" )-> OPEN (mktemp (dr_fname ), O_RDWR | O_CREAT , 0666 );
4142 if (dr_fd < 0 ) {
4243 MSG ("%s: mkstemp of DR file failed. Err = %s\n" ,
4344 __func__ , strerror (errno ));
4445 assert (0 );
4546 }
46- if (clean_overwrite )
47- ret = posix_fallocate (dr_fd , 0 , DR_OVER_SIZE );
48- else
49- ret = posix_fallocate (dr_fd , 0 , DR_SIZE );
50-
47+
48+ ret = posix_fallocate (dr_fd , 0 , mmap_size );
49+
5150 if (ret < 0 ) {
5251 MSG ("%s: posix_fallocate failed. Err = %s\n" ,
5352 __func__ , strerror (errno ));
5453 assert (0 );
5554 }
5655
57- if (clean_overwrite ) {
58- temp_dr_good_info -> start_addr = (unsigned long ) FSYNC_MMAP
59- (
60- NULL ,
61- DR_OVER_SIZE ,
62- PROT_READ | PROT_WRITE , //max_perms,
63- MAP_SHARED | MAP_POPULATE ,
64- dr_fd , //fd_with_max_perms,
65- 0
66- );
67- } else {
68- temp_dr_good_info -> start_addr = (unsigned long ) FSYNC_MMAP
69- (
70- NULL ,
71- DR_SIZE ,
72- PROT_READ | PROT_WRITE , //max_perms,
73- MAP_SHARED | MAP_POPULATE ,
74- dr_fd , //fd_with_max_perms,
75- 0
76- );
77- }
56+ temp_dr_good_info -> start_addr = (unsigned long ) FSYNC_MMAP
57+ (
58+ NULL ,
59+ mmap_size ,
60+ PROT_READ | PROT_WRITE , //max_perms,
61+ MAP_SHARED | MAP_POPULATE ,
62+ dr_fd , //fd_with_max_perms,
63+ 0
64+ );
7865 if (temp_dr_good_info -> start_addr == 0 ) {
7966 MSG ("%s: mmap failed. Err = %s\n" , __func__ , strerror (errno ));
8067 assert (0 );
@@ -96,7 +83,7 @@ static void clean_dr_mmap() {
9683 perfmodel_add_delay (0 , MMAP_PAGE_SIZE );
9784#endif //NVM_DELAY
9885 }
99-
86+
10087 num_mmap ++ ;
10188 num_drs ++ ;
10289 fstat (dr_fd , & stat_buf );
@@ -115,15 +102,20 @@ static void clean_dr_mmap() {
115102 __func__ , temp_dr_good_info -> dr_fd , temp_dr_good_info -> start_addr , temp_dr_good_info -> valid_offset ,
116103 temp_dr_good_info -> dr_offset_start , temp_dr_good_info -> dr_offset_end );
117104
118- LFDS711_QUEUE_UMM_SET_VALUE_IN_ELEMENT (temp_dr_good_info -> qe , temp_dr_good_info );
119- if (clean_overwrite )
120- lfds711_queue_umm_enqueue ( & qs_over , & (temp_dr_good_info -> qe ) );
121- else
122- lfds711_queue_umm_enqueue ( & qs , & (temp_dr_good_info -> qe ) );
105+ //LFDS711_QUEUE_UMM_SET_VALUE_IN_ELEMENT(temp_dr_good_info->qe, temp_dr_good_info);
106+ if (clean_overwrite ) {
107+ if (lfq_enqueue (& staging_over_mmap_queue_ctx , temp_dr_good_info ) != 0 )
108+ assert (0 );
109+ //lfds711_queue_umm_enqueue( &qs_over, &(temp_dr_good_info->qe) );
110+ } else {
111+ if (lfq_enqueue (& staging_mmap_queue_ctx , temp_dr_good_info ) != 0 )
112+ assert (0 );
113+ //lfds711_queue_umm_enqueue( &qs, &(temp_dr_good_info->qe) );
114+ }
123115 dr_fname [0 ] = '\0' ;
124116 __atomic_fetch_add (& num_drs_left , 1 , __ATOMIC_SEQ_CST );
125117 }
126-
118+
127119 DEBUG_FILE ("%s: Returning successfully\n" , __func__ );
128120 DEBUG_FILE ("%s: ------------- \n" , __func__ );
129121
0 commit comments