Skip to contentSkip to conversation

pm: freezer updates

GIT PULL Tejun Heo 2 participants 9 messages Nov 3, 2011 – Nov 21, 2011 Freezer

lore
Share & tools
lore

Tejun Heo

author
#0 lore raw

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
#1 lore raw
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 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

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 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(-)
#2 lore raw
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 use set_freezable_with_signal()
[3] freezer: kill unused set_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.git pm-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.

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

author
#3 lore raw

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 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

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
#4 lore raw
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 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

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.

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 calling signal_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
Index: linux-pm/kernel/freezer.c
===================================================================
@@ -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);
 		unlock_task_sighand(p, &flags);
 	}
 }
author
#5 lore raw

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
#6 lore raw
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 t
       unsigned 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 -1
       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.

OK, I'll apply this on top of the merge commit.

Thanks,
Rafael

author
#7 lore raw
In reply to 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 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
#8 lore raw
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 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.

OK, thanks a lot!

Rafael