All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@zip.com.au>
To: Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: [BK PATCH 2.5] Introduce 64-bit versions of    PAGE_{CACHE_,}{MASK,ALIGN}
Date: Sun, 28 Jul 2002 17:10:48 -0700	[thread overview]
Message-ID: <3D448808.CF8D18BA@zip.com.au> (raw)
In-Reply-To: Pine.LNX.4.44.0207281622350.8208-100000@home.transmeta.com

Linus Torvalds wrote:
> 
> ...
> Dream on. It's good, and it's not getting removed. The "struct page" is
> size-critical, and also correctness-critical (see above on gcc issues).
> 

Plan B is to remove page->index.

- Replace ->mapping with a pointer to the page's radix tree
  slot.   Use address masking to go from page.radix_tree_slot
  to the radix tree node.

- Store the base index in the radix tree node, use math to
  derive page->index.  Gives 64-bit index without increasing
  the size of struct page. 4 bytes saved.  

- Implement radix_tree_gang_lookup() as previously described.  Use
  this in truncate_inode_pages, invalidate_inode_pages[2], readahead
  and writeback.

- The only thing we now need page.list for is tracking dirty pages.
  Implement a 64-bit dirtiness bitmap in radix_tree_node, propagate
  that up the radix tree so we can efficiently traverse dirty pages
  in a mapping.  This also allows writeback to always write in ascending
  index order.  Remove page->list.  8 bytes saved.

- Few pages use ->private for much.  Hash for it.  4(ish) bytes
  saved.

- Remove ->virtual, do page_address() via a hash.  4(ish) bytes saved.

- Remove the rmap chain (I just broke ptep_to_address() anyway).  4 bytes
  saved.  struct page is now 20 bytes.

There look.  In five minutes I shrunk 24 bytes from the page
structure.  Who said programming was hard?

-

  reply	other threads:[~2002-07-28 23:58 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-27 13:41 [BK PATCH 2.5] Introduce 64-bit versions of PAGE_{CACHE_,}{MASK,ALIGN} Anton Altaparmakov
2002-07-27 17:23 ` Andrew Morton
2002-07-28 17:53   ` Eric W. Biederman
2002-07-28 18:54     ` Anton Altaparmakov
2002-07-28 20:12       ` Eric W. Biederman
2002-07-28 23:26       ` Linus Torvalds
2002-07-29  0:10         ` Andrew Morton [this message]
2002-07-29  0:43           ` William Lee Irwin III
2002-07-29  0:56             ` Andrea Arcangeli
2002-07-29  1:04               ` William Lee Irwin III
2002-07-29  1:09               ` Rik van Riel
2002-07-29  2:14                 ` Andrew Morton
2002-07-29  2:11                   ` William Lee Irwin III
2002-07-29  2:18                   ` Rik van Riel
2002-07-29  0:49           ` Andrea Arcangeli
2002-07-29  2:05             ` Andrew Morton
2002-07-29  2:09               ` William Lee Irwin III
2002-07-29 20:52               ` Andrea Arcangeli
2002-07-29 21:01                 ` Andrew Morton
2002-07-29 21:31                   ` Andrea Arcangeli
2002-07-29 21:46                     ` Andrew Morton
2002-07-29 22:18                       ` Andrea Arcangeli
2002-07-29  0:56           ` William Lee Irwin III
2002-07-29  1:36             ` Andrew Morton
2002-07-29  1:37               ` William Lee Irwin III
2002-07-29  9:27           ` Russell King
2002-07-29 18:32             ` Andrew Morton
     [not found] <5.1.0.14.2.20020728193528.04336a80@pop.cus.cam.ac.uk.suse.lists.linux.kernel>
     [not found] ` <Pine.LNX.4.44.0207281622350.8208-100000@home.transmeta.com.suse.lists.linux.kernel>
     [not found]   ` <3D448808.CF8D18BA@zip.com.au.suse.lists.linux.kernel>
     [not found]     ` <20020729004942.GL1201@dualathlon.random.suse.lists.linux.kernel>
     [not found]       ` <3D44A2DF.F751B564@zip.com.au.suse.lists.linux.kernel>
     [not found]         ` <20020729205211.GB1201@dualathlon.random.suse.lists.linux.kernel>
2002-07-30 13:44           ` Andi Kleen
2002-07-30 14:06             ` Rik van Riel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3D448808.CF8D18BA@zip.com.au \
    --to=akpm@zip.com.au \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.