mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Pavel Machek <pavel@ucw.cz>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
	jbms@cmu.edu, nigel@nigel.suspend2.net, miltonm@bga.com,
	stern@rowland.harvard.edu, ying.huang@intel.com,
	linux-kernel@vger.kernel.org, david@lang.hm,
	linux-pm@lists.linux-foundation.org
Subject: Re: [linux-pm] Re: Hibernation considerations
Date: Thu, 2 Aug 2007 19:02:27 +0200	[thread overview]
Message-ID: <200708021902.28379.rjw@sisk.pl> (raw)
In-Reply-To: <20070801092227.GB4808@ucw.cz>

On Wednesday, 1 August 2007 11:22, Pavel Machek wrote:
> Hi!
> 
> > > Hmm, wonder why this isn't affecting people with VPNs?  Probably
> > > network mounts over VPN are rare, and ever rarer to have fs activity
> > > on them during suspend.
> > > 
> > > Anyway, I think it's long overdue to stop thinking about how to "fix"
> > > fuse, and concentrate on fixing the underlying problem instead ;)
> > 
> > To conclude this branch of the thread, I have a patch in the works that may
> > help a bit with unfreezable FUSE filesystems and it only affects the freezer.
> > I'll post it when 2.6.23-rc1 is out, because it's on top of some other patches
> > that need to go first.
> 
> I'm interested... which one is that?

Appended, on top of this:
https://lists.linux-foundation.org/pipermail/linux-pm/2007-July/014521.html

Greetings,
Rafael


---
 kernel/power/process.c |   49 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 48 insertions(+), 1 deletion(-)

Index: linux-2.6.23-rc1/kernel/power/process.c
===================================================================
--- linux-2.6.23-rc1.orig/kernel/power/process.c	2007-07-24 00:14:07.000000000 +0200
+++ linux-2.6.23-rc1/kernel/power/process.c	2007-07-24 00:14:17.000000000 +0200
@@ -30,6 +30,14 @@
  */
 #define MAX_WAITS 5
 
+/*
+ * If the freezing of tasks fails, we attempt to thaw tasks that have already
+ * been frozen to give a chance the other tasks to freeze, in case one or more
+ * of them are blocked by the frozen ones.  If this fails MAX_ATTEMPTS times
+ * in a row, we give up.
+ */
+#define MAX_ATTEMPTS 10
+
 #define FREEZER_KERNEL_THREADS 0
 #define FREEZER_USER_SPACE 1
 
