[PATCH] swap: update swsusp use of swap_info
Aha, swsusp dips into swap_info[], better update it to swap_lock. It's bitflipping flags with 0xFF, so get_swap_page will allocate from only the one chosen device: let's change that to flip SWP_WRITEOK. Signed-off-by: Hugh Dickins <hugh@veritas.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
5d337b9194
Коммит
dae06ac43d
|
@ -179,9 +179,9 @@ static int swsusp_swap_check(void) /* This is called before saving image */
|
|||
len=strlen(resume_file);
|
||||
root_swap = 0xFFFF;
|
||||
|
||||
swap_list_lock();
|
||||
spin_lock(&swap_lock);
|
||||
for (i=0; i<MAX_SWAPFILES; i++) {
|
||||
if (swap_info[i].flags == 0) {
|
||||
if (!(swap_info[i].flags & SWP_WRITEOK)) {
|
||||
swapfile_used[i]=SWAPFILE_UNUSED;
|
||||
} else {
|
||||
if (!len) {
|
||||
|
@ -202,7 +202,7 @@ static int swsusp_swap_check(void) /* This is called before saving image */
|
|||
}
|
||||
}
|
||||
}
|
||||
swap_list_unlock();
|
||||
spin_unlock(&swap_lock);
|
||||
return (root_swap != 0xffff) ? 0 : -ENODEV;
|
||||
}
|
||||
|
||||
|
@ -216,12 +216,12 @@ static void lock_swapdevices(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
swap_list_lock();
|
||||
spin_lock(&swap_lock);
|
||||
for (i = 0; i< MAX_SWAPFILES; i++)
|
||||
if (swapfile_used[i] == SWAPFILE_IGNORED) {
|
||||
swap_info[i].flags ^= 0xFF;
|
||||
swap_info[i].flags ^= SWP_WRITEOK;
|
||||
}
|
||||
swap_list_unlock();
|
||||
spin_unlock(&swap_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Загрузка…
Ссылка в новой задаче