File tree 6 files changed +38
-12
lines changed
6 files changed +38
-12
lines changed Original file line number Diff line number Diff line change @@ -221,7 +221,12 @@ bpf_init(struct bpf_info *bpf)
221
221
bpf -> idr_type = IDR_ORIG ;
222
222
do_old_idr (IDR_ORIG_INIT , 0 , NULL );
223
223
} else if (STREQ (MEMBER_TYPE_NAME ("idr" , "idr_rt" ), "radix_tree_root" ))
224
- bpf -> idr_type = IDR_RADIX ;
224
+ if (MEMBER_EXISTS ("radix_tree_root" , "rnode" ))
225
+ bpf -> idr_type = IDR_RADIX ;
226
+ else if (MEMBER_EXISTS ("radix_tree_root" , "xa_head" ))
227
+ bpf -> idr_type = IDR_XARRAY ;
228
+ else
229
+ error (FATAL , "cannot determine IDR list type\n" );
225
230
else if (STREQ (MEMBER_TYPE_NAME ("idr" , "idr_rt" ), "xarray" ))
226
231
bpf -> idr_type = IDR_XARRAY ;
227
232
else
Original file line number Diff line number Diff line change @@ -2217,7 +2217,9 @@ dump_inode_page_cache_info(ulong inode)
2217
2217
2218
2218
xarray = root_rnode = count = 0 ;
2219
2219
if (MEMBER_EXISTS ("address_space" , "i_pages" ) &&
2220
- STREQ (MEMBER_TYPE_NAME ("address_space" , "i_pages" ), "xarray" ))
2220
+ (STREQ (MEMBER_TYPE_NAME ("address_space" , "i_pages" ), "xarray" ) ||
2221
+ (STREQ (MEMBER_TYPE_NAME ("address_space" , "i_pages" ), "radix_tree_root" ) &&
2222
+ MEMBER_EXISTS ("radix_tree_root" , "xa_head" ))))
2221
2223
xarray = i_mapping + OFFSET (address_space_page_tree );
2222
2224
else
2223
2225
root_rnode = i_mapping + OFFSET (address_space_page_tree );
Original file line number Diff line number Diff line change @@ -205,8 +205,12 @@ ipcs_init(void)
205
205
if (VALID_MEMBER (idr_idr_rt )) {
206
206
if (STREQ (MEMBER_TYPE_NAME ("idr" , "idr_rt" ), "xarray" ))
207
207
ipcs_table .init_flags |= IDR_XARRAY ;
208
- else
209
- ipcs_table .init_flags |= IDR_RADIX ;
208
+ else {
209
+ if (MEMBER_EXISTS ("radix_tree_root" , "rnode" ))
210
+ ipcs_table .init_flags |= IDR_RADIX ;
211
+ else if (MEMBER_EXISTS ("radix_tree_root" , "xa_head" ))
212
+ ipcs_table .init_flags |= IDR_XARRAY ;
213
+ }
210
214
} else
211
215
ipcs_table .init_flags |= IDR_ORIG ;
212
216
Original file line number Diff line number Diff line change @@ -534,9 +534,14 @@ kernel_init()
534
534
535
535
if (kernel_symbol_exists ("irq_desc_tree" )) {
536
536
get_symbol_type ("irq_desc_tree" , NULL , & req );
537
- kt -> flags2 |= STREQ (req .type_tag_name , "xarray" ) ?
538
- IRQ_DESC_TREE_XARRAY : IRQ_DESC_TREE_RADIX ;
539
-
537
+ if (STREQ (req .type_tag_name , "xarray" )) {
538
+ kt -> flags2 |= IRQ_DESC_TREE_XARRAY ;
539
+ } else {
540
+ if (MEMBER_EXISTS ("radix_tree_root" , "xa_head" ))
541
+ kt -> flags2 |= IRQ_DESC_TREE_XARRAY ;
542
+ else
543
+ kt -> flags2 |= IRQ_DESC_TREE_RADIX ;
544
+ }
540
545
}
541
546
STRUCT_SIZE_INIT (irq_data , "irq_data" );
542
547
if (VALID_STRUCT (irq_data )) {
Original file line number Diff line number Diff line change @@ -507,10 +507,17 @@ task_init(void)
507
507
OFFSET (pid_namespace_idr ) + OFFSET (idr_idr_rt );
508
508
tt -> flags |= PID_XARRAY ;
509
509
} else if STREQ (MEMBER_TYPE_NAME ("idr" , "idr_rt" ), "radix_tree_root" ) {
510
- tt -> refresh_task_table = refresh_radix_tree_task_table ;
511
- tt -> pid_radix_tree = symbol_value ("init_pid_ns" ) +
512
- OFFSET (pid_namespace_idr ) + OFFSET (idr_idr_rt );
513
- tt -> flags |= PID_RADIX_TREE ;
510
+ if (MEMBER_EXISTS ("radix_tree_root" , "rnode" )) {
511
+ tt -> refresh_task_table = refresh_radix_tree_task_table ;
512
+ tt -> pid_radix_tree = symbol_value ("init_pid_ns" ) +
513
+ OFFSET (pid_namespace_idr ) + OFFSET (idr_idr_rt );
514
+ tt -> flags |= PID_RADIX_TREE ;
515
+ } else if (MEMBER_EXISTS ("radix_tree_root" , "xa_head" )) {
516
+ tt -> refresh_task_table = refresh_xarray_task_table ;
517
+ tt -> pid_xarray = symbol_value ("init_pid_ns" ) +
518
+ OFFSET (pid_namespace_idr ) + OFFSET (idr_idr_rt );
519
+ tt -> flags |= PID_XARRAY ;
520
+ }
514
521
} else
515
522
error (FATAL , "unknown pid_namespace.idr type: %s\n" ,
516
523
MEMBER_TYPE_NAME ("idr" , "idr_rt" ));
Original file line number Diff line number Diff line change @@ -4241,7 +4241,10 @@ cmd_tree()
4241
4241
}
4242
4242
4243
4243
if (STRNEQ (optarg , "ra" ))
4244
- type_flag = RADIXTREE_REQUEST ;
4244
+ if (MEMBER_EXISTS ("radix_tree_root" , "xa_head" ))
4245
+ type_flag = XARRAY_REQUEST ;
4246
+ else
4247
+ type_flag = RADIXTREE_REQUEST ;
4245
4248
else if (STRNEQ (optarg , "rb" ))
4246
4249
type_flag = RBTREE_REQUEST ;
4247
4250
else if (STRNEQ (optarg , "x" ))
You can’t perform that action at this time.
0 commit comments