60
60
#ifdef _KERNEL
61
61
#include <linux/kmap_compat.h>
62
62
#include <linux/scatterlist.h>
63
+ #endif
64
+
65
+ #ifdef _KERNEL
66
+ #if defined(MAX_ORDER )
67
+ #define ABD_MAX_ORDER (MAX_ORDER)
68
+ #elif defined(MAX_PAGE_ORDER )
69
+ #define ABD_MAX_ORDER (MAX_PAGE_ORDER)
70
+ #endif
63
71
#else
64
- #define MAX_ORDER 1
72
+ #define ABD_MAX_ORDER (1)
65
73
#endif
66
74
67
75
typedef struct abd_stats {
@@ -71,7 +79,7 @@ typedef struct abd_stats {
71
79
kstat_named_t abdstat_scatter_cnt ;
72
80
kstat_named_t abdstat_scatter_data_size ;
73
81
kstat_named_t abdstat_scatter_chunk_waste ;
74
- kstat_named_t abdstat_scatter_orders [MAX_ORDER ];
82
+ kstat_named_t abdstat_scatter_orders [ABD_MAX_ORDER ];
75
83
kstat_named_t abdstat_scatter_page_multi_chunk ;
76
84
kstat_named_t abdstat_scatter_page_multi_zone ;
77
85
kstat_named_t abdstat_scatter_page_alloc_retry ;
@@ -139,7 +147,7 @@ static struct {
139
147
wmsum_t abdstat_scatter_cnt ;
140
148
wmsum_t abdstat_scatter_data_size ;
141
149
wmsum_t abdstat_scatter_chunk_waste ;
142
- wmsum_t abdstat_scatter_orders [MAX_ORDER ];
150
+ wmsum_t abdstat_scatter_orders [ABD_MAX_ORDER ];
143
151
wmsum_t abdstat_scatter_page_multi_chunk ;
144
152
wmsum_t abdstat_scatter_page_multi_zone ;
145
153
wmsum_t abdstat_scatter_page_alloc_retry ;
@@ -222,7 +230,7 @@ abd_free_struct_impl(abd_t *abd)
222
230
}
223
231
224
232
#ifdef _KERNEL
225
- static unsigned zfs_abd_scatter_max_order = MAX_ORDER - 1 ;
233
+ static unsigned zfs_abd_scatter_max_order = ABD_MAX_ORDER - 1 ;
226
234
227
235
/*
228
236
* Mark zfs data pages so they can be excluded from kernel crash dumps
@@ -272,7 +280,8 @@ abd_alloc_chunks(abd_t *abd, size_t size)
272
280
struct page * page , * tmp_page = NULL ;
273
281
gfp_t gfp = __GFP_NOWARN | GFP_NOIO ;
274
282
gfp_t gfp_comp = (gfp | __GFP_NORETRY | __GFP_COMP ) & ~__GFP_RECLAIM ;
275
- unsigned int max_order = MIN (zfs_abd_scatter_max_order , MAX_ORDER - 1 );
283
+ unsigned int max_order = MIN (zfs_abd_scatter_max_order ,
284
+ ABD_MAX_ORDER - 1 );
276
285
unsigned int nr_pages = abd_chunkcnt_for_bytes (size );
277
286
unsigned int chunks = 0 , zones = 0 ;
278
287
size_t remaining_size ;
@@ -729,7 +738,7 @@ abd_kstats_update(kstat_t *ksp, int rw)
729
738
wmsum_value (& abd_sums .abdstat_scatter_data_size );
730
739
as -> abdstat_scatter_chunk_waste .value .ui64 =
731
740
wmsum_value (& abd_sums .abdstat_scatter_chunk_waste );
732
- for (int i = 0 ; i < MAX_ORDER ; i ++ ) {
741
+ for (int i = 0 ; i < ABD_MAX_ORDER ; i ++ ) {
733
742
as -> abdstat_scatter_orders [i ].value .ui64 =
734
743
wmsum_value (& abd_sums .abdstat_scatter_orders [i ]);
735
744
}
@@ -758,7 +767,7 @@ abd_init(void)
758
767
wmsum_init (& abd_sums .abdstat_scatter_cnt , 0 );
759
768
wmsum_init (& abd_sums .abdstat_scatter_data_size , 0 );
760
769
wmsum_init (& abd_sums .abdstat_scatter_chunk_waste , 0 );
761
- for (i = 0 ; i < MAX_ORDER ; i ++ )
770
+ for (i = 0 ; i < ABD_MAX_ORDER ; i ++ )
762
771
wmsum_init (& abd_sums .abdstat_scatter_orders [i ], 0 );
763
772
wmsum_init (& abd_sums .abdstat_scatter_page_multi_chunk , 0 );
764
773
wmsum_init (& abd_sums .abdstat_scatter_page_multi_zone , 0 );
@@ -768,7 +777,7 @@ abd_init(void)
768
777
abd_ksp = kstat_create ("zfs" , 0 , "abdstats" , "misc" , KSTAT_TYPE_NAMED ,
769
778
sizeof (abd_stats ) / sizeof (kstat_named_t ), KSTAT_FLAG_VIRTUAL );
770
779
if (abd_ksp != NULL ) {
771
- for (i = 0 ; i < MAX_ORDER ; i ++ ) {
780
+ for (i = 0 ; i < ABD_MAX_ORDER ; i ++ ) {
772
781
snprintf (abd_stats .abdstat_scatter_orders [i ].name ,
773
782
KSTAT_STRLEN , "scatter_order_%d" , i );
774
783
abd_stats .abdstat_scatter_orders [i ].data_type =
@@ -798,7 +807,7 @@ abd_fini(void)
798
807
wmsum_fini (& abd_sums .abdstat_scatter_cnt );
799
808
wmsum_fini (& abd_sums .abdstat_scatter_data_size );
800
809
wmsum_fini (& abd_sums .abdstat_scatter_chunk_waste );
801
- for (int i = 0 ; i < MAX_ORDER ; i ++ )
810
+ for (int i = 0 ; i < ABD_MAX_ORDER ; i ++ )
802
811
wmsum_fini (& abd_sums .abdstat_scatter_orders [i ]);
803
812
wmsum_fini (& abd_sums .abdstat_scatter_page_multi_chunk );
804
813
wmsum_fini (& abd_sums .abdstat_scatter_page_multi_zone );
0 commit comments