From: oetiker Date: Tue, 13 Nov 2007 02:16:10 +0000 (+0000) Subject: revert the dontneed fadvise patch this is only for 1.3 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=11fe2b67fb56862ac93c4a27b9460ac50d1f52fe;p=rrdtool-all.git revert the dontneed fadvise patch this is only for 1.3 git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.2@1216 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/program/src/rrd_create.c b/program/src/rrd_create.c index 16bde5bc..127666af 100644 --- a/program/src/rrd_create.c +++ b/program/src/rrd_create.c @@ -553,12 +553,10 @@ rrd_create_fn(const char *file_name, rrd_t *rrd) FILE *rrd_file; rrd_value_t *unknown; int unkn_cnt; - - long rrd_head_size; - + if ((rrd_file = fopen(file_name,"wb")) == NULL ) { rrd_set_error("creating '%s': %s",file_name, rrd_strerror(errno)); - rrd_free(rrd); + rrd_free(rrd); return(-1); } @@ -655,8 +653,7 @@ rrd_create_fn(const char *file_name, rrd_t *rrd) rrd->rra_ptr->cur_row = rrd->rra_def[i].row_cnt - 1; fwrite( rrd->rra_ptr, sizeof(rra_ptr_t),1,rrd_file); } - rrd_head_size = ftell(rrd_file); - + /* write the empty data area */ if ((unknown = (rrd_value_t *)malloc(512 * sizeof(rrd_value_t))) == NULL) { rrd_set_error("allocating unknown"); @@ -685,24 +682,6 @@ rrd_create_fn(const char *file_name, rrd_t *rrd) return(-1); } -#ifdef HAVE_POSIX_FADVISE - /* this file is not going to be read again any time - soon, so we drop everything except the header portion from - the buffer cache. for this to work, we have to fdsync the file - first though. This will not be all that fast, but 'good' data - like other rrdfiles headers will stay in cache. Now this only works if creating - a single rrd file is not too large, but I assume this should not be the case - in general. Otherwhise we would have to sync and release while writing all - the unknown data. */ - fflush(rrd_file); - fdatasync(fileno(rrd_file)); - if (0 != posix_fadvise(fileno(rrd_file), rrd_head_size, 0, POSIX_FADV_DONTNEED)) { - rrd_set_error("setting POSIX_FADV_DONTNEED on '%s': %s",file_name, rrd_strerror(errno)); - fclose(rrd_file); - return(-1); - } -#endif - fclose(rrd_file); rrd_free(rrd); return (0);