mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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
					
				
					 4 changed files with 24 additions and 24 deletions
				
			
		| 
						 | 
				
			
			@ -1680,17 +1680,17 @@ static int gfs2_glstats_seq_show(struct seq_file *seq, void *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,
 | 
			
		||||
		   (unsigned long long)gl->gl_name.ln_number,
 | 
			
		||||
		   (long long)gl->gl_stats.stats[GFS2_LKS_SRTT],
 | 
			
		||||
		   (long long)gl->gl_stats.stats[GFS2_LKS_SRTTVAR],
 | 
			
		||||
		   (long long)gl->gl_stats.stats[GFS2_LKS_SRTTB],
 | 
			
		||||
		   (long long)gl->gl_stats.stats[GFS2_LKS_SRTTVARB],
 | 
			
		||||
		   (long long)gl->gl_stats.stats[GFS2_LKS_SIRT],
 | 
			
		||||
		   (long long)gl->gl_stats.stats[GFS2_LKS_SIRTVAR],
 | 
			
		||||
		   (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_SRTT],
 | 
			
		||||
		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTVAR],
 | 
			
		||||
		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTB],
 | 
			
		||||
		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTVARB],
 | 
			
		||||
		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SIRT],
 | 
			
		||||
		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SIRTVAR],
 | 
			
		||||
		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_DCOUNT],
 | 
			
		||||
		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_QCOUNT]);
 | 
			
		||||
	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;
 | 
			
		||||
	unsigned index = pos >> 3;
 | 
			
		||||
	unsigned subindex = pos & 0x07;
 | 
			
		||||
	s64 value;
 | 
			
		||||
	u64 value;
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	if (index == 0 && subindex != 0)
 | 
			
		||||
| 
						 | 
				
			
			@ -1743,7 +1743,7 @@ static int gfs2_sbstats_seq_show(struct seq_file *seq, void *iter_ptr)
 | 
			
		|||
		} else {
 | 
			
		||||
			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');
 | 
			
		||||
	return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -244,7 +244,7 @@ enum {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
struct gfs2_lkstats {
 | 
			
		||||
	s64 stats[GFS2_NR_LKSTATS];
 | 
			
		||||
	u64 stats[GFS2_NR_LKSTATS];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
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_sbd *sdp = gl->gl_name.ln_sbd;
 | 
			
		||||
	struct gfs2_lkstats *st;
 | 
			
		||||
	s64 r_dcount, l_dcount;
 | 
			
		||||
	s64 l_srttb, a_srttb = 0;
 | 
			
		||||
	u64 r_dcount, l_dcount;
 | 
			
		||||
	u64 l_srttb, a_srttb = 0;
 | 
			
		||||
	s64 srttb_diff;
 | 
			
		||||
	s64 sqr_diff;
 | 
			
		||||
	s64 var;
 | 
			
		||||
	u64 sqr_diff;
 | 
			
		||||
	u64 var;
 | 
			
		||||
	int cpu, nonzero = 0;
 | 
			
		||||
 | 
			
		||||
	preempt_disable();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -267,14 +267,14 @@ TRACE_EVENT(gfs2_glock_lock_time,
 | 
			
		|||
		__field(	int,	status		)
 | 
			
		||||
		__field(	char,	flags		)
 | 
			
		||||
		__field(	s64,	tdiff		)
 | 
			
		||||
		__field(	s64,	srtt		)
 | 
			
		||||
		__field(	s64,	srttvar		)
 | 
			
		||||
		__field(	s64,	srttb		)
 | 
			
		||||
		__field(	s64,	srttvarb	)
 | 
			
		||||
		__field(	s64,	sirt		)
 | 
			
		||||
		__field(	s64,	sirtvar		)
 | 
			
		||||
		__field(	s64,	dcount		)
 | 
			
		||||
		__field(	s64,	qcount		)
 | 
			
		||||
		__field(	u64,	srtt		)
 | 
			
		||||
		__field(	u64,	srttvar		)
 | 
			
		||||
		__field(	u64,	srttb		)
 | 
			
		||||
		__field(	u64,	srttvarb	)
 | 
			
		||||
		__field(	u64,	sirt		)
 | 
			
		||||
		__field(	u64,	sirtvar		)
 | 
			
		||||
		__field(	u64,	dcount		)
 | 
			
		||||
		__field(	u64,	qcount		)
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
	TP_fast_assign(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue