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) <[email protected]>
Signed-off-by: Andreas Dilger <[email protected]>
Index: linux-2.6.27.21-0.1/fs/jbd2/transaction.c
===================================================================
--- linux-2.6.27.21-0.1.orig/fs/jbd2/transaction.c 2009-06-10 11:11:41.000000000 -0600
+++ linux-2.6.27.21-0.1/fs/jbd2/transaction.c 2009-06-10 11:12:32.000000000 -0600
@@ -54,7 +54,7 @@
INIT_LIST_HEAD(&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);
Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.
> 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) <[email protected]>
> Signed-off-by: Andreas Dilger <[email protected]>
Looks fine. You can add:
Acked-by: Jan Kara <[email protected]>
How about a similar JBD fix?
Honza
> Index: linux-2.6.27.21-0.1/fs/jbd2/transaction.c
> ===================================================================
> --- linux-2.6.27.21-0.1.orig/fs/jbd2/transaction.c 2009-06-10 11:11:41.000000000 -0600
> +++ linux-2.6.27.21-0.1/fs/jbd2/transaction.c 2009-06-10 11:12:32.000000000 -0600
> @@ -54,7 +54,7 @@
> INIT_LIST_HEAD(&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);
>
> Cheers, Andreas
> --
> Andreas Dilger
> Sr. Staff Engineer, Lustre Group
> Sun Microsystems of Canada, Inc.
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Jan Kara <[email protected]>
SuSE CR Labs
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) <[email protected]>
> > Signed-off-by: Andreas Dilger <[email protected]>
>
> Looks fine. You can add:
> Acked-by: Jan Kara <[email protected]>
> 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);
Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.
> 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) <[email protected]>
> > > Signed-off-by: Andreas Dilger <[email protected]>
> >
> > Looks fine. You can add:
> > Acked-by: Jan Kara <[email protected]>
> > 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
--
Jan Kara <[email protected]>
SuSE CR Labs
On Mon, Jul 27, 2009 at 02:22:09PM -0600, Andreas Dilger 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) <[email protected]>
> Signed-off-by: Andreas Dilger <[email protected]>
Added to the ext4 patch queue; apologies for the delay.
- Ted