aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ubifs/super.c
diff options
context:
space:
mode:
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2009-05-28 09:24:15 -0400
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2009-06-08 04:14:58 -0400
commitf2c5dbd7b7396457efc114f825acfdd4db4608f8 (patch)
tree9c65570230dfc05b8580c86db0154b6b2a98515c /fs/ubifs/super.c
parent8daa21e61be47a5b136c4ee1be82e391a5788696 (diff)
UBIFS: start using hrtimers
UBIFS uses timers for write-buffer write-back. It is not crucial for us to write-back exactly on time. We are fine to write-back a little earlier or later. And this means we may optimize UBIFS timer so that it could be groped with a close timer event, so that the CPU would not be waken up just to do the write back. This is optimization to lessen power consumption, which is important in embedded devices UBIFS is used for. hrtimers have a nice feature: they are effectively range timers, and we may defind the soft and hard limits for it. Standard timers do not have these feature. They may only be made deferrable, but this means there is effectively no hard limit. So, we will better use hrtimers. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'fs/ubifs/super.c')
-rw-r--r--fs/ubifs/super.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index b9b051a4c01e..91c91cb7a599 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -799,7 +799,7 @@ static int alloc_wbufs(struct ubifs_info *c)
799 * does not need to be synchronized by timer. 799 * does not need to be synchronized by timer.
800 */ 800 */
801 c->jheads[GCHD].wbuf.dtype = UBI_LONGTERM; 801 c->jheads[GCHD].wbuf.dtype = UBI_LONGTERM;
802 c->jheads[GCHD].wbuf.timeout = 0; 802 c->jheads[GCHD].wbuf.softlimit = ktime_set(0, 0);
803 803
804 return 0; 804 return 0;
805} 805}
@@ -1695,7 +1695,7 @@ static void ubifs_remount_ro(struct ubifs_info *c)
1695 1695
1696 for (i = 0; i < c->jhead_cnt; i++) { 1696 for (i = 0; i < c->jhead_cnt; i++) {
1697 ubifs_wbuf_sync(&c->jheads[i].wbuf); 1697 ubifs_wbuf_sync(&c->jheads[i].wbuf);
1698 del_timer_sync(&c->jheads[i].wbuf.timer); 1698 hrtimer_cancel(&c->jheads[i].wbuf.timer);
1699 } 1699 }
1700 1700
1701 c->mst_node->flags &= ~cpu_to_le32(UBIFS_MST_DIRTY); 1701 c->mst_node->flags &= ~cpu_to_le32(UBIFS_MST_DIRTY);
@@ -1755,7 +1755,7 @@ static void ubifs_put_super(struct super_block *sb)
1755 if (c->jheads) 1755 if (c->jheads)
1756 for (i = 0; i < c->jhead_cnt; i++) { 1756 for (i = 0; i < c->jhead_cnt; i++) {
1757 ubifs_wbuf_sync(&c->jheads[i].wbuf); 1757 ubifs_wbuf_sync(&c->jheads[i].wbuf);
1758 del_timer_sync(&c->jheads[i].wbuf.timer); 1758 hrtimer_cancel(&c->jheads[i].wbuf.timer);
1759 } 1759 }
1760 1760
1761 /* 1761 /*