search for: putbackpag

Displaying 20 results from an estimated 33 matches for "putbackpag".

Did you mean: putbackpage
2015 Jul 10
1
[RFCv3 2/5] mm/compaction: enable mobile-page migration
...> + /* > + * 'lock_page()' stabilizes the page and prevents races against > + * concurrent isolation threads attempting to re-isolate it. > + */ > + lock_page(page); > + if (mobile_page(page) && page->mapping->a_ops->putbackpage) { It seems "if (page->mapping && page->mapping->a_ops->putbackpage)" should be enough: we already seen that page as mobile. > + page->mapping->a_ops->putbackpage(page); > + /* drop the extra ref count taken for mobile page...
2015 Jul 10
1
[RFCv3 2/5] mm/compaction: enable mobile-page migration
...> + /* > + * 'lock_page()' stabilizes the page and prevents races against > + * concurrent isolation threads attempting to re-isolate it. > + */ > + lock_page(page); > + if (mobile_page(page) && page->mapping->a_ops->putbackpage) { It seems "if (page->mapping && page->mapping->a_ops->putbackpage)" should be enough: we already seen that page as mobile. > + page->mapping->a_ops->putbackpage(page); > + /* drop the extra ref count taken for mobile page...
2015 Mar 31
2
[PATCH] add generic callbacks into compaction
...ude/linux/fs.h index b4d71b5..de463b9 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -368,6 +368,9 @@ struct address_space_operations { */ int (*migratepage) (struct address_space *, struct page *, struct page *, enum migrate_mode); + int (*isolatepage)(struct page *); + int (*putbackpage)(struct page *); + int (*launder_page) (struct page *); int (*is_partially_uptodate) (struct page *, unsigned long, unsigned long); diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 4b3736f..715b5b2 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@...
2015 Mar 31
2
[PATCH] add generic callbacks into compaction
...ude/linux/fs.h index b4d71b5..de463b9 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -368,6 +368,9 @@ struct address_space_operations { */ int (*migratepage) (struct address_space *, struct page *, struct page *, enum migrate_mode); + int (*isolatepage)(struct page *); + int (*putbackpage)(struct page *); + int (*launder_page) (struct page *); int (*is_partially_uptodate) (struct page *, unsigned long, unsigned long); diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 4b3736f..715b5b2 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@...
2015 Apr 07
0
[PATCH] add generic callbacks into compaction
...int (*isolatepage)(struct page *); It would be useful if isolatepage is aware of migrate_mode and address_space For exmaple, if it is MIGRATE_SYNC, driver could wait some of work to finish. >From address_space, driver can get private data registered when isolate/putback happens. > + int (*putbackpage)(struct page *); Ditto. > + > int (*launder_page) (struct page *); > int (*is_partially_uptodate) (struct page *, unsigned long, > unsigned long); > diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h > index 4b3736f..715b5b2 100644 > --- a/include/linux...
2015 Jul 27
2
[PATCH 2/4] mm/compaction: enable mobile-page migration
...on't want to split them. > +{ > + /* > + * 'lock_page()' stabilizes the page and prevents races against > + * concurrent isolation threads attempting to re-isolate it. > + */ > + lock_page(page); > + if (page->mapping && page->mapping->a_ops->putbackpage) > + page->mapping->a_ops->putbackpage(page); > + unlock_page(page); > + /* drop the extra ref count taken for mobile page isolation */ > + put_page(page); > +} > #else > static inline unsigned long try_to_compact_pages(gfp_t gfp_mask, > unsigned int orde...
2015 Jul 27
2
[PATCH 2/4] mm/compaction: enable mobile-page migration
...on't want to split them. > +{ > + /* > + * 'lock_page()' stabilizes the page and prevents races against > + * concurrent isolation threads attempting to re-isolate it. > + */ > + lock_page(page); > + if (page->mapping && page->mapping->a_ops->putbackpage) > + page->mapping->a_ops->putbackpage(page); > + unlock_page(page); > + /* drop the extra ref count taken for mobile page isolation */ > + put_page(page); > +} > #else > static inline unsigned long try_to_compact_pages(gfp_t gfp_mask, > unsigned int orde...
2015 Jul 31
1
[PATCH 2/4] mm/compaction: enable mobile-page migration
...ge and prevents races against What does it mean 'stabilize'? Clear comment is always welcome rather than vague word. > + * concurrent isolation threads attempting to re-isolate it. > + */ > + lock_page(page); > + if (page->mapping && page->mapping->a_ops->putbackpage) > + page->mapping->a_ops->putbackpage(page); > + unlock_page(page); > + /* drop the extra ref count taken for mobile page isolation */ > + put_page(page); > +} > #else > static inline unsigned long try_to_compact_pages(gfp_t gfp_mask, > unsigned int order,...
2015 Jul 31
1
[PATCH 2/4] mm/compaction: enable mobile-page migration
...ge and prevents races against What does it mean 'stabilize'? Clear comment is always welcome rather than vague word. > + * concurrent isolation threads attempting to re-isolate it. > + */ > + lock_page(page); > + if (page->mapping && page->mapping->a_ops->putbackpage) > + page->mapping->a_ops->putbackpage(page); > + unlock_page(page); > + /* drop the extra ref count taken for mobile page isolation */ > + put_page(page); > +} > #else > static inline unsigned long try_to_compact_pages(gfp_t gfp_mask, > unsigned int order,...
2015 Jul 07
12
[RFCv3 0/5] enable migration of driver pages
...l starts to compaction, zram and GPU driver cannot work with the kernel compaction. This patch set combines 5 patches. 1. patch 1/5: get inode from anon_inodes This patch adds new interface to create inode from anon_inodes. 2. patch 2/5: framework to isolate/migrate/putback page Add isolatepage, putbackpage into address_space_operations and wrapper function to call them 3. patch 3/5: apply the framework into balloon driver The balloon driver is applied into the framework. It gets a inode from anon_inodes and register operations in the inode. Any other drivers can register operations via inode like t...
2015 Jul 07
12
[RFCv3 0/5] enable migration of driver pages
...l starts to compaction, zram and GPU driver cannot work with the kernel compaction. This patch set combines 5 patches. 1. patch 1/5: get inode from anon_inodes This patch adds new interface to create inode from anon_inodes. 2. patch 2/5: framework to isolate/migrate/putback page Add isolatepage, putbackpage into address_space_operations and wrapper function to call them 3. patch 3/5: apply the framework into balloon driver The balloon driver is applied into the framework. It gets a inode from anon_inodes and register operations in the inode. Any other drivers can register operations via inode like t...
2015 Jul 13
14
[PATCH 0/4] enable migration of driver pages
.... This patch have the balloon driver migration be called by the generic interface. This patch set combines 4 patches. 1. patch 1/4: get inode from anon_inodes This patch adds new interface to create inode from anon_inodes. 2. patch 2/4: framework to isolate/migrate/putback page Add isolatepage, putbackpage into address_space_operations and wrapper function to call them. 3. patch 3/4: apply the framework into balloon driver The balloon driver is applied into the framework. It gets a inode from anon_inodes and register operations in the inode. The kernel compaction calls generic interfaces, not ballo...
2015 Jul 13
14
[PATCH 0/4] enable migration of driver pages
.... This patch have the balloon driver migration be called by the generic interface. This patch set combines 4 patches. 1. patch 1/4: get inode from anon_inodes This patch adds new interface to create inode from anon_inodes. 2. patch 2/4: framework to isolate/migrate/putback page Add isolatepage, putbackpage into address_space_operations and wrapper function to call them. 3. patch 3/4: apply the framework into balloon driver The balloon driver is applied into the framework. It gets a inode from anon_inodes and register operations in the inode. The kernel compaction calls generic interfaces, not ballo...
2015 Jul 07
0
[RFCv3 2/5] mm/compaction: enable mobile-page migration
...+} + +static inline void putback_mobilepage(struct page *page) +{ + /* + * 'lock_page()' stabilizes the page and prevents races against + * concurrent isolation threads attempting to re-isolate it. + */ + lock_page(page); + if (mobile_page(page) && page->mapping->a_ops->putbackpage) { + page->mapping->a_ops->putbackpage(page); + /* drop the extra ref count taken for mobile page isolation */ + put_page(page); + } + unlock_page(page); +} #else static inline unsigned long try_to_compact_pages(gfp_t gfp_mask, unsigned int order, int alloc_flags, @@ -83,6 +146,1...
2015 Jul 13
0
[PATCH 2/4] mm/compaction: enable mobile-page migration
...; +} + +static inline void putback_mobilepage(struct page *page) +{ + /* + * 'lock_page()' stabilizes the page and prevents races against + * concurrent isolation threads attempting to re-isolate it. + */ + lock_page(page); + if (page->mapping && page->mapping->a_ops->putbackpage) + page->mapping->a_ops->putbackpage(page); + unlock_page(page); + /* drop the extra ref count taken for mobile page isolation */ + put_page(page); +} #else static inline unsigned long try_to_compact_pages(gfp_t gfp_mask, unsigned int order, int alloc_flags, @@ -83,6 +150,19 @@ sta...
2015 Jul 27
0
[PATCH 2/4] mm/compaction: enable mobile-page migration
...t;> + * 'lock_page()' stabilizes the page and prevents races against >> + * concurrent isolation threads attempting to re-isolate it. >> + */ >> + lock_page(page); >> + if (page->mapping && page->mapping->a_ops->putbackpage) >> + page->mapping->a_ops->putbackpage(page); >> + unlock_page(page); >> + /* drop the extra ref count taken for mobile page isolation */ >> + put_page(page); >> +} >> #else >> static inline unsigned long try_t...
2015 Jun 26
8
[RFCv2 0/5] enable migration of driver pages
Hello, This series try to enable migration of non-LRU pages, such as driver's page. My ARM-based platform occured severe fragmentation problem after long-term (several days) test. Sometimes even order-3 page allocation failed. It has memory size 512MB ~ 1024MB. 30% ~ 40% memory is consumed for graphic processing and 20~30 memory is reserved for zram. I found that many pages of GPU driver
2015 Jun 26
8
[RFCv2 0/5] enable migration of driver pages
Hello, This series try to enable migration of non-LRU pages, such as driver's page. My ARM-based platform occured severe fragmentation problem after long-term (several days) test. Sometimes even order-3 page allocation failed. It has memory size 512MB ~ 1024MB. 30% ~ 40% memory is consumed for graphic processing and 20~30 memory is reserved for zram. I found that many pages of GPU driver
2015 Jun 26
0
[RFCv2 1/5] mm/compaction: enable driver page migration
...x a0653e5..2cc4b24 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -396,6 +396,8 @@ struct address_space_operations { */ int (*migratepage) (struct address_space *, struct page *, struct page *, enum migrate_mode); + bool (*isolatepage) (struct page *, isolate_mode_t); + void (*putbackpage) (struct page *); int (*launder_page) (struct page *); int (*is_partially_uptodate) (struct page *, unsigned long, unsigned long); diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index 91b7f9b..c8a66de 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-...
2015 Jul 04
1
[RFCv2 4/5] mm/compaction: compaction calls generic migration
...page_is_file_cache(page)); > - if (unlikely(isolated_balloon_page(page))) > - balloon_page_putback(page); > + if (unlikely(driver_page_migratable(page))) > + page->mapping->a_ops->putbackpage(page); > else > putback_lru_page(page); > } > @@ -844,15 +844,18 @@ static int __unmap_and_move(struct page *page, struct page *newpage, > } > } > > - if (unlikely(isolated_balloon_page(page))) {...