Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a35a3a8 authored by Artem Bityutskiy's avatar Artem Bityutskiy
Browse files

UBIFS: set write-buffer timout to 3-5 seconds



This patch cleans up write-buffer timeout initialization and
sets it to 3-5 interval.

Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
parent 0b335b9d
Loading
Loading
Loading
Loading
+4 −13
Original line number Diff line number Diff line
@@ -828,7 +828,6 @@ int ubifs_read_node(const struct ubifs_info *c, void *buf, int type, int len,
int ubifs_wbuf_init(struct ubifs_info *c, struct ubifs_wbuf *wbuf)
{
	size_t size;
	ktime_t hardlimit;

	wbuf->buf = kmalloc(c->min_io_size, GFP_KERNEL);
	if (!wbuf->buf)
@@ -854,18 +853,10 @@ int ubifs_wbuf_init(struct ubifs_info *c, struct ubifs_wbuf *wbuf)

	hrtimer_init(&wbuf->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
	wbuf->timer.function = wbuf_timer_callback_nolock;
	/*
	 * Make write-buffer soft limit to be 20% of the hard limit. The
	 * write-buffer timer is allowed to expire any time between the soft
	 * and hard limits.
	 */
	hardlimit = ktime_set(DEFAULT_WBUF_TIMEOUT_SECS, 0);
	wbuf->delta = DEFAULT_WBUF_TIMEOUT_SECS * 1000000000ULL * 2 / 10;
	if (wbuf->delta > ULONG_MAX)
		wbuf->delta = ULONG_MAX;
	wbuf->softlimit = ktime_sub_ns(hardlimit, wbuf->delta);
	hrtimer_set_expires_range_ns(&wbuf->timer,  wbuf->softlimit,
				     wbuf->delta);
	wbuf->softlimit = ktime_set(WBUF_TIMEOUT_SOFTLIMIT, 0);
	wbuf->delta = WBUF_TIMEOUT_HARDLIMIT - WBUF_TIMEOUT_SOFTLIMIT;
	wbuf->delta *= 1000000000ULL;
	ubifs_assert(wbuf->delta <= ULONG_MAX);
	return 0;
}

+3 −2
Original line number Diff line number Diff line
@@ -95,8 +95,9 @@
 */
#define BGT_NAME_PATTERN "ubifs_bgt%d_%d"

/* Default write-buffer synchronization timeout in seconds */
#define DEFAULT_WBUF_TIMEOUT_SECS 5
/* Write-buffer synchronization timeout interval in seconds */
#define WBUF_TIMEOUT_SOFTLIMIT 3
#define WBUF_TIMEOUT_HARDLIMIT 5

/* Maximum possible inode number (only 32-bit inodes are supported now) */
#define MAX_INUM 0xFFFFFFFF