From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Price Date: Thu, 23 Jan 2020 15:55:49 +0000 Subject: [Cluster-devel] [PATCH 10/13] restoremeta: Convert iseof function to a flag In-Reply-To: <20200123155552.1080247-1-anprice@redhat.com> References: <20200123155552.1080247-1-anprice@redhat.com> Message-ID: <20200123155552.1080247-11-anprice@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit EOF is flagged up on short reads so it can be detected in the ->read() operation. Signed-off-by: Andrew Price --- gfs2/edit/savemeta.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c index 99b88e42..2cfa2f44 100644 --- a/gfs2/edit/savemeta.c +++ b/gfs2/edit/savemeta.c @@ -54,8 +54,8 @@ struct metafd { gzFile gzfd; const char *filename; int gziplevel; + int eof; int (*read)(struct metafd *mfd, void *buf, unsigned len); - int (*iseof)(struct metafd *mfd); void (*close)(struct metafd *mfd); const char* (*strerr)(struct metafd *mfd); }; @@ -72,12 +72,10 @@ static const char *gz_strerr(struct metafd *mfd) static int gz_read(struct metafd *mfd, void *buf, unsigned len) { - return gzread(mfd->gzfd, buf, len); -} - -static int gz_iseof(struct metafd *mfd) -{ - return gzeof(mfd->gzfd); + int ret = gzread(mfd->gzfd, buf, len); + if (ret < len && gzeof(mfd->gzfd)) + mfd->eof = 1; + return ret; } static void gz_close(struct metafd *mfd) @@ -1023,7 +1021,7 @@ static int restore_block(struct metafd *mfd, struct saved_metablock *svb, char * return 0; read_err: - if (mfd->iseof(mfd)) + if (mfd->eof) return 1; errstr = mfd->strerr(mfd); @@ -1144,7 +1142,6 @@ static int restore_init(const char *path, struct metafd *mfd, struct savemeta_he return 1; } mfd->read = gz_read; - mfd->iseof = gz_iseof; mfd->close = gz_close; mfd->strerr = gz_strerr; mfd->gzfd = gzdopen(mfd->fd, "rb"); -- 2.24.1