| #ifndef _ZFS_PAGE_COMPAT_H |
| #define _ZFS_PAGE_COMPAT_H |
| |
| /* |
| * We have various enum members moving between two separate enum types, |
| * and accessed by different functions at various times. Centralise the |
| * insanity. |
| * |
| * < v4.8: all enums in zone_stat_item, via global_page_state() |
| * v4.8: some enums moved to node_stat_item, global_node_page_state() introduced |
| * v4.13: some enums moved from zone_stat_item to node_state_item |
| * v4.14: global_page_state() rename to global_zone_page_state() |
| * |
| * The defines used here are created by config/kernel-global_page_state.m4 |
| */ |
| |
| /* |
| * Create our own accessor functions to follow the Linux API changes |
| */ |
| #if defined(ZFS_GLOBAL_ZONE_PAGE_STATE) |
| |
| /* global_zone_page_state() introduced */ |
| #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES) |
| #define nr_file_pages() global_node_page_state(NR_FILE_PAGES) |
| #else |
| #define nr_file_pages() global_zone_page_state(NR_FILE_PAGES) |
| #endif |
| #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON) |
| #define nr_inactive_anon_pages() global_node_page_state(NR_INACTIVE_ANON) |
| #else |
| #define nr_inactive_anon_pages() global_zone_page_state(NR_INACTIVE_ANON) |
| #endif |
| #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE) |
| #define nr_inactive_file_pages() global_node_page_state(NR_INACTIVE_FILE) |
| #else |
| #define nr_inactive_file_pages() global_zone_page_state(NR_INACTIVE_FILE) |
| #endif |
| |
| #elif defined(ZFS_GLOBAL_NODE_PAGE_STATE) |
| |
| /* global_node_page_state() introduced */ |
| #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES) |
| #define nr_file_pages() global_node_page_state(NR_FILE_PAGES) |
| #else |
| #define nr_file_pages() global_page_state(NR_FILE_PAGES) |
| #endif |
| #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON) |
| #define nr_inactive_anon_pages() global_node_page_state(NR_INACTIVE_ANON) |
| #else |
| #define nr_inactive_anon_pages() global_page_state(NR_INACTIVE_ANON) |
| #endif |
| #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE) |
| #define nr_inactive_file_pages() global_node_page_state(NR_INACTIVE_FILE) |
| #else |
| #define nr_inactive_file_pages() global_page_state(NR_INACTIVE_FILE) |
| #endif |
| |
| #else |
| |
| /* global_page_state() only */ |
| #define nr_file_pages() global_page_state(NR_FILE_PAGES) |
| #define nr_inactive_anon_pages() global_page_state(NR_INACTIVE_ANON) |
| #define nr_inactive_file_pages() global_page_state(NR_INACTIVE_FILE) |
| |
| #endif /* ZFS_GLOBAL_ZONE_PAGE_STATE */ |
| |
| #endif /* _ZFS_PAGE_COMPAT_H */ |