Thread (35 messages) 35 messages, 6 authors, 2013-04-07

Re: [PATCH, RFC 06/16] thp, mm: rewrite add_to_page_cache_locked() to support huge pages

From: Kirill A. Shutemov <hidden>
Date: 2013-01-29 12:48:44
Also in: linux-fsdevel, lkml

Hillf Danton wrote:
On Mon, Jan 28, 2013 at 5:24 PM, Kirill A. Shutemov
[off-list ref] wrote:
quoted
+       page_cache_get(page);
+       spin_lock_irq(&mapping->tree_lock);
+       page->mapping = mapping;
+       if (PageTransHuge(page)) {
+               int i;
+               for (i = 0; i < HPAGE_CACHE_NR; i++) {
+                       page_cache_get(page + i);
+                       page[i].index = offset + i;
+                       error = radix_tree_insert(&mapping->page_tree,
+                                       offset + i, page + i);
+                       if (error) {
+                               page_cache_release(page + i);
+                               break;
+                       }
Is page count balanced with the following?
It's broken. Last minue changes are evil :(

Thanks for catching it. I'll fix it in next revision.
quoted hunk ↗ jump to hunk
@@ -168,6 +180,9 @@ void delete_from_page_cache(struct page *page)

        if (freepage)
                freepage(page);
+       if (PageTransHuge(page))
+               for (i = 1; i < HPAGE_CACHE_NR; i++)
+                       page_cache_release(page);
        page_cache_release(page);
-- 
 Kirill A. Shutemov

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help