Commit 306a9cbc authored by Hugh Dickins's avatar Hugh Dickins Committed by james toy

The swap_info_struct is only 76 or 104 bytes, but it does seem wrong

to reserve an array of about 30 of them in bss, when most people will
want only one.  Change swap_info[] to an array of pointers.

That does need a "type" field in the structure: pack it as a char with
next type and short prio (aha, char is unsigned by default on PowerPC).
Use the (admittedly peculiar) name "type" throughout for this index.

/proc/swaps does not take swap_lock: I wouldn't want it to, but do take
care with barriers when adding a new item to the array (never removed).
Signed-off-by: default avatarHugh Dickins <hugh.dickins@tiscali.co.uk>
Reviewed-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: default avatarRik van Riel <riel@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 8092a54b
...@@ -159,9 +159,10 @@ enum { ...@@ -159,9 +159,10 @@ enum {
* The in-memory structure used to track swap areas. * The in-memory structure used to track swap areas.
*/ */
struct swap_info_struct { struct swap_info_struct {
unsigned long flags; unsigned long flags; /* SWP_USED etc: see above */
int prio; /* swap priority */ signed short prio; /* swap priority of this type */
int next; /* next entry on swap list */ signed char type; /* strange name for an index */
signed char next; /* next type on the swap list */
struct file *swap_file; struct file *swap_file;
struct block_device *bdev; struct block_device *bdev;
struct list_head extent_list; struct list_head extent_list;
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment