From: Brian Foster <bfoster@redhat.com>
To: Goldwyn Rodrigues <rgoldwyn@suse.de>
Cc: linux-xfs@vger.kernel.org, darrick.wong@oracle.com,
david@fromorbit.com, Goldwyn Rodrigues <rgoldwyn@suse.com>
Subject: Re: [PATCH v2 3/3] xfs_io: Allow partial writes
Date: Mon, 9 Oct 2017 11:02:58 -0400 [thread overview]
Message-ID: <20171009150258.GC19322@bfoster.bfoster> (raw)
In-Reply-To: <20170929130035.24760-3-rgoldwyn@suse.de>
On Fri, Sep 29, 2017 at 08:00:35AM -0500, Goldwyn Rodrigues wrote:
> From: Goldwyn Rodrigues <rgoldwyn@suse.com>
>
> Partial writes are performed when there is an error midway
> while performing the I/O. Perform the write exactly once and
> return the number of bytes written so far, until the error.
>
> Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
> ---
Reviewed-by: Brian Foster <bfoster@redhat.com>
> io/io.h | 1 +
> io/pwrite.c | 25 ++++++++++++++++++++++++-
> man/man8/xfs_io.8 | 3 +++
> 3 files changed, 28 insertions(+), 1 deletion(-)
>
> diff --git a/io/io.h b/io/io.h
> index 6a0fe657..3862985f 100644
> --- a/io/io.h
> +++ b/io/io.h
> @@ -25,6 +25,7 @@
> #define IO_RANDOM ( 0)
> #define IO_FORWARD ( 1)
> #define IO_BACKWARD (-1)
> +#define IO_ONCE ( 2)
>
> /*
> * File descriptor options
> diff --git a/io/pwrite.c b/io/pwrite.c
> index 2b85a528..dcf130d6 100644
> --- a/io/pwrite.c
> +++ b/io/pwrite.c
> @@ -47,6 +47,7 @@ pwrite_help(void)
> " -W -- call fsync(2) at the end (included in timing results)\n"
> " -B -- write backwards through the range from offset (backwards N bytes)\n"
> " -F -- write forwards through the range of bytes from offset (default)\n"
> +" -O -- perform pwrite call once and return (maybe partial) bytes written\n"
> " -R -- write at random offsets in the specified range of bytes\n"
> " -Z N -- zeed the random number generator (used when writing randomly)\n"
> " (heh, zorry, the -s/-S arguments were already in use in pwrite)\n"
> @@ -258,6 +259,22 @@ write_buffer(
> return ops;
> }
>
> +static int
> +write_once(
> + off64_t offset,
> + long long count,
> + long long *total,
> + int pwritev2_flags)
> +{
> + size_t bytes;
> + bytes = do_pwrite(file->fd, offset, count, count, pwritev2_flags);
> + if (bytes < 0)
> + return -1;
> + *total = bytes;
> + return 1;
> +}
> +
> +
> static int
> pwrite_f(
> int argc,
> @@ -279,7 +296,7 @@ pwrite_f(
> init_cvtnum(&fsblocksize, &fssectsize);
> bsize = fsblocksize;
>
> - while ((c = getopt(argc, argv, "b:BCdf:Fi:NqRs:S:uV:wWZ:")) != EOF) {
> + while ((c = getopt(argc, argv, "b:BCdf:Fi:NqRs:OS:uV:wWZ:")) != EOF) {
> switch (c) {
> case 'b':
> tmp = cvtnum(fsblocksize, fssectsize, optarg);
> @@ -301,6 +318,9 @@ pwrite_f(
> case 'R':
> direction = IO_RANDOM;
> break;
> + case 'O':
> + direction = IO_ONCE;
> + break;
> case 'd':
> dflag = 1;
> break;
> @@ -392,6 +412,9 @@ pwrite_f(
> case IO_BACKWARD:
> c = write_backward(offset, &count, &total, pwritev2_flags);
> break;
> + case IO_ONCE:
> + c = write_once(offset, count, &total, pwritev2_flags);
> + break;
> default:
> total = 0;
> ASSERT(0);
> diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8
> index 9c58914f..b7c0f099 100644
> --- a/man/man8/xfs_io.8
> +++ b/man/man8/xfs_io.8
> @@ -263,6 +263,9 @@ write the buffers in a reserve sequential direction.
> .B \-R
> write the buffers in the give range in a random order.
> .TP
> +.B \-O
> +perform pwrite once and return the (maybe partial) bytes written.
> +.TP
> .B \-Z seed
> specify the random number seed used for random write
> .TP
> --
> 2.14.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-10-09 15:03 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-29 13:00 [PATCH v2 1/3] xfs_io: Add support for pwritev2() Goldwyn Rodrigues
2017-09-29 13:00 ` [PATCH v2 2/3] xfs_io: Add RWF_NOWAIT to pwritev2() Goldwyn Rodrigues
2017-10-09 15:02 ` Brian Foster
2017-10-09 17:19 ` Darrick J. Wong
2017-10-09 21:11 ` Goldwyn Rodrigues
2017-10-09 22:37 ` Dave Chinner
2017-10-09 22:51 ` Goldwyn Rodrigues
2017-09-29 13:00 ` [PATCH v2 3/3] xfs_io: Allow partial writes Goldwyn Rodrigues
2017-10-09 15:02 ` Brian Foster [this message]
2017-10-09 17:15 ` Darrick J. Wong
2017-10-09 11:14 ` [PATCH v2 1/3] xfs_io: Add support for pwritev2() Goldwyn Rodrigues
2017-10-09 15:02 ` Brian Foster
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=20171009150258.GC19322@bfoster.bfoster \
--to=bfoster@redhat.com \
--cc=darrick.wong@oracle.com \
--cc=david@fromorbit.com \
--cc=linux-xfs@vger.kernel.org \
--cc=rgoldwyn@suse.com \
--cc=rgoldwyn@suse.de \
/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.