Message ID | 20090730180035.GC4231@webber.adilger.int |
---|---|
State | Accepted, archived |
Headers | show |
> On Jul 30, 2009 19:47 +0200, Jan Kara wrote: > > > jbd and jbd2 fixes: fix jiffie rounding in jbd commit timer setup code. > > > Rounding down could cause the timer to be fired before the corresponding > > > transaction has expired. That transaction can stay not committed forever if > > > no new transaction is created or expicit sync/umount happens. > > > > > > Signed-off-by: Alex Zhuravlev (Tomas) <alex.zhuravlev@sun.com> > > > Signed-off-by: Andreas Dilger <adilger@sun.com> > > > > Looks fine. You can add: > > Acked-by: Jan Kara <jack@suse.cz> > > How about a similar JBD fix? > > Index: linux-2.6.27.21-0.1/fs/jbd/transaction.c > =================================================================== > --- linux-2.6.27.21-0.1.orig/fs/jbd/transaction.c 2009-06-10 11:11:41.000000000 -0600 > +++ linux-2.6.27.21-0.1/fs/jbd/transaction.c 2009-06-10 11:12:32.000000000 -0600 > @@ -54,7 +54,7 @@ > spin_lock_init(&transaction->t_inode_list); > > /* Set up the commit timer for the new transaction. */ > - journal->j_commit_timer.expires = round_jiffies(transaction->t_expires); > + journal->j_commit_timer.expires = round_jiffies_up(transaction->t_expires); > add_timer(&journal->j_commit_timer); > > J_ASSERT(journal->j_running_transaction == NULL); Thanks. Copied over the changelog, added your Signed-off-by and merged into my tree... Honza
Index: linux-2.6.27.21-0.1/fs/jbd/transaction.c =================================================================== --- linux-2.6.27.21-0.1.orig/fs/jbd/transaction.c 2009-06-10 11:11:41.000000000 -0600 +++ linux-2.6.27.21-0.1/fs/jbd/transaction.c 2009-06-10 11:12:32.000000000 -0600 @@ -54,7 +54,7 @@ spin_lock_init(&transaction->t_inode_list); /* Set up the commit timer for the new transaction. */ - journal->j_commit_timer.expires = round_jiffies(transaction->t_expires); + journal->j_commit_timer.expires = round_jiffies_up(transaction->t_expires); add_timer(&journal->j_commit_timer); J_ASSERT(journal->j_running_transaction == NULL);