Commit bbc77aa7 authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcache: fix a spurious gcc complaint, use scnprintf



An old version of gcc was complaining about using a const int as the
size of a stack allocated array. Which should be fine - but using
ARRAY_SIZE() is better, anyways.

Also, refactor the code to use scnprintf().

Signed-off-by: default avatarKent Overstreet <koverstreet@google.com>
parent 5c694129
Loading
Loading
Loading
Loading
+22 −21
Original line number Diff line number Diff line
@@ -665,12 +665,10 @@ SHOW(__bch_cache)
		int cmp(const void *l, const void *r)
		{	return *((uint16_t *) r) - *((uint16_t *) l); }

		/* Number of quantiles we compute */
		const unsigned nq = 31;

		size_t n = ca->sb.nbuckets, i, unused, btree;
		uint64_t sum = 0;
		uint16_t q[nq], *p, *cached;
		/* Compute 31 quantiles */
		uint16_t q[31], *p, *cached;
		ssize_t ret;

		cached = p = vmalloc(ca->sb.nbuckets * sizeof(uint16_t));
@@ -703,12 +701,13 @@ SHOW(__bch_cache)
		if (n)
			do_div(sum, n);

		for (i = 0; i < nq; i++)
			q[i] = INITIAL_PRIO - cached[n * (i + 1) / (nq + 1)];
		for (i = 0; i < ARRAY_SIZE(q); i++)
			q[i] = INITIAL_PRIO - cached[n * (i + 1) /
				(ARRAY_SIZE(q) + 1)];

		vfree(p);

		ret = snprintf(buf, PAGE_SIZE,
		ret = scnprintf(buf, PAGE_SIZE,
				"Unused:		%zu%%\n"
				"Metadata:	%zu%%\n"
				"Average:	%llu\n"
@@ -716,13 +715,15 @@ SHOW(__bch_cache)
				"Quantiles:	[",
				unused * 100 / (size_t) ca->sb.nbuckets,
				btree * 100 / (size_t) ca->sb.nbuckets, sum,
			       n * ca->sb.bucket_size / (nq + 1));
				n * ca->sb.bucket_size / (ARRAY_SIZE(q) + 1));

		for (i = 0; i < ARRAY_SIZE(q); i++)
			ret += scnprintf(buf + ret, PAGE_SIZE - ret,
					 "%u ", q[i]);
		ret--;

		for (i = 0; i < nq && ret < (ssize_t) PAGE_SIZE; i++)
			ret += snprintf(buf + ret, PAGE_SIZE - ret,
					i < nq - 1 ? "%u " : "%u]\n", q[i]);
		ret += scnprintf(buf + ret, PAGE_SIZE - ret, "]\n");

		buf[PAGE_SIZE - 1] = '\0';
		return ret;
	}