@@ -192,14 +200,21 @@ static void cancel_freezing(struct task_
 static int try_to_freeze_tasks(int freeze_user_space)
 {
 	struct task_struct *g, *p;
-	unsigned int todo, waits;
+	unsigned int todo, waits, attempts;
 	unsigned long ret;
 	struct timeval start, end;
 	s64 elapsed_csecs64;
 	unsigned int elapsed_csecs;
+	char *tick = "-\\|/";
+
+	printk(" ");
+	attempts = 0;
 
 	do_gettimeofday(&start);
 
+ Repeat:
+	printk("\b%c", tick[attempts++ % 4]);
+
 	refrigerator_called = 0;
 	waits = 0;
 	do {
@@ -235,11 +250,43 @@ static int try_to_freeze_tasks(int freez
 		}
 	} while (todo);
 
+	if (todo && attempts <= MAX_ATTEMPTS) {
+		/*
+		 * Some tasks have not been able to freeze.  They might be stuck
+		 * in TASK_UNINTERRUPTIBLE waiting for the frozen tasks.  Try to
+		 * thaw the tasks that have frozen without clearing the freeze
+		 * requests of the remaining tasks and repeat.
+		 */
+		read_lock(&tasklist_lock);
+		do_each_thread(g, p) {
+			if (frozen(p)) {
+				p->flags &= ~PF_FROZEN;
+				wake_up_process(p);
+			}
+		} while_each_thread(g, p);
+		read_unlock(&tasklist_lock);
+
+		ret = wait_event_timeout(refrigerator_waitq,
+						refrigerator_called, TIMEOUT);
+		if (!ret) {
+			/*
+			 * There is a little hope that we will succeed, but at
+			 * least we want to know which tasks have not been
+			 * frozen.  Thus, we are going to repeat once.
+			 */
+			attempts = MAX_ATTEMPTS;
+		}
+
+		goto Repeat;
+	}
+
 	do_gettimeofday(&end);
 	elapsed_csecs64 = timeval_to_ns(&end) - timeval_to_ns(&start);
 	do_div(elapsed_csecs64, NSEC_PER_SEC / 100);
 	elapsed_csecs = elapsed_csecs64;
 
+	printk("\b");
+
 	if (todo) {
 		/* This does not unfreeze processes that are already frozen
 		 * (we have slightly ugly calling convention in that respect,

  reply	other threads:[~2007-08-02 16:53 UTC|newest]

Thread overview: 220+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-15 12:33 Rafael J. Wysocki
2007-07-15 12:51 ` Nigel Cunningham
2007-07-15 12:58 ` Dr. David Alan Gilbert
2007-07-15 22:38   ` Rafael J. Wysocki
2007-07-15 22:27     ` david
2007-07-17 17:40       ` Dr. David Alan Gilbert
2007-07-17 17:49         ` david
2007-07-29  6:53     ` Vojtech Pavlik
2007-07-29  9:56       ` Rafael J. Wysocki
2007-08-05 19:56       ` encrypted hibernation (was Re: Hibernation considerations) Pavel Machek
2007-08-11 23:43         ` Dr. David Alan Gilbert
2007-08-12 22:12           ` Rafael J. Wysocki
2007-08-18 19:37             ` Dr. David Alan Gilbert
2007-08-21  7:29               ` Pavel Machek
2007-08-13  2:30           ` Michael Chang
2007-08-13  4:53             ` alon.barlev
2007-07-15 15:10 ` Hibernation considerations Al Boldi
2007-07-15 15:35   ` jimmy bahuleyan
2007-07-15 17:40     ` Al Boldi
2007-07-15 16:29   ` Alan Stern
2007-07-15 17:40     ` Al Boldi
2007-07-15 23:28       ` Alan Stern
2007-07-15 23:58         ` david
2007-07-16  5:02         ` Al Boldi
2007-07-16  6:49           ` david
2007-07-16 13:32             ` Al Boldi
2007-07-17  4:33               ` david
2007-07-17 12:08                 ` Al Boldi
2007-07-17 14:18                   ` Rafael J. Wysocki
2007-07-17 15:23                   ` david
2007-07-16 14:53           ` Alan Stern
2007-07-16 16:51             ` Al Boldi
2007-07-17  4:37               ` david
2007-07-15 19:52     ` david
2007-07-15 20:13 ` david
2007-07-15 22:47   ` Rafael J. Wysocki
2007-07-15 22:42     ` david
2007-07-15 23:15       ` Alan Stern
2007-07-15 23:38         ` Nigel Cunningham
2007-07-16 14:15           ` Alan Stern
2007-07-16 15:25             ` Rafael J. Wysocki
2007-07-15 23:41         ` david
2007-07-16 14:21           ` Alan Stern
2007-07-17  4:45             ` david
2007-07-17 14:15               ` Alan Stern
2007-07-17 14:40                 ` Rafael J. Wysocki
2007-07-17 15:29                   ` david
2007-07-17 16:02                     ` Rafael J. Wysocki
2007-07-17 17:06                       ` david
2007-07-17 19:50                         ` Rafael J. Wysocki
2007-07-17 20:18                           ` david
2007-07-17 20:39                             ` Jeremy Maitin-Shepard
2007-07-17 20:39                               ` david
2007-07-17 20:58                               ` Rafael J. Wysocki
2007-07-17 20:57                             ` Rafael J. Wysocki
2007-07-17 20:53                               ` david
2007-07-17 21:37                                 ` Rafael J. Wysocki
2007-07-17 21:42                                   ` david
2007-07-17 21:53                                     ` Jeremy Maitin-Shepard
2007-07-21 10:25                             ` Pavel Machek
2007-07-21 15:35                               ` Jeremy Maitin-Shepard
2007-07-21 17:56                                 ` Pavel Machek
2007-07-21 19:35                                   ` david
2007-07-21 19:49                                     ` Pavel Machek
2007-07-21 22:14                                       ` david
2007-08-01 16:58                             ` Stefan Seyfried
2007-07-17 20:24                           ` Jeremy Maitin-Shepard
2007-07-17 20:44                             ` david
2007-07-17 21:00                             ` Rafael J. Wysocki
2007-07-17 16:09                   ` Jeremy Maitin-Shepard
2007-07-17 19:54                     ` Rafael J. Wysocki
2007-07-17 18:32                   ` Alan Stern
2007-07-17 20:17                     ` Rafael J. Wysocki
2007-07-17 20:34                       ` david
2007-07-17 20:54                         ` Jeremy Maitin-Shepard
2007-07-17 21:04                           ` david
2007-07-17 21:23                         ` Rafael J. Wysocki
2007-07-17 21:17                           ` david
2007-07-17 21:27                             ` Jeremy Maitin-Shepard
2007-07-17 21:27                               ` david
2007-07-17 21:54                                 ` Rafael J. Wysocki
2007-07-17 21:45                               ` Rafael J. Wysocki
2007-07-17 21:43                             ` Rafael J. Wysocki
2007-07-17 20:34                       ` Jeremy Maitin-Shepard
2007-07-17 20:37                         ` david
2007-07-17 20:56                           ` Jeremy Maitin-Shepard
2007-07-17 21:06                             ` david
2007-07-17 21:40                               ` Rafael J. Wysocki
2007-07-17 21:24                           ` Rafael J. Wysocki
2007-07-17 21:11                         ` Rafael J. Wysocki
2007-07-17 20:27                     ` david
2007-07-17 21:20                       ` Rafael J. Wysocki
     [not found]                         ` <ea7a437ca4038d408ac544bbc3c2434a@bga.com>
2007-07-19 17:31                           ` [linux-pm] " david
2007-07-20 14:24                             ` Milton Miller
2007-07-20 15:44                               ` david
2007-07-19 20:28                           ` Rafael J. Wysocki
2007-07-19 23:07                             ` david
2007-07-20 11:17                               ` Rafael J. Wysocki
2007-07-20 15:35                                 ` david
2007-07-20 16:15                                   ` Alan Stern
2007-07-20 21:46                                     ` Rafael J. Wysocki
2007-07-20 16:56                                 ` Milton Miller
2007-07-20 17:31                                   ` Jeremy Maitin-Shepard
2007-07-20 21:30                                     ` Rafael J. Wysocki
2007-07-20 19:26                                   ` david
2007-07-20 21:28                                   ` Rafael J. Wysocki
2007-07-20 21:33                                     ` Jeremy Maitin-Shepard
2007-07-20 22:19                                       ` Rafael J. Wysocki
     [not found]                               ` <20070720152744.GH20529@grifter.jdc.home>
2007-07-20 15:36                                 ` david
2007-07-20 21:43                                   ` Rafael J. Wysocki
2007-07-20 21:39                                     ` david
2007-07-20 22:22                                       ` Rafael J. Wysocki
2007-07-20 22:39                                         ` david
2007-07-20 16:08                             ` Milton Miller
2007-07-20 16:20                               ` Alan Stern
2007-07-20 17:32                                 ` Milton Miller
2007-07-20 18:17                                   ` Alan Stern
2007-07-20 19:08                                     ` Milton Miller
2007-07-20 19:37                                       ` Alan Stern
2007-07-20 20:03                                     ` Oliver Neukum
2007-07-20 20:12                                       ` Alan Stern
2007-07-20 21:35                                         ` Oliver Neukum
2007-07-20 22:25                                           ` Alan Stern
2007-07-23 14:23                                             ` Oliver Neukum
2007-07-23 20:05                                               ` Towards eliminating the freezer Alan Stern
2007-07-24  8:21                                                 ` Oliver Neukum
2007-07-24 14:27                                                   ` Alan Stern
2007-07-24  9:33                                                 ` Rafael J. Wysocki
2007-07-24 14:29                                                   ` Alan Stern
2007-07-24 15:24                                                     ` Rafael J. Wysocki
2007-07-24 16:06                                                       ` Alan Stern
2007-07-24 19:20                                                         ` Rafael J. Wysocki
2007-07-24 20:24                                                           ` Alan Stern
2007-07-24 21:14                                                             ` Rafael J. Wysocki
2007-07-24 22:14                                                               ` Alan Stern
2007-07-25 12:23                                                                 ` Rafael J. Wysocki
2007-08-01  9:34                                             ` [linux-pm] Re: Hibernation considerations Pavel Machek
2007-08-03  3:50                                               ` david
2007-07-20 20:31                                 ` david
2007-07-20 21:24                                   ` Alan Stern
2007-07-20 21:34                                     ` david
2007-07-20 22:15                                       ` Rafael J. Wysocki
2007-07-20 21:37                                     ` Jeremy Maitin-Shepard
2007-07-20 22:35                                       ` Alan Stern
2007-07-20 22:43                                         ` david
2007-07-21  5:21                                           ` Nigel Cunningham
2007-07-21 14:10                                           ` Alan Stern
2007-07-22  3:43                                             ` david
2007-07-22 16:00                                               ` Alan Stern
2007-07-22 21:50                                                 ` david
2007-07-23 15:19                                                   ` Alan Stern
2007-07-23 19:01                                                     ` david
2007-07-23 20:22                                                       ` Alan Stern
2007-07-24 13:26                                                         ` Huang, Ying
2007-07-24 14:50                                                           ` Alan Stern
2007-07-20 22:48                                         ` Jeremy Maitin-Shepard
2007-07-20 21:02                               ` Rafael J. Wysocki
2007-07-21 11:44                                 ` Miklos Szeredi
2007-07-21 12:43                                   ` Nigel Cunningham
2007-07-21 13:56                                     ` Alan Stern
2007-07-21 16:13                                     ` Jeremy Maitin-Shepard
2007-07-21 18:12                                       ` Miklos Szeredi
2007-07-21 19:20                                         ` Rafael J. Wysocki
2007-08-01  9:22                                           ` Pavel Machek
2007-08-02 17:02                                             ` Rafael J. Wysocki [this message]
2007-07-21 22:21                                         ` Nigel Cunningham
2007-07-21 22:16                                       ` Nigel Cunningham
2007-07-22 15:26                                         ` Alan Stern
2007-07-22 16:27                                           ` Miklos Szeredi
2007-07-22 20:09                                             ` Alan Stern
2007-07-22 21:54                                               ` david
2007-07-22 22:42                                           ` Nigel Cunningham
2007-07-22 23:09                                             ` Rafael J. Wysocki
2007-07-22 23:18                                               ` Nigel Cunningham
2007-07-23  0:04                                             ` Paul Mackerras
2007-07-23  3:11                                               ` Nigel Cunningham
2007-07-23 15:23                                                 ` Alan Stern
2007-07-23 21:55                                                   ` Nigel Cunningham
2007-07-23 22:10                                                     ` Rafael J. Wysocki
2007-07-23  5:31                                             ` david
2007-07-23 10:24                                             ` Miklos Szeredi
2007-07-23 12:08                                               ` Rafael J. Wysocki
2007-07-23 12:14                                                 ` Miklos Szeredi
2007-07-23 12:27                                                   ` Rafael J. Wysocki
2007-07-23 12:31                                                   ` Oliver Neukum
2007-07-23 13:08                                                     ` Miklos Szeredi
2007-07-23 14:01                                                       ` Rafael J. Wysocki
2007-07-23 14:01                                                         ` Miklos Szeredi
2007-07-23 19:08                                                     ` david
2007-08-01  9:19                                     ` Pavel Machek
     [not found]                         ` <40fa2626aff7b6b590ad6aa4737fc873@bga.com>
2007-07-20 14:48                           ` Huang, Ying
2007-07-20 15:48                             ` david
2007-07-22  2:17                               ` Huang, Ying
2007-07-22  2:32                                 ` david
2007-07-20 21:34                             ` Rafael J. Wysocki
2007-07-17 22:38                       ` Alan Stern
2007-07-17 22:37                         ` david
2007-07-18 14:29                           ` Alan Stern
2007-07-18 14:47                             ` Rafael J. Wysocki
2007-07-20  4:40                               ` Al Boldi
2007-07-20 10:59                                 ` Rafael J. Wysocki
2007-07-21 10:17               ` Pavel Machek
2007-07-15 23:22       ` Rafael J. Wysocki
2007-07-15 23:49         ` david
2007-07-16 12:06           ` Rafael J. Wysocki
     [not found]             ` <20070716123849.GC14212@grifter.jdc.home>
2007-07-16 15:29               ` Rafael J. Wysocki
2007-07-17  4:28                 ` david
2007-07-17 10:42                   ` Matthew Garrett
2007-07-17 15:19                     ` david
2007-07-18  2:18                       ` Matthew Garrett
2007-07-18  3:54                         ` david
2007-07-18 11:10                           ` Matthew Garrett
2007-07-18 12:56                             ` david
2007-07-15 23:17   ` Alan Stern
2007-07-15 23:53     ` david
2007-07-16  5:18       ` Jeremy Maitin-Shepard
2007-07-15 20:35 ` Cornelius Riemenschneider
2007-07-15 19:46   ` david
2007-07-16  0:51 ` Matthew Garrett
2007-07-16  0:51   ` david

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200708021902.28379.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=david@lang.hm \
    --cc=jbms@cmu.edu \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=miklos@szeredi.hu \
    --cc=miltonm@bga.com \
    --cc=nigel@nigel.suspend2.net \
    --cc=pavel@ucw.cz \
    --cc=stern@rowland.harvard.edu \
    --cc=ying.huang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®