Hey Vlad, The OFED build for IA64 is broke due to a circular #include list resulting in "struct page" not being defined when page-flags.h is included. This was only hit on IA64 because of certain ASM files including the first of the circular list.
This is fixed by defining cancel_dirty_page where "struct page" is defined (e.g., mm.h), thus removing the possibility of the circular #include. I have verified this builds on IA64 (thanks to UNH) and x86_64, and I have run connectathon on the x86_64 system without issue. Thanks, Jon Signed-Off-By: Jon Mason <[email protected]> diff --git a/kernel_addons/backport/2.6.18-EL5.1/include/linux/mm.h b/kernel_addons/backport/2.6.18-EL5.1/include/linux/mm.h index 31d4849..18fe1e2 100644 --- a/kernel_addons/backport/2.6.18-EL5.1/include/linux/mm.h +++ b/kernel_addons/backport/2.6.18-EL5.1/include/linux/mm.h @@ -2,6 +2,7 @@ #define _BACKPORT_LINUX_MM_H_ #include_next <linux/mm.h> +#include <linux/vmstat.h> #if defined(__i386__) #include <asm/highmem.h> @@ -18,4 +19,22 @@ struct shrinker { long nr; /* objs pending delete */ }; +static inline void task_io_account_cancelled_write(size_t bytes) +{ +} + +static inline void cancel_dirty_page(struct page *page, unsigned int account_size) +{ + if (TestClearPageDirty(page)) { + struct address_space *mapping = page->mapping; + if (mapping && mapping_cap_account_dirty(mapping)) { + dec_zone_page_state(page, NR_FILE_DIRTY); + dec_bdi_stat(mapping->backing_dev_info, + BDI_RECLAIMABLE); + if (account_size) + task_io_account_cancelled_write(account_size); + } + } +} + #endif diff --git a/kernel_addons/backport/2.6.18-EL5.1/include/linux/page-flags.h b/kernel_addons/backport/2.6.18-EL5.1/include/linux/page-flags.h deleted file mode 100644 index bbecbfc..0000000 --- a/kernel_addons/backport/2.6.18-EL5.1/include/linux/page-flags.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef BACKPORT_LINUX_PAGE_FLAGS_H -#define BACKPORT_LINUX_PAGE_FLAGS_H - -#include_next <linux/page-flags.h> -#include <linux/vmstat.h> - -static inline void task_io_account_cancelled_write(size_t bytes) -{ -} - -static inline void cancel_dirty_page(struct page *page, unsigned int account_size) -{ - if (TestClearPageDirty(page)) { - struct address_space *mapping = page->mapping; - if (mapping && mapping_cap_account_dirty(mapping)) { - dec_zone_page_state(page, NR_FILE_DIRTY); - dec_bdi_stat(mapping->backing_dev_info, - BDI_RECLAIMABLE); - if (account_size) - task_io_account_cancelled_write(account_size); - } - } -} - -#endif /* BACKPORT_LINUX_PAGE_FLAGS_H */ diff --git a/kernel_addons/backport/2.6.18-EL5.2/include/linux/mm.h b/kernel_addons/backport/2.6.18-EL5.2/include/linux/mm.h index 31d4849..18fe1e2 100644 --- a/kernel_addons/backport/2.6.18-EL5.2/include/linux/mm.h +++ b/kernel_addons/backport/2.6.18-EL5.2/include/linux/mm.h @@ -2,6 +2,7 @@ #define _BACKPORT_LINUX_MM_H_ #include_next <linux/mm.h> +#include <linux/vmstat.h> #if defined(__i386__) #include <asm/highmem.h> @@ -18,4 +19,22 @@ struct shrinker { long nr; /* objs pending delete */ }; +static inline void task_io_account_cancelled_write(size_t bytes) +{ +} + +static inline void cancel_dirty_page(struct page *page, unsigned int account_size) +{ + if (TestClearPageDirty(page)) { + struct address_space *mapping = page->mapping; + if (mapping && mapping_cap_account_dirty(mapping)) { + dec_zone_page_state(page, NR_FILE_DIRTY); + dec_bdi_stat(mapping->backing_dev_info, + BDI_RECLAIMABLE); + if (account_size) + task_io_account_cancelled_write(account_size); + } + } +} + #endif diff --git a/kernel_addons/backport/2.6.18-EL5.2/include/linux/page-flags.h b/kernel_addons/backport/2.6.18-EL5.2/include/linux/page-flags.h deleted file mode 100644 index bbecbfc..0000000 --- a/kernel_addons/backport/2.6.18-EL5.2/include/linux/page-flags.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef BACKPORT_LINUX_PAGE_FLAGS_H -#define BACKPORT_LINUX_PAGE_FLAGS_H - -#include_next <linux/page-flags.h> -#include <linux/vmstat.h> - -static inline void task_io_account_cancelled_write(size_t bytes) -{ -} - -static inline void cancel_dirty_page(struct page *page, unsigned int account_size) -{ - if (TestClearPageDirty(page)) { - struct address_space *mapping = page->mapping; - if (mapping && mapping_cap_account_dirty(mapping)) { - dec_zone_page_state(page, NR_FILE_DIRTY); - dec_bdi_stat(mapping->backing_dev_info, - BDI_RECLAIMABLE); - if (account_size) - task_io_account_cancelled_write(account_size); - } - } -} - -#endif /* BACKPORT_LINUX_PAGE_FLAGS_H */ diff --git a/kernel_addons/backport/2.6.18-EL5.3/include/linux/mm.h b/kernel_addons/backport/2.6.18-EL5.3/include/linux/mm.h index 31d4849..18fe1e2 100644 --- a/kernel_addons/backport/2.6.18-EL5.3/include/linux/mm.h +++ b/kernel_addons/backport/2.6.18-EL5.3/include/linux/mm.h @@ -2,6 +2,7 @@ #define _BACKPORT_LINUX_MM_H_ #include_next <linux/mm.h> +#include <linux/vmstat.h> #if defined(__i386__) #include <asm/highmem.h> @@ -18,4 +19,22 @@ struct shrinker { long nr; /* objs pending delete */ }; +static inline void task_io_account_cancelled_write(size_t bytes) +{ +} + +static inline void cancel_dirty_page(struct page *page, unsigned int account_size) +{ + if (TestClearPageDirty(page)) { + struct address_space *mapping = page->mapping; + if (mapping && mapping_cap_account_dirty(mapping)) { + dec_zone_page_state(page, NR_FILE_DIRTY); + dec_bdi_stat(mapping->backing_dev_info, + BDI_RECLAIMABLE); + if (account_size) + task_io_account_cancelled_write(account_size); + } + } +} + #endif diff --git a/kernel_addons/backport/2.6.18-EL5.3/include/linux/page-flags.h b/kernel_addons/backport/2.6.18-EL5.3/include/linux/page-flags.h deleted file mode 100644 index c7ae693..0000000 --- a/kernel_addons/backport/2.6.18-EL5.3/include/linux/page-flags.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef BACKPORT_LINUX_PAGE_FLAGS_H -#define BACKPORT_LINUX_PAGE_FLAGS_H - -#include_next <linux/page-flags.h> -#ifndef CONFIG_IA64 -#include <linux/vmstat.h> -#include <linux/mm.h> - -static inline void task_io_account_cancelled_write(size_t bytes) -{ -} - -static inline void cancel_dirty_page(struct page *page, unsigned int account_size) -{ - if (TestClearPageDirty(page)) { - struct address_space *mapping = page->mapping; - if (mapping && mapping_cap_account_dirty(mapping)) { - dec_zone_page_state(page, NR_FILE_DIRTY); - dec_bdi_stat(mapping->backing_dev_info, - BDI_RECLAIMABLE); - if (account_size) - task_io_account_cancelled_write(account_size); - } - } -} -#endif -#endif /* BACKPORT_LINUX_PAGE_FLAGS_H */ _______________________________________________ ewg mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg
