Skip to contentSkip to conversation

Convert refrigerator() to try_to_freeze()

PATCH In review Nigel Cunningham 2 participants 4 messages Jul 18, 2005 – Jul 21, 2005

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Convert refrigerator() to try_to_freeze()

Hi.

This patch removes the few remaining direct invocations of the refrigerator in 2.6.13-rc3. In drivers/media/video/msp3400.c, it also shifts the call to after the remove_wait_queue; this seems to be the more appropriate place.

Regards,

Nigel

Signed-off by: Nigel Cunningham <[email protected]>

 drivers/media/video/msp3400.c |    4 +---
 drivers/net/irda/stir4200.c   |    2 +-
 fs/jbd/journal.c              |    2 +-
 fs/jfs/jfs_logmgr.c           |    2 +-
 fs/jfs/jfs_txnmgr.c           |    4 ++--
 fs/xfs/linux-2.6/xfs_buf.c    |    2 +-
 6 files changed, 7 insertions(+), 9 deletions(-)
drivers/media/video/msp3400.c +1 -3
diff -ruNp 230-refrigerator-to-try_to_freeze.patch-old/drivers/media/video/msp3400.c 230-refrigerator-to-try_to_freeze.patch-new/drivers/media/video/msp3400.c
@@ -741,11 +741,9 @@ static int msp34xx_sleep(struct msp3400c
 			schedule_timeout(msecs_to_jiffies(timeout));
 		}
 	}
-	if (current->flags & PF_FREEZE) {
-		refrigerator ();
-	}
 
 	remove_wait_queue(&msp->wq, &wait);
+	try_to_freeze();
 	return msp->restart;
 }
 
