From: Petr Vorel <pvorel@suse.cz>
To: Konstantin Khorenko <khorenko@virtuozzo.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH 1/2] scsi_debug/tlibio/lio_write_buffer: Always return total amount of written bytes
Date: Wed, 17 May 2023 02:23:02 +0200 [thread overview]
Message-ID: <20230517002302.GA9395@pevik> (raw)
In-Reply-To: <20230516165929.1343864-1-khorenko@virtuozzo.com>
Hi Konstantin,
> Sometimes we got failures like:
> growfiles(gf217): 65884 growfiles.c/2262: 104203 tlibio.c/744 write(3, buf, 5000) returned=2288
> growfiles(gf217): 65884 growfiles.c/1765: 104203 Hit max errors value of 1
> gf217 1 TFAIL : growfiles.c:134: Test failed
I wonder on which circumstances do you get this error. Running on container?
> Which looked strange as partial write is something usual and valid.
> It turned out that lio_write_buffer() has the code cycle writes in case
> of a partial write happens, but it anyway returns the amount of bytes
> written by the LAST write.
> And upper growfile() consider the returned amount from
> lio_write_buffer() to be less than it tried to write and fails the
> testcase.
> Fix lio_write_buffer() to always return total bytes written, even in
> case partial writes.
> Signed-off-by: Konstantin Khorenko <khorenko@virtuozzo.com>
> ---
> lib/tlibio.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
> diff --git a/lib/tlibio.c b/lib/tlibio.c
> index cc110d1c9..8298e2de9 100644
> --- a/lib/tlibio.c
> +++ b/lib/tlibio.c
> @@ -539,6 +539,8 @@ int lio_write_buffer(int fd, /* open file descriptor */
> long wrd) /* to allow future features, use zero for now */
> {
> int ret = 0; /* syscall return or used to get random method */
> + int totally_written = 0;/* as we cycle writes in case of partial writes, */
> + /* we have to report up total bytes written */
Nit: I'd do multiline comment (much more readable):
/* as we cycle writes in case of partial writes,
* we have to report up total bytes written */
int totally_written = 0;
Otherwise LGTM.
Reviewed-by: Petr Vorel <pvorel@suse.cz>
> char *io_type; /* Holds string of type of io */
> int omethod = method;
> int listio_cmd; /* Holds the listio/lio_listio cmd */
> @@ -745,13 +747,14 @@ int lio_write_buffer(int fd, /* open file descriptor */
> fd, size, ret);
> size -= ret;
> buffer += ret;
> + totally_written += ret;
> } else {
> if (Debug_level > 1)
> printf
> ("DEBUG %s/%d: write completed without error (ret %d)\n",
> __FILE__, __LINE__, ret);
BTW growfiles.c and other files based on tlibio.c would deserve big cleanup and
rewrite into new API.
Kind regards,
Petr
> - return ret;
> + return totally_written + ret;
> }
> }
> wait4sync_io(fd, 0);
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2023-05-16 22:43 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-16 16:59 [LTP] [PATCH 1/2] scsi_debug/tlibio/lio_write_buffer: Always return total amount of written bytes Konstantin Khorenko via ltp
2023-05-16 16:59 ` [LTP] [PATCH 2/2] scsi_debug/tlibio/lio_read_buffer: Always return total amount of read bytes Konstantin Khorenko via ltp
2023-05-17 0:24 ` Petr Vorel
2023-05-17 0:23 ` Petr Vorel [this message]
2023-05-18 7:46 ` [LTP] [PATCH 1/2] scsi_debug/tlibio/lio_write_buffer: Always return total amount of written bytes Konstantin Khorenko via ltp
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230517002302.GA9395@pevik \
--to=pvorel@suse.cz \
--cc=khorenko@virtuozzo.com \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.