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: Kent Overstreet <koverstreet@google.com>
This commit is contained in:
parent
5c694129c8
commit
bbc77aa7fb
@ -665,12 +665,10 @@ SHOW(__bch_cache)
|
|||||||
int cmp(const void *l, const void *r)
|
int cmp(const void *l, const void *r)
|
||||||
{ return *((uint16_t *) r) - *((uint16_t *) l); }
|
{ 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;
|
size_t n = ca->sb.nbuckets, i, unused, btree;
|
||||||
uint64_t sum = 0;
|
uint64_t sum = 0;
|
||||||
uint16_t q[nq], *p, *cached;
|
/* Compute 31 quantiles */
|
||||||
|
uint16_t q[31], *p, *cached;
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
|
|
||||||
cached = p = vmalloc(ca->sb.nbuckets * sizeof(uint16_t));
|
cached = p = vmalloc(ca->sb.nbuckets * sizeof(uint16_t));
|
||||||
@ -703,26 +701,29 @@ SHOW(__bch_cache)
|
|||||||
if (n)
|
if (n)
|
||||||
do_div(sum, n);
|
do_div(sum, n);
|
||||||
|
|
||||||
for (i = 0; i < nq; i++)
|
for (i = 0; i < ARRAY_SIZE(q); i++)
|
||||||
q[i] = INITIAL_PRIO - cached[n * (i + 1) / (nq + 1)];
|
q[i] = INITIAL_PRIO - cached[n * (i + 1) /
|
||||||
|
(ARRAY_SIZE(q) + 1)];
|
||||||
|
|
||||||
vfree(p);
|
vfree(p);
|
||||||
|
|
||||||
ret = snprintf(buf, PAGE_SIZE,
|
ret = scnprintf(buf, PAGE_SIZE,
|
||||||
"Unused: %zu%%\n"
|
"Unused: %zu%%\n"
|
||||||
"Metadata: %zu%%\n"
|
"Metadata: %zu%%\n"
|
||||||
"Average: %llu\n"
|
"Average: %llu\n"
|
||||||
"Sectors per Q: %zu\n"
|
"Sectors per Q: %zu\n"
|
||||||
"Quantiles: [",
|
"Quantiles: [",
|
||||||
unused * 100 / (size_t) ca->sb.nbuckets,
|
unused * 100 / (size_t) ca->sb.nbuckets,
|
||||||
btree * 100 / (size_t) ca->sb.nbuckets, sum,
|
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 < nq && ret < (ssize_t) PAGE_SIZE; i++)
|
for (i = 0; i < ARRAY_SIZE(q); i++)
|
||||||
ret += snprintf(buf + ret, PAGE_SIZE - ret,
|
ret += scnprintf(buf + ret, PAGE_SIZE - ret,
|
||||||
i < nq - 1 ? "%u " : "%u]\n", q[i]);
|
"%u ", q[i]);
|
||||||
|
ret--;
|
||||||
|
|
||||||
|
ret += scnprintf(buf + ret, PAGE_SIZE - ret, "]\n");
|
||||||
|
|
||||||
buf[PAGE_SIZE - 1] = '\0';
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user