forked from Minki/linux
gfs2: Make statistics unsigned, suitable for use with do_div()
None of these statistics can meaningfully be negative, and the
numerator for do_div() must have the type u64. The generic
implementation of do_div() used on some 32-bit architectures asserts
that, resulting in a compiler error in gfs2_rgrp_congested().
Fixes: 0166b197c2
("GFS2: Average in only non-zero round-trip times ...")
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Acked-by: Andreas Gruenbacher <agruenba@redhat.com>
This commit is contained in:
parent
88ffbf3e03
commit
4d207133e9
@ -1680,17 +1680,17 @@ static int gfs2_glstats_seq_show(struct seq_file *seq, void *iter_ptr)
|
|||||||
{
|
{
|
||||||
struct gfs2_glock *gl = iter_ptr;
|
struct gfs2_glock *gl = iter_ptr;
|
||||||
|
|
||||||
seq_printf(seq, "G: n:%u/%llx rtt:%lld/%lld rttb:%lld/%lld irt:%lld/%lld dcnt: %lld qcnt: %lld\n",
|
seq_printf(seq, "G: n:%u/%llx rtt:%llu/%llu rttb:%llu/%llu irt:%llu/%llu dcnt: %llu qcnt: %llu\n",
|
||||||
gl->gl_name.ln_type,
|
gl->gl_name.ln_type,
|
||||||
(unsigned long long)gl->gl_name.ln_number,
|
(unsigned long long)gl->gl_name.ln_number,
|
||||||
(long long)gl->gl_stats.stats[GFS2_LKS_SRTT],
|
(unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTT],
|
||||||
(long long)gl->gl_stats.stats[GFS2_LKS_SRTTVAR],
|
(unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTVAR],
|
||||||
(long long)gl->gl_stats.stats[GFS2_LKS_SRTTB],
|
(unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTB],
|
||||||
(long long)gl->gl_stats.stats[GFS2_LKS_SRTTVARB],
|
(unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTVARB],
|
||||||
(long long)gl->gl_stats.stats[GFS2_LKS_SIRT],
|
(unsigned long long)gl->gl_stats.stats[GFS2_LKS_SIRT],
|
||||||
(long long)gl->gl_stats.stats[GFS2_LKS_SIRTVAR],
|
(unsigned long long)gl->gl_stats.stats[GFS2_LKS_SIRTVAR],
|
||||||
(long long)gl->gl_stats.stats[GFS2_LKS_DCOUNT],
|
(unsigned long long)gl->gl_stats.stats[GFS2_LKS_DCOUNT],
|
||||||
(long long)gl->gl_stats.stats[GFS2_LKS_QCOUNT]);
|
(unsigned long long)gl->gl_stats.stats[GFS2_LKS_QCOUNT]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1727,7 +1727,7 @@ static int gfs2_sbstats_seq_show(struct seq_file *seq, void *iter_ptr)
|
|||||||
loff_t pos = *(loff_t *)iter_ptr;
|
loff_t pos = *(loff_t *)iter_ptr;
|
||||||
unsigned index = pos >> 3;
|
unsigned index = pos >> 3;
|
||||||
unsigned subindex = pos & 0x07;
|
unsigned subindex = pos & 0x07;
|
||||||
s64 value;
|
u64 value;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (index == 0 && subindex != 0)
|
if (index == 0 && subindex != 0)
|
||||||
@ -1743,7 +1743,7 @@ static int gfs2_sbstats_seq_show(struct seq_file *seq, void *iter_ptr)
|
|||||||
} else {
|
} else {
|
||||||
value = lkstats->lkstats[index - 1].stats[subindex];
|
value = lkstats->lkstats[index - 1].stats[subindex];
|
||||||
}
|
}
|
||||||
seq_printf(seq, " %15lld", (long long)value);
|
seq_printf(seq, " %15llu", (long long)value);
|
||||||
}
|
}
|
||||||
seq_putc(seq, '\n');
|
seq_putc(seq, '\n');
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -244,7 +244,7 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct gfs2_lkstats {
|
struct gfs2_lkstats {
|
||||||
s64 stats[GFS2_NR_LKSTATS];
|
u64 stats[GFS2_NR_LKSTATS];
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -1862,11 +1862,11 @@ static bool gfs2_rgrp_congested(const struct gfs2_rgrpd *rgd, int loops)
|
|||||||
const struct gfs2_glock *gl = rgd->rd_gl;
|
const struct gfs2_glock *gl = rgd->rd_gl;
|
||||||
const struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
|
const struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
|
||||||
struct gfs2_lkstats *st;
|
struct gfs2_lkstats *st;
|
||||||
s64 r_dcount, l_dcount;
|
u64 r_dcount, l_dcount;
|
||||||
s64 l_srttb, a_srttb = 0;
|
u64 l_srttb, a_srttb = 0;
|
||||||
s64 srttb_diff;
|
s64 srttb_diff;
|
||||||
s64 sqr_diff;
|
u64 sqr_diff;
|
||||||
s64 var;
|
u64 var;
|
||||||
int cpu, nonzero = 0;
|
int cpu, nonzero = 0;
|
||||||
|
|
||||||
preempt_disable();
|
preempt_disable();
|
||||||
|
@ -267,14 +267,14 @@ TRACE_EVENT(gfs2_glock_lock_time,
|
|||||||
__field( int, status )
|
__field( int, status )
|
||||||
__field( char, flags )
|
__field( char, flags )
|
||||||
__field( s64, tdiff )
|
__field( s64, tdiff )
|
||||||
__field( s64, srtt )
|
__field( u64, srtt )
|
||||||
__field( s64, srttvar )
|
__field( u64, srttvar )
|
||||||
__field( s64, srttb )
|
__field( u64, srttb )
|
||||||
__field( s64, srttvarb )
|
__field( u64, srttvarb )
|
||||||
__field( s64, sirt )
|
__field( u64, sirt )
|
||||||
__field( s64, sirtvar )
|
__field( u64, sirtvar )
|
||||||
__field( s64, dcount )
|
__field( u64, dcount )
|
||||||
__field( s64, qcount )
|
__field( u64, qcount )
|
||||||
),
|
),
|
||||||
|
|
||||||
TP_fast_assign(
|
TP_fast_assign(
|
||||||
|
Loading…
Reference in New Issue
Block a user