@@ -66,11 +66,11 @@ void pmemKVpairSet(void *key, void *val)
66
66
67
67
kv_PM_oid = sdsPMEMoidBackReference ((sds )key );
68
68
kv_PM_p = (struct key_val_pair_PM * )pmemobj_direct (* kv_PM_oid );
69
- TX_ADD_DIRECT (kv_PM_p );
70
69
71
70
val_oid .pool_uuid_lo = server .pool_uuid_lo ;
72
71
val_oid .off = (uint64_t )val - (uint64_t )server .pm_pool -> addr ;
73
72
73
+ TX_ADD_FIELD_DIRECT (kv_PM_p , val_oid );
74
74
kv_PM_p -> val_oid = val_oid ;
75
75
return ;
76
76
}
@@ -97,16 +97,17 @@ pmemAddToPmemList(void *key, void *val)
97
97
kv_PM_p -> val_oid = val_oid ;
98
98
typed_kv_PM .oid = kv_PM ;
99
99
100
- pmemobj_tx_add_range (server .pm_rootoid .oid , 0 , sizeof (struct redis_pmem_root ));
101
100
root = pmemobj_direct (server .pm_rootoid .oid );
102
101
103
102
kv_PM_p -> pmem_list_next = root -> pe_first ;
104
103
if (!TOID_IS_NULL (root -> pe_first )) {
105
- TX_ADD (D_RW (root -> pe_first )-> pmem_list_prev );
106
- D_RW (root -> pe_first )-> pmem_list_prev = typed_kv_PM ;
104
+ struct key_val_pair_PM * head = D_RW (root -> pe_first );
105
+ TX_ADD_FIELD_DIRECT (head ,pmem_list_prev );
106
+ head -> pmem_list_prev = typed_kv_PM ;
107
107
}
108
- root -> pe_first = typed_kv_PM ;
109
108
109
+ TX_ADD_DIRECT (root );
110
+ root -> pe_first = typed_kv_PM ;
110
111
root -> num_dict_entries ++ ;
111
112
112
113
return kv_PM ;
@@ -118,35 +119,40 @@ pmemRemoveFromPmemList(PMEMoid kv_PM_oid)
118
119
TOID (struct key_val_pair_PM ) typed_kv_PM ;
119
120
struct redis_pmem_root * root ;
120
121
121
- pmemobj_tx_add_range (server .pm_rootoid .oid , 0 , sizeof (struct redis_pmem_root ));
122
122
root = pmemobj_direct (server .pm_rootoid .oid );
123
123
124
124
typed_kv_PM .oid = kv_PM_oid ;
125
125
126
126
if (TOID_EQUALS (root -> pe_first , typed_kv_PM )) {
127
127
TOID (struct key_val_pair_PM ) typed_kv_PM_next = D_RO (typed_kv_PM )-> pmem_list_next ;
128
128
if (!TOID_IS_NULL (typed_kv_PM_next )){
129
- TX_ADD (typed_kv_PM_next );
130
- D_RW (typed_kv_PM_next )-> pmem_list_prev .oid = OID_NULL ;
129
+ struct key_val_pair_PM * next = D_RW (typed_kv_PM_next );
130
+ TX_ADD_FIELD_DIRECT (next ,pmem_list_prev );
131
+ next -> pmem_list_prev .oid = OID_NULL ;
131
132
}
132
133
TX_FREE (root -> pe_first );
134
+ TX_ADD_DIRECT (root );
133
135
root -> pe_first = typed_kv_PM_next ;
136
+ root -> num_dict_entries -- ;
137
+ return ;
134
138
}
135
139
else {
136
140
TOID (struct key_val_pair_PM ) typed_kv_PM_prev = D_RO (typed_kv_PM )-> pmem_list_prev ;
137
141
TOID (struct key_val_pair_PM ) typed_kv_PM_next = D_RO (typed_kv_PM )-> pmem_list_next ;
138
142
if (!TOID_IS_NULL (typed_kv_PM_prev )){
139
- TX_ADD (typed_kv_PM_prev );
140
- D_RW (typed_kv_PM_prev )-> pmem_list_next = typed_kv_PM_next ;
143
+ struct key_val_pair_PM * prev = D_RW (typed_kv_PM_prev );
144
+ TX_ADD_FIELD_DIRECT (prev ,pmem_list_next );
145
+ prev -> pmem_list_next = typed_kv_PM_next ;
141
146
}
142
147
if (!TOID_IS_NULL (typed_kv_PM_next )){
143
- TX_ADD (typed_kv_PM_next );
144
- D_RW (typed_kv_PM_next )-> pmem_list_prev = typed_kv_PM_prev ;
148
+ struct key_val_pair_PM * next = D_RW (typed_kv_PM_next );
149
+ TX_ADD_FIELD_DIRECT (next ,pmem_list_prev );
150
+ next -> pmem_list_prev = typed_kv_PM_prev ;
145
151
}
146
152
TX_FREE (typed_kv_PM );
153
+ TX_ADD_FIELD_DIRECT (root ,num_dict_entries );
154
+ root -> num_dict_entries -- ;
155
+ return ;
147
156
}
148
-
149
- root -> num_dict_entries -- ;
150
- return ;
151
157
}
152
158
#endif
0 commit comments