Displaying 20 results from an estimated 33 matches for "putbackpage".
Did you mean:
putback_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 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 order...
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 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, i...
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, i...
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 th...
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 th...
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 balloo...
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 balloo...
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,19...
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 @@ stat...
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_to...
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-f...
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))) {
&...