summaryrefslogtreecommitdiff
path: root/linux
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2022-11-26 17:09:59 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2022-11-26 17:09:59 -0500
commit934a84dfaf719af82dadbbe0e2480baff03c905b (patch)
tree22deb77e752f90c842ac2f8dce91f5a602afd49d /linux
parent48eefee7495c6e145f3fcfe6ab83f9e8bc27a1ec (diff)
Update bcachefs sources to 5963d1b1a4 bcacehfs: Fix bch2_get_alloc_in_memory_pos()
Diffstat (limited to 'linux')
-rw-r--r--linux/mean_and_variance.c32
1 files changed, 2 insertions, 30 deletions
diff --git a/linux/mean_and_variance.c b/linux/mean_and_variance.c
index aa95db12..55d46c9d 100644
--- a/linux/mean_and_variance.c
+++ b/linux/mean_and_variance.c
@@ -67,13 +67,7 @@ s64 fast_divpow2(s64 n, u8 d)
*/
struct mean_and_variance mean_and_variance_update(struct mean_and_variance s1, s64 v1)
{
- struct mean_and_variance s2;
- u64 v2 = abs(v1);
-
- s2.n = s1.n + 1;
- s2.sum = s1.sum + v1;
- s2.sum_squares = u128_add(s1.sum_squares, u128_square(v2));
- return s2;
+ return mean_and_variance_update_inlined(s1, v1);
}
EXPORT_SYMBOL_GPL(mean_and_variance_update);
@@ -120,29 +114,7 @@ EXPORT_SYMBOL_GPL(mean_and_variance_get_stddev);
struct mean_and_variance_weighted mean_and_variance_weighted_update(struct mean_and_variance_weighted s1,
s64 x)
{
- struct mean_and_variance_weighted s2;
- // previous weighted variance.
- u64 var_w0 = s1.variance;
- u8 w = s2.w = s1.w;
- // new value weighted.
- s64 x_w = x << w;
- s64 diff_w = x_w - s1.mean;
- s64 diff = fast_divpow2(diff_w, w);
- // new mean weighted.
- s64 u_w1 = s1.mean + diff;
-
- BUG_ON(w % 2 != 0);
-
- if (!s1.init) {
- s2.mean = x_w;
- s2.variance = 0;
- } else {
- s2.mean = u_w1;
- s2.variance = ((var_w0 << w) - var_w0 + ((diff_w * (x_w - u_w1)) >> w)) >> w;
- }
- s2.init = true;
-
- return s2;
+ return mean_and_variance_weighted_update_inlined(s1, x);
}
EXPORT_SYMBOL_GPL(mean_and_variance_weighted_update);