Re: [PATCH] Convert refrigerator() to try_to_freeze()
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 -- Evolution. Enumerate the requirements. Consider the interdependencies. Calculate the probabilities. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] Convert refrigerator() to try_to_freeze()
Hi. On Tue, 2005-07-19 at 23:54, Pavel Machek wrote: > 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. > > > > 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 > > --- 230-refrigerator-to-try_to_freeze.patch-old/fs/jbd/journal.c > > 2005-07-18 06:36:59.0 +1000 > > +++ 230-refrigerator-to-try_to_freeze.patch-new/fs/jbd/journal.c > > 2005-07-18 13:54:47.0 +1000 > > @@ -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? > > > 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 > > --- 230-refrigerator-to-try_to_freeze.patch-old/fs/jfs/jfs_logmgr.c > > 2005-07-18 06:36:59.0 +1000 > > +++ 230-refrigerator-to-try_to_freeze.patch-new/fs/jfs/jfs_logmgr.c > > 2005-07-18 13:54:47.0 +1000 > > @@ -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); > > 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 -- Evolution. Enumerate the requirements. Consider the interdependencies. Calculate the probabilities. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] 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. > 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 > --- 230-refrigerator-to-try_to_freeze.patch-old/fs/jbd/journal.c > 2005-07-18 06:36:59.0 +1000 > +++ 230-refrigerator-to-try_to_freeze.patch-new/fs/jbd/journal.c > 2005-07-18 13:54:47.0 +1000 > @@ -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? > 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 > --- 230-refrigerator-to-try_to_freeze.patch-old/fs/jfs/jfs_logmgr.c > 2005-07-18 06:36:59.0 +1000 > +++ 230-refrigerator-to-try_to_freeze.patch-new/fs/jfs/jfs_logmgr.c > 2005-07-18 13:54:47.0 +1000 > @@ -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); See? You are needlessly testing condition twice. Pavel -- teflon -- maybe it is a trademark, but it should not be. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] 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(-) 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 --- 230-refrigerator-to-try_to_freeze.patch-old/drivers/media/video/msp3400.c 2005-07-18 06:36:48.0 +1000 +++ 230-refrigerator-to-try_to_freeze.patch-new/drivers/media/video/msp3400.c 2005-07-18 13:54:48.0 +1000 @@ -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; } 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 --- 230-refrigerator-to-try_to_freeze.patch-old/drivers/net/irda/stir4200.c 2005-07-18 06:36:51.0 +1000 +++ 230-refrigerator-to-try_to_freeze.patch-new/drivers/net/irda/stir4200.c 2005-07-18 08:20:58.0 +1000 @@ -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; 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 --- 230-refrigerator-to-try_to_freeze.patch-old/fs/jbd/journal.c 2005-07-18 06:36:59.0 +1000 +++ 230-refrigerator-to-try_to_freeze.patch-new/fs/jbd/journal.c 2005-07-18 13:54:47.0 +1000 @@ -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 { /* 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 --- 230-refrigerator-to-try_to_freeze.patch-old/fs/jfs/jfs_logmgr.c 2005-07-18 06:36:59.0 +1000 +++ 230-refrigerator-to-try_to_freeze.patch-new/fs/jfs/jfs_logmgr.c 2005-07-18 13:54:47.0 +1000 @@ -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); 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 --- 230-refrigerator-to-try_to_freeze.patch-old/fs/jfs/jfs_txnmgr.c 2005-07-18 06:36:59.0 +1000 +++ 230-refrigerator-to-try_to_freeze.patch-new/fs/jfs/jfs_txnmgr.c 2005-07-18 13:54:47.0 +1000 @@ -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); 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 --- 230-refrigerator-to-try_to_freeze.patch-old/fs/xfs/linux-2.6/xfs_buf.c 2005-07-18 06:37:01.0 +1000 +++ 230-refrigerator-to-try_to_freeze.patch-new/fs/xfs/linux-2.6/xfs_buf.c 2005-07-18 13:54:48.0 +1000 @@ -1773,7 +1773,7 @@ xfsbufd( do { if (unlikely(freezing(current))) { xfsbufd_force_sleep = 1; - refrig