Messages in this thread | | | From | Tejun Heo <> | Subject | [PATCHSET] freezer: fix various bugs and simplify implementation | Date | Fri, 19 Aug 2011 16:16:06 +0200 |
| |
Hello,
The freezer code has developed a number of convolutions and bugs. It's now using five per-task flags - TIF_FREEZE, PF_FREEZING, PF_NOFREEZE, PF_FROZEN, PF_FREEZER_SKIP and PF_FREEZER_NOSIG, and at the same time has quite a few race conditions. PF_NOFREEZE modifications can race against PM freezer, cgroup_freezer can race against PM freezer, and so on.
This patchset tries to simplify the freezer implementation and fix the various bugs. It makes the synchronization more straight forward and replaces TIF_FREEZE with directly checking freeze conditions which are in effect, which makes the whole thing much saner.
This patchset removes TIF_FREEZE and PF_FREEZING. Also, PF_FREEZER_SKIP users are planned to move away from the flag and will be removed. It contains the following 16 patches.
0001-freezer-fix-current-state-restoration-race-in-refrig.patch 0002-freezer-don-t-unnecessarily-set-PF_NOFREEZE-explicit.patch 0003-freezer-unexport-refrigerator-and-update-try_to_free.patch 0004-freezer-implement-and-use-kthread_freezable_should_s.patch 0005-freezer-rename-thaw_process-to-__thaw_task-and-simpl.patch 0006-freezer-make-exiting-tasks-properly-unfreezable.patch 0007-freezer-don-t-distinguish-nosig-tasks-on-thaw.patch 0008-freezer-use-dedicated-lock-instead-of-task_lock-memo.patch 0009-freezer-make-freezing-indicate-freeze-condition-in-e.patch 0010-freezer-fix-set_freezable-_with_signal-race.patch 0011-freezer-kill-PF_FREEZING.patch 0012-freezer-clean-up-freeze_processes-failure-path.patch 0013-cgroup_freezer-prepare-for-removal-of-TIF_FREEZE.patch 0014-freezer-make-freezing-test-freeze-conditions-in-effe.patch 0015-freezer-remove-now-unused-TIF_FREEZE.patch 0016-freezer-remove-should_send_signal-and-update-frozen.patch
This patchset is on top of the current linus#master (01b883358b "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc") and available in the following git branch.
git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git freezer
diffstat follows.
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 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/linux-2.6/xfs_buf.c | 2 include/linux/freezer.h | 78 +++++-------- include/linux/kthread.h | 1 include/linux/sched.h | 3 kernel/cgroup_freezer.c | 51 +++----- kernel/exit.c | 8 + kernel/fork.c | 1 kernel/freezer.c | 179 +++++++++++++++++------------- kernel/kthread.c | 25 ++++ kernel/power/hibernate.c | 15 -- kernel/power/process.c | 65 +++------- kernel/power/user.c | 4 mm/backing-dev.c | 8 - 54 files changed, 247 insertions(+), 315 deletions(-)
Thanks.
-- tejun
| |