]> err.no Git - linux-2.6/blobdiff - fs/jfs/jfs_logmgr.c
/spare/repo/netdev-2.6 branch 'master'
[linux-2.6] / fs / jfs / jfs_logmgr.c
index c5cc03bcae6911d4235a8b20a12fb7b7b1d0b307..22815e88e7cc0caa85ccdf4220d2777b1929b363 100644 (file)
@@ -1030,7 +1030,8 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
         * starting until all current transactions are completed
         * by setting syncbarrier flag.
         */
-       if (written > LOGSYNC_BARRIER(logsize) && logsize > 32 * LOGPSIZE) {
+       if (!test_bit(log_SYNCBARRIER, &log->flag) &&
+           (written > LOGSYNC_BARRIER(logsize)) && log->active) {
                set_bit(log_SYNCBARRIER, &log->flag);
                jfs_info("log barrier on: lsn=0x%x syncpt=0x%x", lsn,
                         log->syncpt);
@@ -1617,6 +1618,8 @@ void jfs_flush_journal(struct jfs_log *log, int wait)
                }
        }
        assert(list_empty(&log->cqueue));
+
+#ifdef CONFIG_JFS_DEBUG
        if (!list_empty(&log->synclist)) {
                struct logsyncblk *lp;
 
@@ -1631,9 +1634,8 @@ void jfs_flush_journal(struct jfs_log *log, int wait)
                                dump_mem("orphan tblock", lp,
                                         sizeof(struct tblock));
                }
-//             current->state = TASK_INTERRUPTIBLE;
-//             schedule();
        }
+#endif
        //assert(list_empty(&log->synclist));
        clear_bit(log_FLUSH, &log->flag);
 }
@@ -2358,9 +2360,9 @@ int jfsIOWait(void *arg)
                        lbmStartIO(bp);
                        spin_lock_irq(&log_redrive_lock);
                }
-               if (current->flags & PF_FREEZE) {
+               if (freezing(current)) {
                        spin_unlock_irq(&log_redrive_lock);
-                       refrigerator(PF_FREEZE);
+                       refrigerator();
                } else {
                        add_wait_queue(&jfs_IO_thread_wait, &wq);
                        set_current_state(TASK_INTERRUPTIBLE);