From 1e97cce9f5a87a67293a05ec4533ed6968698b2e Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Tue, 5 Dec 2006 11:44:16 +0100 Subject: [PATCH] [PATCH] Fix warnings from icc icc spewed a bunch of warnings on building fio, but it did actually build and work. Some of them are real bugs, most are just "helpful" warnings. icc doesn't like pointer arithmetic, however these are not fixed up. It works as-is, just ignore those class of warnings. Signed-off-by: Jens Axboe --- Makefile | 5 +++-- engines/fio-engine-sg.c | 12 ++++++------ eta.c | 12 ++++++------ filesetup.c | 2 +- fio.c | 4 ++-- fio.h | 25 +++++++++++++------------ gettime.c | 6 ++++-- init.c | 9 ++++----- io_u.c | 6 +++--- log.c | 6 +++--- memory.c | 3 +-- parse.c | 2 +- stat.c | 15 +++++++++------ time.c | 4 ++-- verify.c | 2 +- 15 files changed, 59 insertions(+), 54 deletions(-) diff --git a/Makefile b/Makefile index 71b33c88..832ed6db 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ -CC = gcc -CFLAGS = -W -Wwrite-strings -Wall -O2 -g -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +#CC = /opt/intel/cce/9.1.045/bin/icc +CC = gcc -W +CFLAGS = -Wwrite-strings -Wall -O2 -g -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 PROGS = fio SCRIPTS = fio_generate_plots OBJS = gettime.o fio.o ioengines.o init.o stat.o log.o time.o md5.o crc32.o \ diff --git a/engines/fio-engine-sg.c b/engines/fio-engine-sg.c index 9c5037f5..e0748892 100644 --- a/engines/fio-engine-sg.c +++ b/engines/fio-engine-sg.c @@ -185,12 +185,12 @@ static int fio_sgio_prep(struct thread_data *td, struct io_u *io_u) if (hdr->dxfer_direction != SG_DXFER_NONE) { nr_blocks = io_u->buflen / sd->bs; lba = io_u->offset / sd->bs; - hdr->cmdp[2] = (lba >> 24) & 0xff; - hdr->cmdp[3] = (lba >> 16) & 0xff; - hdr->cmdp[4] = (lba >> 8) & 0xff; - hdr->cmdp[5] = lba & 0xff; - hdr->cmdp[7] = (nr_blocks >> 8) & 0xff; - hdr->cmdp[8] = nr_blocks & 0xff; + hdr->cmdp[2] = (unsigned char) ((lba >> 24) & 0xff); + hdr->cmdp[3] = (unsigned char) ((lba >> 16) & 0xff); + hdr->cmdp[4] = (unsigned char) ((lba >> 8) & 0xff); + hdr->cmdp[5] = (unsigned char) (lba & 0xff); + hdr->cmdp[7] = (unsigned char) ((nr_blocks >> 8) & 0xff); + hdr->cmdp[8] = (unsigned char) (nr_blocks & 0xff); } return 0; diff --git a/eta.c b/eta.c index 99e59ec5..5ea42940 100644 --- a/eta.c +++ b/eta.c @@ -84,15 +84,15 @@ static void eta_to_str(char *str, int eta_sec) if (d || always_d) { always_d = 1; - str += sprintf(str, "%02dd:", d); + str += sprintf(str, "%02ud:", d); } if (h || always_h) { always_h = 1; - str += sprintf(str, "%02dh:", h); + str += sprintf(str, "%02uh:", h); } - str += sprintf(str, "%02dm:", m); - str += sprintf(str, "%02ds", s); + str += sprintf(str, "%02um:", m); + str += sprintf(str, "%02us", s); } /* @@ -101,7 +101,7 @@ static void eta_to_str(char *str, int eta_sec) static int thread_eta(struct thread_data *td, unsigned long elapsed) { unsigned long long bytes_total, bytes_done; - unsigned int eta_sec = 0; + unsigned long eta_sec = 0; bytes_total = td->total_io_size; @@ -127,7 +127,7 @@ static int thread_eta(struct thread_data *td, unsigned long elapsed) if (perc > 1.0) perc = 1.0; - eta_sec = (elapsed * (1.0 / perc)) - elapsed; + eta_sec = (unsigned long) (elapsed * (1.0 / perc)) - elapsed; if (td->timeout && eta_sec > (td->timeout - elapsed)) eta_sec = td->timeout - elapsed; diff --git a/filesetup.c b/filesetup.c index 21854a97..2e8821c5 100644 --- a/filesetup.c +++ b/filesetup.c @@ -117,7 +117,7 @@ static int create_files(struct thread_data *td) } temp_stall_ts = 1; - fprintf(f_out, "%s: Laying out IO file(s) (%d x %LuMiB == %LuMiB)\n", + fprintf(f_out, "%s: Laying out IO file(s) (%u x %LuMiB == %LuMiB)\n", td->name, td->nr_uniq_files, (td->total_file_size >> 20) / td->nr_uniq_files, td->total_file_size >> 20); diff --git a/fio.c b/fio.c index a4efe385..3ffe1e17 100644 --- a/fio.c +++ b/fio.c @@ -105,7 +105,7 @@ static int check_min_rate(struct thread_data *td, struct timeval *now) rate = (td->this_io_bytes[ddir] - td->rate_bytes) / spent; if (rate < td->ratemin) { - fprintf(f_out, "%s: min rate %d not met, got %ldKiB/sec\n", td->name, td->ratemin, rate); + fprintf(f_out, "%s: min rate %u not met, got %luKiB/sec\n", td->name, td->ratemin, rate); return 1; } } @@ -242,7 +242,7 @@ static int fio_io_sync(struct thread_data *td, struct fio_file *f) * The main verify engine. Runs over the writes we previusly submitted, * reads the blocks back in, and checks the crc/md5 of the data. */ -void do_verify(struct thread_data *td) +static void do_verify(struct thread_data *td) { struct io_u *io_u, *v_io_u = NULL; struct io_completion_data icd; diff --git a/fio.h b/fio.h index 791b005e..16d5523f 100644 --- a/fio.h +++ b/fio.h @@ -18,6 +18,12 @@ #include "arch.h" #include "os.h" +enum fio_ddir { + DDIR_READ = 0, + DDIR_WRITE, + DDIR_SYNC, +}; + struct io_stat { unsigned long val; unsigned long val_sq; @@ -29,7 +35,7 @@ struct io_stat { struct io_sample { unsigned long time; unsigned long val; - unsigned int ddir; + enum fio_ddir ddir; }; struct io_log { @@ -43,7 +49,7 @@ struct io_piece { struct fio_file *file; unsigned long long offset; unsigned int len; - int ddir; + enum fio_ddir ddir; }; /* @@ -71,7 +77,7 @@ struct io_u { unsigned int resid; unsigned int error; - unsigned char ddir; + enum fio_ddir ddir; /* * io engine private data @@ -111,12 +117,6 @@ struct group_run_stats { unsigned long long agg[2]; }; -enum fio_ddir { - DDIR_READ = 0, - DDIR_WRITE, - DDIR_SYNC, -}; - /* * What type of allocation to use for io buffers */ @@ -358,6 +358,7 @@ extern int terse_output; extern FILE *f_out; extern FILE *f_err; extern int temp_stall_ts; +extern unsigned long long mlock_size; extern struct thread_data *threads; @@ -437,9 +438,9 @@ extern void write_iolog_close(struct thread_data *); /* * Logging */ -extern void add_clat_sample(struct thread_data *, int, unsigned long); -extern void add_slat_sample(struct thread_data *, int, unsigned long); -extern void add_bw_sample(struct thread_data *, int, struct timeval *); +extern void add_clat_sample(struct thread_data *, enum fio_ddir, unsigned long); +extern void add_slat_sample(struct thread_data *, enum fio_ddir, unsigned long); +extern void add_bw_sample(struct thread_data *, enum fio_ddir, struct timeval *); extern void show_run_stats(void); extern void init_disk_util(struct thread_data *); extern void update_rusage_stat(struct thread_data *); diff --git a/gettime.c b/gettime.c index c691113e..161240ee 100644 --- a/gettime.c +++ b/gettime.c @@ -101,15 +101,17 @@ static void fio_init gtod_init(void) #endif /* FIO_DEBUG_TIME */ +#ifdef FIO_DEBUG_TIME void fio_gettime(struct timeval *tp, void *caller) +#else +void fio_gettime(struct timeval *tp, void fio_unused *caller) +#endif { #ifdef FIO_DEBUG_TIME if (!caller) caller = __builtin_return_address(0); gtod_log_caller(caller); -#else - caller = NULL; #endif repeat: if (!clock_gettime_works) diff --git a/init.c b/init.c index 36c1839b..346c465a 100644 --- a/init.c +++ b/init.c @@ -582,7 +582,6 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num) if (td->filetype == FIO_TYPE_FILE || td->filename) { char tmp[PATH_MAX]; int len = 0; - int i; if (td->directory && td->directory[0] != '\0') sprintf(tmp, "%s/", td->directory); @@ -652,7 +651,7 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num) c3 = to_kmg(td->min_bs[DDIR_WRITE]); c4 = to_kmg(td->max_bs[DDIR_WRITE]); - fprintf(f_out, "%s: (g=%d): rw=%s, odir=%d, bs=%s-%s/%s-%s, rate=%d, ioengine=%s, iodepth=%d\n", td->name, td->groupid, ddir_str[ddir], td->odirect, c1, c2, c3, c4, td->rate, td->io_ops->name, td->iodepth); + fprintf(f_out, "%s: (g=%d): rw=%s, odir=%u, bs=%s-%s/%s-%s, rate=%u, ioengine=%s, iodepth=%u\n", td->name, td->groupid, ddir_str[ddir], td->odirect, c1, c2, c3, c4, td->rate, td->io_ops->name, td->iodepth); free(c1); free(c2); @@ -787,12 +786,12 @@ static int str_rw_cb(void *data, const char *mem) td->sequential = 0; return 0; } else if (!strncmp(mem, "rw", 2)) { - td->ddir = 0; + td->ddir = DDIR_READ; td->iomix = 1; td->sequential = 1; return 0; } else if (!strncmp(mem, "randrw", 6)) { - td->ddir = 0; + td->ddir = DDIR_READ; td->iomix = 1; td->sequential = 0; return 0; @@ -894,7 +893,7 @@ static int str_cpumask_cb(void *data, unsigned int *val) /* * This is our [ini] type file parser. */ -int parse_jobs_ini(char *file, int stonewall_flag) +static int parse_jobs_ini(char *file, int stonewall_flag) { unsigned int global; struct thread_data *td; diff --git a/io_u.c b/io_u.c index 8ec9dd9e..558b0b07 100644 --- a/io_u.c +++ b/io_u.c @@ -123,7 +123,7 @@ static unsigned int get_next_buflen(struct thread_data *td, int ddir) buflen = td->min_bs[ddir]; else { r = os_random_long(&td->bsrange_state); - buflen = (1 + (double) (td->max_bs[ddir] - 1) * r / (RAND_MAX + 1.0)); + buflen = (unsigned int) (1 + (double) (td->max_bs[ddir] - 1) * r / (RAND_MAX + 1.0)); if (!td->bs_unaligned) buflen = (buflen + td->min_bs[ddir] - 1) & ~(td->min_bs[ddir] - 1); } @@ -147,7 +147,7 @@ static unsigned int get_next_buflen(struct thread_data *td, int ddir) * mixed read/write workload, check the rwmix cycle and switch if * necessary. */ -static int get_rw_ddir(struct thread_data *td) +static enum fio_ddir get_rw_ddir(struct thread_data *td) { if (td_rw(td)) { struct timeval now; @@ -314,7 +314,7 @@ void io_completed(struct thread_data *td, struct io_u *io_u, if (!io_u->error) { unsigned int bytes = io_u->buflen - io_u->resid; - const int idx = io_u->ddir; + const enum fio_ddir idx = io_u->ddir; td->io_blocks[idx]++; td->io_bytes[idx] += bytes; diff --git a/log.c b/log.c index a112a31a..f61215ea 100644 --- a/log.c +++ b/log.c @@ -5,7 +5,7 @@ void write_iolog_put(struct thread_data *td, struct io_u *io_u) { - fprintf(td->iolog_f, "%d,%llu,%u\n", io_u->ddir, io_u->offset, io_u->buflen); + fprintf(td->iolog_f, "%u,%llu,%u\n", io_u->ddir, io_u->offset, io_u->buflen); } int read_iolog_get(struct thread_data *td, struct io_u *io_u) @@ -125,7 +125,7 @@ static int init_iolog_read(struct thread_data *td) INIT_LIST_HEAD(&ipo->list); ipo->offset = offset; ipo->len = bytes; - ipo->ddir = rw; + ipo->ddir = (enum fio_ddir) rw; if (bytes > td->max_bs[rw]) td->max_bs[rw] = bytes; list_add_tail(&ipo->list, &td->io_log_list); @@ -180,7 +180,7 @@ int init_iolog(struct thread_data *td) else if (td->write_iolog_file) ret = init_iolog_write(td); - return 0; + return ret; } int setup_rate(struct thread_data *td) diff --git a/memory.c b/memory.c index d8924a85..39dc250c 100644 --- a/memory.c +++ b/memory.c @@ -8,7 +8,6 @@ #include "fio.h" #include "os.h" -extern unsigned long long mlock_size; static void *pinned_mem; void fio_unpin_memory(void) @@ -102,7 +101,7 @@ void free_io_mem(struct thread_data *td) } else if (td->mem_type == MEM_MMAP) munmap(td->orig_buffer, td->orig_buffer_size); else - log_err("Bad memory type %d\n", td->mem_type); + log_err("Bad memory type %u\n", td->mem_type); td->orig_buffer = NULL; } diff --git a/parse.c b/parse.c index 8cd427a9..50d8ae5e 100644 --- a/parse.c +++ b/parse.c @@ -276,7 +276,7 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, break; } default: - fprintf(stderr, "Bad option type %d\n", o->type); + fprintf(stderr, "Bad option type %u\n", o->type); ret = 1; } diff --git a/stat.c b/stat.c index 731b3036..b4facc7e 100644 --- a/stat.c +++ b/stat.c @@ -372,7 +372,7 @@ static void show_thread_status(struct thread_data *td, runtime = mtime_since(&td->epoch, &td->end_time); if (runtime) { - double runt = runtime; + double runt = (double) runtime; usr_cpu = (double) td->usr_time * 100 / runt; sys_cpu = (double) td->sys_time * 100 / runt; @@ -429,7 +429,7 @@ static void show_thread_status_terse(struct thread_data *td, show_ddir_status_terse(td, rs, 1); if (td->runtime[0] + td->runtime[1]) { - double runt = td->runtime[0] + td->runtime[1]; + double runt = (double) (td->runtime[0] + td->runtime[1]); usr_cpu = (double) td->usr_time * 100 / runt; sys_cpu = (double) td->sys_time * 100 / runt; @@ -542,7 +542,7 @@ static inline void add_stat_sample(struct io_stat *is, unsigned long val) } static void add_log_sample(struct thread_data *td, struct io_log *iolog, - unsigned long val, int ddir) + unsigned long val, enum fio_ddir ddir) { if (iolog->nr_samples == iolog->max_samples) { int new_size = sizeof(struct io_sample) * iolog->max_samples*2; @@ -557,7 +557,8 @@ static void add_log_sample(struct thread_data *td, struct io_log *iolog, iolog->nr_samples++; } -void add_clat_sample(struct thread_data *td, int ddir, unsigned long msec) +void add_clat_sample(struct thread_data *td, enum fio_ddir ddir, + unsigned long msec) { add_stat_sample(&td->clat_stat[ddir], msec); @@ -565,7 +566,8 @@ void add_clat_sample(struct thread_data *td, int ddir, unsigned long msec) add_log_sample(td, td->clat_log, msec, ddir); } -void add_slat_sample(struct thread_data *td, int ddir, unsigned long msec) +void add_slat_sample(struct thread_data *td, enum fio_ddir ddir, + unsigned long msec) { add_stat_sample(&td->slat_stat[ddir], msec); @@ -573,7 +575,8 @@ void add_slat_sample(struct thread_data *td, int ddir, unsigned long msec) add_log_sample(td, td->slat_log, msec, ddir); } -void add_bw_sample(struct thread_data *td, int ddir, struct timeval *t) +void add_bw_sample(struct thread_data *td, enum fio_ddir ddir, + struct timeval *t) { unsigned long spent = mtime_since(&td->stat_sample_time[ddir], t); unsigned long rate; diff --git a/time.c b/time.c index 6c9eb0a8..d0ecbe5c 100644 --- a/time.c +++ b/time.c @@ -7,7 +7,7 @@ static struct timeval genesis; unsigned long utime_since(struct timeval *s, struct timeval *e) { - double sec, usec; + long sec, usec; sec = e->tv_sec - s->tv_sec; usec = e->tv_usec - s->tv_usec; @@ -31,7 +31,7 @@ unsigned long utime_since_now(struct timeval *s) unsigned long mtime_since(struct timeval *s, struct timeval *e) { - double sec, usec; + long sec, usec; sec = e->tv_sec - s->tv_sec; usec = e->tv_usec - s->tv_usec; diff --git a/verify.c b/verify.c index 43520bd3..692eb5ba 100644 --- a/verify.c +++ b/verify.c @@ -91,7 +91,7 @@ static int verify_io_u(struct io_u *io_u) else if (hdr->verify_type == VERIFY_CRC32) ret = verify_io_u_crc32(hdr, io_u); else { - log_err("Bad verify type %d\n", hdr->verify_type); + log_err("Bad verify type %u\n", hdr->verify_type); ret = 1; } -- 2.25.1