pm: freezer updates
Hello, Rafael.
This is pull request for the following pending patches[ets].
[1] freezer: fix various bugs and simplify implementation, take#2
[2] usb_storage: don't use set_freezable_with_signal()
[3] freezer: kill unused set_freezable_with_signal()
[4] freezer: fix wait_event_freezable/__thaw_task races
The patches are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git pm-freezer
Oleg Nesterov (1):
freezer: fix wait_event_freezable/__thaw_task races
Tejun Heo (22):
freezer: fix current->state restoration race in refrigerator()
freezer: don't unnecessarily set PF_NOFREEZE explicitly
freezer: unexport refrigerator() and update try_to_freeze() slightly
freezer: implement and use kthread_freezable_should_stop()
freezer: rename thaw_process() to __thaw_task() and simplify the implementation
freezer: remove racy clear_freeze_flag() and set PF_NOFREEZE on dead tasks
freezer: don't distinguish nosig tasks on thaw
freezer: use dedicated lock instead of task_lock() + memory barrier
freezer: make freezing indicate freeze condition in effect
freezer: test freezable conditions while holding freezer_lock
freezer: kill PF_FREEZING
freezer: clean up freeze_processes() failure path
cgroup_freezer: prepare for removal of TIF_FREEZE
freezer: make freezing() test freeze conditions in effect instead of TIF_FREEZE
freezer: remove now unused TIF_FREEZE
freezer: remove should_send_signal() and update frozen()
freezer: fix set_freezable[_with_signal]() race
freezer: restructure __refrigerator()
freezer: use lock_task_sighand() in fake_signal_wake_up()
freezer: remove unused @sig_only from freeze_task()
usb_storage: don't use set_freezable_with_signal()
freezer: kill unused set_freezable_with_signal()
Documentation/power/freezing-of-tasks.txt | 14 +- arch/alpha/include/asm/thread_info.h | 2 - arch/arm/include/asm/thread_info.h | 2 - arch/avr32/include/asm/thread_info.h | 2 - arch/blackfin/include/asm/thread_info.h | 2 - arch/cris/include/asm/thread_info.h | 2 - arch/frv/include/asm/thread_info.h | 2 - arch/h8300/include/asm/thread_info.h | 2 - arch/ia64/include/asm/thread_info.h | 2 - arch/m32r/include/asm/thread_info.h | 2 - arch/m68k/include/asm/thread_info.h | 1 - arch/microblaze/include/asm/thread_info.h | 2 - arch/mips/include/asm/thread_info.h | 2 - arch/mn10300/include/asm/thread_info.h | 2 - arch/parisc/include/asm/thread_info.h | 2 - arch/powerpc/include/asm/thread_info.h | 2 - arch/s390/include/asm/thread_info.h | 2 - arch/sh/include/asm/thread_info.h | 2 - arch/sparc/include/asm/thread_info_32.h | 2 - arch/sparc/include/asm/thread_info_64.h | 2 - arch/um/include/asm/thread_info.h | 2 - arch/unicore32/include/asm/thread_info.h | 2 - arch/x86/include/asm/thread_info.h | 2 - arch/xtensa/include/asm/thread_info.h | 2 - drivers/bluetooth/btmrvl_main.c | 2 - drivers/mfd/twl4030-irq.c | 3 - drivers/mfd/twl6030-irq.c | 2 - drivers/net/irda/stir4200.c | 2 +- drivers/platform/x86/thinkpad_acpi.c | 15 +-- drivers/staging/rts_pstor/rtsx.c | 2 - drivers/usb/storage/usb.c | 13 +- fs/btrfs/async-thread.c | 2 +- fs/btrfs/disk-io.c | 8 +- fs/ext4/super.c | 3 +- fs/fs-writeback.c | 4 +- fs/gfs2/log.c | 4 +- fs/gfs2/quota.c | 4 +- fs/jbd/journal.c | 2 +- fs/jbd2/journal.c | 2 +- fs/jfs/jfs_logmgr.c | 2 +- fs/jfs/jfs_txnmgr.c | 4 +- fs/nilfs2/segment.c | 2 +- fs/xfs/xfs_buf.c | 2 +- include/linux/freezer.h | 117 ++++++----------- include/linux/kthread.h | 1 + include/linux/sched.h | 4 +- kernel/cgroup_freezer.c | 63 ++++----- kernel/exit.c | 3 +- kernel/fork.c | 1 - kernel/freezer.c | 203 +++++++++++++++-------------- kernel/kthread.c | 27 ++++- kernel/power/hibernate.c | 15 +-- kernel/power/process.c | 77 +++++------- kernel/power/suspend.c | 8 +- kernel/power/user.c | 4 +- mm/backing-dev.c | 8 +- 56 files changed, 279 insertions(+), 389 deletions(-)
Signature · 6 lines
tejun [1] http://thread.gmane.org/gmane.linux.kernel/1209247 [2] http://thread.gmane.org/gmane.linux.kernel/1209416 [3] http://thread.gmane.org/gmane.linux.kernel/1209416/focus=1209417 [4] http://thread.gmane.org/gmane.linux.kernel/1209444
Quoted 4 lines · Tejun Heo
Hello, Rafael.
This is pull request for the following pending patches[ets].
Quoted 8 lines
[1] freezer: fix various bugs and simplify implementation, take#2
[2]usb_storage: don't useset_freezable_with_signal()
[3] freezer: kill unusedset_freezable_with_signal()
[4] freezer: fix wait_event_freezable/__thaw_task racesThe patches are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.gitpm-freezer
I pulled this to linux-pm/pm-freezer, but there were merge conflicts that I'm not 100% have been resolved correctly. Please double check if the resulting branch is OK.
Thanks,
Rafael
Quoted 87 lines
Oleg Nesterov (1):
freezer: fix wait_event_freezable/__thaw_task racesTejun Heo (22):
freezer: fixcurrent->staterestoration race inrefrigerator()
freezer: don't unnecessarily setPF_NOFREEZEexplicitly
freezer: unexportrefrigerator()and updatetry_to_freeze()slightly
freezer: implement and usekthread_freezable_should_stop()
freezer: renamethaw_process()to__thaw_task()and simplify the implementation
freezer: remove racyclear_freeze_flag()and setPF_NOFREEZEon dead tasks
freezer: don't distinguish nosig tasks on thaw
freezer: use dedicated lock instead oftask_lock()+ memory barrier
freezer: make freezing indicate freeze condition in effect
freezer: test freezable conditions while holdingfreezer_lock
freezer: killPF_FREEZING
freezer: clean upfreeze_processes()failure path
cgroup_freezer: prepare for removal ofTIF_FREEZE
freezer: makefreezing()test freeze conditions in effect instead ofTIF_FREEZE
freezer: remove now unusedTIF_FREEZE
freezer: removeshould_send_signal()and updatefrozen()
freezer: fix set_freezable[_with_signal]() race
freezer: restructure__refrigerator()
freezer: uselock_task_sighand()infake_signal_wake_up()
freezer: remove unused @sig_only fromfreeze_task()
usb_storage: don't useset_freezable_with_signal()
freezer: kill unusedset_freezable_with_signal()Documentation/power/freezing-of-tasks.txt | 14 +- arch/alpha/include/asm/thread_info.h | 2 - arch/arm/include/asm/thread_info.h | 2 - arch/avr32/include/asm/thread_info.h | 2 - arch/blackfin/include/asm/thread_info.h | 2 - arch/cris/include/asm/thread_info.h | 2 - arch/frv/include/asm/thread_info.h | 2 - arch/h8300/include/asm/thread_info.h | 2 - arch/ia64/include/asm/thread_info.h | 2 - arch/m32r/include/asm/thread_info.h | 2 - arch/m68k/include/asm/thread_info.h | 1 - arch/microblaze/include/asm/thread_info.h | 2 - arch/mips/include/asm/thread_info.h | 2 - arch/mn10300/include/asm/thread_info.h | 2 - arch/parisc/include/asm/thread_info.h | 2 - arch/powerpc/include/asm/thread_info.h | 2 - arch/s390/include/asm/thread_info.h | 2 - arch/sh/include/asm/thread_info.h | 2 - arch/sparc/include/asm/thread_info_32.h | 2 - arch/sparc/include/asm/thread_info_64.h | 2 - arch/um/include/asm/thread_info.h | 2 - arch/unicore32/include/asm/thread_info.h | 2 - arch/x86/include/asm/thread_info.h | 2 - arch/xtensa/include/asm/thread_info.h | 2 - drivers/bluetooth/btmrvl_main.c | 2 - drivers/mfd/twl4030-irq.c | 3 - drivers/mfd/twl6030-irq.c | 2 - drivers/net/irda/stir4200.c | 2 +- drivers/platform/x86/thinkpad_acpi.c | 15 +-- drivers/staging/rts_pstor/rtsx.c | 2 - drivers/usb/storage/usb.c | 13 +- fs/btrfs/async-thread.c | 2 +- fs/btrfs/disk-io.c | 8 +- fs/ext4/super.c | 3 +- fs/fs-writeback.c | 4 +- fs/gfs2/log.c | 4 +- fs/gfs2/quota.c | 4 +- fs/jbd/journal.c | 2 +- fs/jbd2/journal.c | 2 +- fs/jfs/jfs_logmgr.c | 2 +- fs/jfs/jfs_txnmgr.c | 4 +- fs/nilfs2/segment.c | 2 +- fs/xfs/xfs_buf.c | 2 +- include/linux/freezer.h | 117 ++++++----------- include/linux/kthread.h | 1 + include/linux/sched.h | 4 +- kernel/cgroup_freezer.c | 63 ++++----- kernel/exit.c | 3 +- kernel/fork.c | 1 - kernel/freezer.c | 203 +++++++++++++++-------------- kernel/kthread.c | 27 ++++- kernel/power/hibernate.c | 15 +-- kernel/power/process.c | 77 +++++------- kernel/power/suspend.c | 8 +- kernel/power/user.c | 4 +- mm/backing-dev.c | 8 +- 56 files changed, 279 insertions(+), 389 deletions(-)
Quoted 10 lines · Rafael J. Wysocki
Quoted 9 lines · Tejun Heo
Hello, Rafael.
This is pull request for the following pending patches[ets].
[1] freezer: fix various bugs and simplify implementation, take#2
[2]usb_storage: don't useset_freezable_with_signal()
[3] freezer: kill unusedset_freezable_with_signal()
[4] freezer: fix wait_event_freezable/__thaw_task races
Quoted 7 lines
Quoted 3 lines
The patches are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.gitpm-freezerI pulled this to linux-pm/pm-freezer, but there were merge conflicts that I'm not 100% have been resolved correctly. Please double check if the resulting branch is OK.
I found a mismerge in the meantime, so the linux-pm/pm-freezer branch has been re-created from scratch. Please double check if it's correct.
I intend to start merging it into linux-next after 3.2-rc1 has been released.
Thanks,
Rafael
Hello, Rafael.
Quoted 15 lines · Rafael J. Wysocki
Quoted 14 lines · Rafael J. Wysocki
Quoted 12 lines · Tejun Heo
Hello, Rafael.
This is pull request for the following pending patches[ets].
[1] freezer: fix various bugs and simplify implementation, take#2
[2]usb_storage: don't useset_freezable_with_signal()
[3] freezer: kill unusedset_freezable_with_signal()
[4] freezer: fix wait_event_freezable/__thaw_task racesThe patches are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.gitpm-freezer
Quoted 8 lines
Quoted 3 lines
I pulled this to linux-pm/pm-freezer, but there were merge conflicts that I'm not 100% have been resolved correctly. Please double check if the resulting branch is OK.
I found a mismerge in the meantime, so the linux-pm/pm-freezer branch has been re-created from scratch. Please double check if it's correct.
I intend to start merging it into linux-next after 3.2-rc1 has been released.
fake_signal_wake_up() merging seems wrong. It should be calling signal_wake_up() with @resume == 0. Other than that, everything looks correct to me.
Thank you.
Signature · 1 line
tejun
Quoted 22 lines · Tejun Heo
Hello, Rafael.
Quoted 19 lines · Rafael J. Wysocki
Quoted 17 lines · Rafael J. Wysocki
Quoted 4 lines · Tejun Heo
Hello, Rafael.
This is pull request for the following pending patches[ets].
Quoted 8 lines
[1] freezer: fix various bugs and simplify implementation, take#2
[2]usb_storage: don't useset_freezable_with_signal()
[3] freezer: kill unusedset_freezable_with_signal()
[4] freezer: fix wait_event_freezable/__thaw_task racesThe patches are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.gitpm-freezerI pulled this to linux-pm/pm-freezer, but there were merge conflicts that I'm not 100% have been resolved correctly. Please double check if the resulting branch is OK.
Quoted 8 lines
Quoted 4 lines
I found a mismerge in the meantime, so the linux-pm/pm-freezer branch has been re-created from scratch. Please double check if it's correct.
I intend to start merging it into linux-next after 3.2-rc1 has been released.
fake_signal_wake_up()merging seems wrong. It should be callingsignal_wake_up()with @resume == 0. Other than that, everything looks correct to me.
Do you mean something like this is needed on top of linux-pm/pm-freezer:
--- kernel/freezer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/freezer.c +1 -1
@@ -90,7 +90,7 @@ static void fake_signal_wake_up(struct tunsigned long flags;if (lock_task_sighand (p, &flags)) { -signal_wake_up (p,1 ); +signal_wake_up (p,0 );unlock_task_sighand (p, &flags); } }
Hello,
Quoted 11 lines · Rafael J. Wysocki
Do you mean something like this is needed on top of linux-pm/pm-freezer:
---
kernel/freezer.c | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)Index:
linux-pm/kernel/freezer.c
===================================================================
kernel/freezer.c static void fake_signal_wake_up(struct t · line 93
Quoted 5 lines
kernel/freezer.c +1
-1@@ -90,7 +90,7 @@ static void fake_signal_wake_up(struct t unsigned long flags; if (lock_task_sighand(p, &flags)) { - signal_wake_up(p, 1); + signal_wake_up(p, 0);
Yeap, that was the only discrepancy I could find.
Thanks.
Signature · 1 line
tejun
Quoted 16 lines · Tejun Heo
Hello,
Quoted 13 lines · Rafael J. Wysocki
Do you mean something like this is needed on top of linux-pm/pm-freezer:
--- kernel/freezer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)Index:
linux-pm/kernel/freezer.c
===================================================================kernel/freezer.c +0
-0@@ -90,7 +90,7 @@ static void fake_signal_wake_up(struct tunsigned long flags;
Quoted 5 lines
kernel/freezer.c static void fake_signal_wake_up(struct t · line 93
Quoted 3 lines
kernel/freezer.c +1
-1if (lock_task_sighand (p, &flags)) { -signal_wake_up (p,1 ); +signal_wake_up (p,0 );Yeap, that was the only discrepancy I could find.
OK, I'll apply this on top of the merge commit.
Thanks,
Rafael
Hello,
Just heads up. I incorporated the patch to drop set_freezable_with_signal() in the series and rebased in on top of the current master. The new HEAD is 465708e9c8 "freezer: fix wait_event_freezable/__thaw_task races".
git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git pm-freezer
Once the dmatest patch gets acked, I'll send a proper pull request.
Thank you.
Signature · 1 line
tejun
Quoted 10 lines · Tejun Heo
Hello,
Just heads up. I incorporated the patch to drop
set_freezable_with_signal()in the series and rebased in on top of the current master. The new HEAD is465708e9c8"freezer: fix wait_event_freezable/__thaw_task races".
git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.gitpm-freezerOnce the dmatest patch gets acked, I'll send a proper pull request.
OK, thanks a lot!
Rafael