drivers/net/irda/stir4200.c +1 -1
diff -ruNp 230-refrigerator-to-try_to_freeze.patch-old/drivers/net/irda/stir4200.c 230-refrigerator-to-try_to_freeze.patch-new/drivers/net/irda/stir4200.c
@@ -771,7 +771,7 @@ static int stir_transmit_thread(void *ar
 
 			write_reg(stir, REG_CTRL1, CTRL1_TXPWD|CTRL1_RXPWD);
 
-			refrigerator();
+			try_to_freeze();
 
 			if (change_speed(stir, stir->speed))
 				break;
fs/jbd/journal.c +1 -1
diff -ruNp 230-refrigerator-to-try_to_freeze.patch-old/fs/jbd/journal.c 230-refrigerator-to-try_to_freeze.patch-new/fs/jbd/journal.c
@@ -175,7 +175,7 @@ loop:
 		 */
 		jbd_debug(1, "Now suspending kjournald\n");
 		spin_unlock(&journal->j_state_lock);
-		refrigerator();
+		try_to_freeze();
 		spin_lock(&journal->j_state_lock);
 	} else {
 		/*
fs/jfs/jfs_logmgr.c +1 -1
diff -ruNp 230-refrigerator-to-try_to_freeze.patch-old/fs/jfs/jfs_logmgr.c 230-refrigerator-to-try_to_freeze.patch-new/fs/jfs/jfs_logmgr.c
@@ -2361,7 +2361,7 @@ int jfsIOWait(void *arg)
 		}
 		if (freezing(current)) {
 			spin_unlock_irq(&log_redrive_lock);
-			refrigerator();
+			try_to_freeze();
 		} else {
 			add_wait_queue(&jfs_IO_thread_wait, &wq);
 			set_current_state(TASK_INTERRUPTIBLE);
fs/jfs/jfs_txnmgr.c +2 -2
diff -ruNp 230-refrigerator-to-try_to_freeze.patch-old/fs/jfs/jfs_txnmgr.c 230-refrigerator-to-try_to_freeze.patch-new/fs/jfs/jfs_txnmgr.c
@@ -2790,7 +2790,7 @@ int jfs_lazycommit(void *arg)
 
 		if (freezing(current)) {
 			LAZY_UNLOCK(flags);
-			refrigerator();
+			try_to_freeze();
 		} else {
 			DECLARE_WAITQUEUE(wq, current);
 
@@ -2989,7 +2989,7 @@ int jfs_sync(void *arg)
 
 		if (freezing(current)) {
 			TXN_UNLOCK();
-			refrigerator();
+			try_to_freeze();
 		} else {
 			DECLARE_WAITQUEUE(wq, current);
 
fs/xfs/linux-2.6/xfs_buf.c +1 -1
diff -ruNp 230-refrigerator-to-try_to_freeze.patch-old/fs/xfs/linux-2.6/xfs_buf.c 230-refrigerator-to-try_to_freeze.patch-new/fs/xfs/linux-2.6/xfs_buf.c
@@ -1773,7 +1773,7 @@ xfsbufd(
 	do {
 		if (unlikely(freezing(current))) {
 			xfsbufd_force_sleep = 1;
-			refrigerator();
+			try_to_freeze();
 		} else {
 			xfsbufd_force_sleep = 0;
 		}
Signature · 5 lines
Evolution.
Enumerate the requirements.
Consider the interdependencies.
Calculate the probabilities.
Be amazed that people believe it happened. 
#1 lore raw

Hi!

Quoted 10 lines

This patch removes the few remaining direct invocations of the refrigerator in 2.6.13-rc3. In drivers/media/video/msp3400.c, it also shifts the call to after the remove_wait_queue; this seems to be the more appropriate place.

diff -ruNp 230-refrigerator-to-try_to_freeze.patch-old/fs/jbd/journal.c 230-refrigerator-to-try_to_freeze.patch-new/fs/jbd/journal.c

fs/jbd/journal.c loop: · line 181

Quoted 8 lines
fs/jbd/journal.c +1 -1
@@ -175,7 +175,7 @@ loop:
 		 */
 		jbd_debug(1, "Now suspending kjournald\n");
 		spin_unlock(&journal->j_state_lock);
-		refrigerator();
+		try_to_freeze();
 		spin_lock(&journal->j_state_lock);
 	} else {
 		/*

They probably tested it before, why test again?

fs/jfs/jfs_logmgr.c int jfsIOWait(void *arg) · line 2362

Quoted 6 lines

diff -ruNp 230-refrigerator-to-try_to_freeze.patch-old/fs/jfs/jfs_logmgr.c 230-refrigerator-to-try_to_freeze.patch-new/fs/jfs/jfs_logmgr.c

fs/jfs/jfs_logmgr.c +0 -0
@@ -2361,7 +2361,7 @@ int jfsIOWait(void *arg)
 		}
 		if (freezing(current)) {

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

fs/jfs/jfs_logmgr.c int jfsIOWait(void *arg) · line 2367

Quoted 6 lines
fs/jfs/jfs_logmgr.c +1 -1
 			spin_unlock_irq(&log_redrive_lock);
-			refrigerator();
+			try_to_freeze();
 		} else {
 			add_wait_queue(&jfs_IO_thread_wait, &wq);
 			set_current_state(TASK_INTERRUPTIBLE);

See? You are needlessly testing condition twice.

Pavel

Signature · 1 line
teflon -- maybe it is a trademark, but it should not be.
#2 lore raw

Hi.

Quoted 30 lines · Pavel Machek

Hi!

Quoted 10 lines

This patch removes the few remaining direct invocations of the refrigerator in 2.6.13-rc3. In drivers/media/video/msp3400.c, it also shifts the call to after the remove_wait_queue; this seems to be the more appropriate place.

diff -ruNp 230-refrigerator-to-try_to_freeze.patch-old/fs/jbd/journal.c 230-refrigerator-to-try_to_freeze.patch-new/fs/jbd/journal.c

fs/jbd/journal.c loop: · line 181

Quoted 8 lines
fs/jbd/journal.c +1 -1
@@ -175,7 +175,7 @@ loop:
 		 */
 		jbd_debug(1, "Now suspending kjournald\n");
 		spin_unlock(&journal->j_state_lock);
-		refrigerator();
+		try_to_freeze();
 		spin_lock(&journal->j_state_lock);
 	} else {
 		/*

They probably tested it before, why test again?

fs/jfs/jfs_logmgr.c int jfsIOWait(void *arg) · line 2362

Quoted 6 lines

diff -ruNp 230-refrigerator-to-try_to_freeze.patch-old/fs/jfs/jfs_logmgr.c 230-refrigerator-to-try_to_freeze.patch-new/fs/jfs/jfs_logmgr.c

fs/jfs/jfs_logmgr.c +0 -0
@@ -2361,7 +2361,7 @@ int jfsIOWait(void *arg)
 		}
 		if (freezing(current)) {

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Quoted 8 lines

fs/jfs/jfs_logmgr.c int jfsIOWait(void *arg) · line 2367

Quoted 6 lines
fs/jfs/jfs_logmgr.c +1 -1
 			spin_unlock_irq(&log_redrive_lock);
-			refrigerator();
+			try_to_freeze();
 		} else {
 			add_wait_queue(&jfs_IO_thread_wait, &wq);
 			set_current_state(TASK_INTERRUPTIBLE);

See? You are needlessly testing condition twice.

True. I was just concerned that things are messy and inconsistent as they stand (sometimes we use try_to_freeze and implicitly call refrigerator(), sometimes we call freezing() and refrigerator). *shrug*

Regards,

Nigel

Signature · 4 lines
Evolution.
Enumerate the requirements.
Consider the interdependencies.
Calculate the probabilities.
#3 lore raw
In reply to Pavel Machek

Hi.

On the testing twice, fair enough. I'll send a new version with the refrigerator changes, as jbd won't need that dirty big if..else then since there's no danger of a deadlock.

Regards,

Nigel

Signature · 4 lines
Evolution.
Enumerate the requirements.
Consider the interdependencies.
Calculate the probabilities.