From: Dave Chinner <david@fromorbit.com> To: Milosz Tanski <milosz@adfin.com> Cc: linux-kernel@vger.kernel.org, Christoph Hellwig <hch@infradead.org>, linux-fsdevel@vger.kernel.org, linux-aio@kvack.org, Mel Gorman <mgorman@suse.de>, Volker Lendecke <Volker.Lendecke@sernet.de>, Tejun Heo <tj@kernel.org>, Jeff Moyer <jmoyer@redhat.com>, Theodore Ts'o <tytso@mit.edu>, Al Viro <viro@zeniv.linux.org.uk>, linux-api@vger.kernel.org, Michael Kerrisk <mtk.manpages@gmail.com>, linux-arch@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org> Subject: Re: [PATCH] fstests: generic test for preadv2 behavior on linux Date: Tue, 17 Mar 2015 09:02:53 +1100 [thread overview] Message-ID: <20150316220253.GF28557@dastard> (raw) In-Reply-To: <1426530862-32276-1-git-send-email-milosz@adfin.com> On Mon, Mar 16, 2015 at 02:34:22PM -0400, Milosz Tanski wrote: > preadv2 is a new syscall introduced that is like preadv2 but with flag > argument. The first use case of this is to let us add a flag to perform a > non-blocking file using the page cache. > --- > src/Makefile | 2 +- > src/preadv2-pwritev2.h | 52 +++++++++++++++++ > src/preadv2.c | 150 +++++++++++++++++++++++++++++++++++++++++++++++++ You should add this syscall to support to xfs_io (in the xfsprogs package) rather than write a new helper for it. Mainly because: > +void > +usage(char *prog) > +{ > + fprintf(stderr, "Usage: %s [-v] [-ctdw] [-n] -p POS -l LEN <filename>\n\n", prog); > + fprintf(stderr, "General arguments:\n"); > + fprintf(stderr, " -v Verify that the syscall is supported and quit:\n"); > + fprintf(stderr, "\n"); > + fprintf(stderr, "Open arguments:\n"); > + fprintf(stderr, " -c Open file with O_CREAT flag\n"); > + fprintf(stderr, " -t Open file with O_TRUNC flag\n"); > + fprintf(stderr, " -d Open file with O_DIRECT flag\n"); > + fprintf(stderr, " -w Open file with O_RDWR flag vs O_RDONLY (default)\n"); > + fprintf(stderr, "\n"); > + fprintf(stderr, "preadv2 arguments:\n"); > + fprintf(stderr, " -n use RWF_NONBLOCK when performing read\n"); > + fprintf(stderr, " -p POS offset file to read at\n"); > + fprintf(stderr, " -l LEN length of file data to read\n"); The xfs_io pread command already supports all of these functions except for the RWF_NONBLOCK flag, and anyone testing bleeding edge functionality is also using a bleeding edge xfs_io binary. Then you test for whether the functionality is available via _require_xfs_io_command "preadv -n" ..... > +# test file we'll be using > +file=$SCRATCH_MNT/067.preadv2.$$ > + > +# Create a file: > +# two regions of data and a hole in the middle > +# use O_DIRECT so it's not in the page cache > +echo "create file" > +$XFS_IO_PROG -t -f -d \ > + -c "pwrite 0 1024" \ > + -c "pwrite 2048 1024" \ > + $file > /dev/null This does not create holes on most filesystems. You'll need to leave holes of up 64k so that 64k block size filesystem end up with single block holes in them. > +# Make sure it returns EAGAIN on uncached data > +echo "uncached" > +$here/src/preadv2 -n -p 0 -l 1024 $file $XFS_IO_PROG -c "pread -n 0 1024" $file | _filter_xfs_io > + > +# Make sure we read in the whole file, after that RWF_NONBLOCK should return us all the data > +echo "cached" > +$XFS_IO_PROG -f $file -c "pread 0 4096" $file > /dev/null > +$here/src/preadv2 -n -p 0 -l 1024 $file $XFS_IO_PROG -c "pread 0 4096" -c "pread -n 0 1024" $file | _filter_xfs_io > + > +# O_DIRECT and RWF_NONBLOCK should return EAGAIN always > +echo "O_DIRECT" > +$here/src/preadv2 -d -n -p 0 -l 1024 $file $XFS_IO_PROG -d -c "pread -n 0 1024" $file | _filter_xfs_io And so on.... Cheers, Dave. -- Dave Chinner david@fromorbit.com -- To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to majordomo@kvack.org. For more info on Linux AIO, see: http://www.kvack.org/aio/ Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>
WARNING: multiple messages have this Message-ID (diff)
From: Dave Chinner <david@fromorbit.com> To: Milosz Tanski <milosz@adfin.com> Cc: linux-kernel@vger.kernel.org, Christoph Hellwig <hch@infradead.org>, linux-fsdevel@vger.kernel.org, linux-aio@kvack.org, Mel Gorman <mgorman@suse.de>, Volker Lendecke <Volker.Lendecke@sernet.de>, Tejun Heo <tj@kernel.org>, Jeff Moyer <jmoyer@redhat.com>, Theodore Ts'o <tytso@mit.edu>, Al Viro <viro@zeniv.linux.org.uk>, linux-api@vger.kernel.org, Michael Kerrisk <mtk.manpages@gmail.com>, linux-arch@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org> Subject: Re: [PATCH] fstests: generic test for preadv2 behavior on linux Date: Tue, 17 Mar 2015 09:02:53 +1100 [thread overview] Message-ID: <20150316220253.GF28557@dastard> (raw) Message-ID: <20150316220253.1S1g7o6vFnREYZzF3zpknGBcpF2oSyUOOonsiROsCjw@z> (raw) In-Reply-To: <1426530862-32276-1-git-send-email-milosz@adfin.com> On Mon, Mar 16, 2015 at 02:34:22PM -0400, Milosz Tanski wrote: > preadv2 is a new syscall introduced that is like preadv2 but with flag > argument. The first use case of this is to let us add a flag to perform a > non-blocking file using the page cache. > --- > src/Makefile | 2 +- > src/preadv2-pwritev2.h | 52 +++++++++++++++++ > src/preadv2.c | 150 +++++++++++++++++++++++++++++++++++++++++++++++++ You should add this syscall to support to xfs_io (in the xfsprogs package) rather than write a new helper for it. Mainly because: > +void > +usage(char *prog) > +{ > + fprintf(stderr, "Usage: %s [-v] [-ctdw] [-n] -p POS -l LEN <filename>\n\n", prog); > + fprintf(stderr, "General arguments:\n"); > + fprintf(stderr, " -v Verify that the syscall is supported and quit:\n"); > + fprintf(stderr, "\n"); > + fprintf(stderr, "Open arguments:\n"); > + fprintf(stderr, " -c Open file with O_CREAT flag\n"); > + fprintf(stderr, " -t Open file with O_TRUNC flag\n"); > + fprintf(stderr, " -d Open file with O_DIRECT flag\n"); > + fprintf(stderr, " -w Open file with O_RDWR flag vs O_RDONLY (default)\n"); > + fprintf(stderr, "\n"); > + fprintf(stderr, "preadv2 arguments:\n"); > + fprintf(stderr, " -n use RWF_NONBLOCK when performing read\n"); > + fprintf(stderr, " -p POS offset file to read at\n"); > + fprintf(stderr, " -l LEN length of file data to read\n"); The xfs_io pread command already supports all of these functions except for the RWF_NONBLOCK flag, and anyone testing bleeding edge functionality is also using a bleeding edge xfs_io binary. Then you test for whether the functionality is available via _require_xfs_io_command "preadv -n" ..... > +# test file we'll be using > +file=$SCRATCH_MNT/067.preadv2.$$ > + > +# Create a file: > +# two regions of data and a hole in the middle > +# use O_DIRECT so it's not in the page cache > +echo "create file" > +$XFS_IO_PROG -t -f -d \ > + -c "pwrite 0 1024" \ > + -c "pwrite 2048 1024" \ > + $file > /dev/null This does not create holes on most filesystems. You'll need to leave holes of up 64k so that 64k block size filesystem end up with single block holes in them. > +# Make sure it returns EAGAIN on uncached data > +echo "uncached" > +$here/src/preadv2 -n -p 0 -l 1024 $file $XFS_IO_PROG -c "pread -n 0 1024" $file | _filter_xfs_io > + > +# Make sure we read in the whole file, after that RWF_NONBLOCK should return us all the data > +echo "cached" > +$XFS_IO_PROG -f $file -c "pread 0 4096" $file > /dev/null > +$here/src/preadv2 -n -p 0 -l 1024 $file $XFS_IO_PROG -c "pread 0 4096" -c "pread -n 0 1024" $file | _filter_xfs_io > + > +# O_DIRECT and RWF_NONBLOCK should return EAGAIN always > +echo "O_DIRECT" > +$here/src/preadv2 -d -n -p 0 -l 1024 $file $XFS_IO_PROG -d -c "pread -n 0 1024" $file | _filter_xfs_io And so on.... Cheers, Dave. -- Dave Chinner david@fromorbit.com
next prev parent reply other threads:[~2015-03-16 22:02 UTC|newest] Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-03-16 18:27 [PATCH v7 0/5] vfs: Non-blockling buffered fs read (page cache only) Milosz Tanski 2015-03-16 18:27 ` [PATCH v7 1/5] vfs: Prepare for adding a new preadv/pwritev with user flags Milosz Tanski 2015-03-16 18:27 ` Milosz Tanski 2015-03-16 21:05 ` Andreas Dilger 2015-03-16 21:05 ` Andreas Dilger 2015-03-16 18:27 ` [PATCH v7 2/5] vfs: Define new syscalls preadv2,pwritev2 Milosz Tanski 2015-03-16 18:27 ` Milosz Tanski 2015-03-16 18:27 ` [PATCH v7 3/5] x86: wire up preadv2 and pwritev2 Milosz Tanski 2015-03-16 18:27 ` Milosz Tanski 2015-03-16 18:27 ` [PATCH v7 4/5] vfs: RWF_NONBLOCK flag for preadv2 Milosz Tanski 2015-03-16 18:27 ` Milosz Tanski 2015-03-16 18:27 ` [PATCH v7 5/5] xfs: add RWF_NONBLOCK support Milosz Tanski 2015-03-16 18:27 ` Milosz Tanski 2015-03-16 22:04 ` Dave Chinner 2015-03-16 22:04 ` Dave Chinner 2015-03-16 18:32 ` [PATCH] Add preadv2/pwritev2 documentation Milosz Tanski 2015-03-16 18:32 ` Milosz Tanski 2015-03-27 16:49 ` Andrew Morton 2015-03-27 16:49 ` Andrew Morton [not found] ` <20150327094932.31b5c9fc.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> 2015-03-30 7:33 ` Christoph Hellwig 2015-03-30 7:33 ` Christoph Hellwig 2015-03-26 11:55 ` [PATCH v7 0/5] vfs: Non-blockling buffered fs read (page cache only) Christoph Hellwig 2015-03-26 11:55 ` Christoph Hellwig 2015-03-26 19:12 ` Milosz Tanski 2015-03-26 19:12 ` Milosz Tanski 2015-03-27 2:26 ` Milosz Tanski 2015-03-27 2:29 ` Milosz Tanski 2015-03-27 2:29 ` Milosz Tanski [not found] ` <cover.1426528417.git.milosz-B5zB6C1i6pkAvxtiuMwx3w@public.gmane.org> 2015-03-16 18:34 ` [PATCH] fstests: generic test for preadv2 behavior on linux Milosz Tanski 2015-03-16 18:34 ` Milosz Tanski 2015-03-16 21:07 ` Andreas Dilger 2015-03-16 21:07 ` Andreas Dilger 2015-03-16 22:03 ` Milosz Tanski 2015-03-16 22:02 ` Dave Chinner [this message] 2015-03-16 22:02 ` Dave Chinner 2015-03-16 22:11 ` Milosz Tanski 2015-03-16 22:11 ` Milosz Tanski [not found] ` <CANP1eJEj2buvwaU-jum=GROowY6DrysQ0NU+weXstn=83yVspQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2015-03-16 22:56 ` Dave Chinner 2015-03-16 22:56 ` Dave Chinner 2015-03-27 3:28 ` [PATCH v7 0/5] vfs: Non-blockling buffered fs read (page cache only) Andrew Morton 2015-03-27 3:28 ` Andrew Morton 2015-03-27 5:41 ` Volker Lendecke 2015-03-27 5:41 ` Volker Lendecke [not found] ` <E1YbN1J-0084qO-3s-dqLtpHMqGvUyWpdLl23E4A@public.gmane.org> 2015-03-27 6:08 ` Andrew Morton 2015-03-27 6:08 ` Andrew Morton [not found] ` <20150326230833.4ccfaebb.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> 2015-03-27 8:02 ` Volker Lendecke 2015-03-27 8:02 ` Volker Lendecke 2015-03-27 8:12 ` Christoph Hellwig 2015-03-27 8:12 ` Christoph Hellwig 2015-03-27 8:18 ` Christoph Hellwig 2015-03-27 8:18 ` Christoph Hellwig [not found] ` <20150327081822.GA28669-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 2015-03-27 8:35 ` Andrew Morton 2015-03-27 8:35 ` Andrew Morton 2015-03-27 8:48 ` Christoph Hellwig 2015-03-27 8:48 ` Christoph Hellwig [not found] ` <20150327084833.GA7689-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 2015-03-27 9:01 ` Andrew Morton 2015-03-27 9:01 ` Andrew Morton 2015-03-27 9:44 ` Volker Lendecke 2015-03-27 9:44 ` Volker Lendecke 2015-03-27 15:58 ` Jeremy Allison 2015-03-27 15:58 ` Jeremy Allison 2015-03-27 16:30 ` Andrew Morton 2015-03-27 16:30 ` Andrew Morton 2015-03-27 16:39 ` Jeremy Allison 2015-03-27 16:39 ` Jeremy Allison 2015-03-27 16:39 ` Andrew Morton 2015-03-27 16:39 ` Andrew Morton 2015-03-27 16:45 ` Milosz Tanski 2015-03-27 16:45 ` Milosz Tanski 2015-03-31 1:27 ` Milosz Tanski 2015-03-27 16:38 ` Milosz Tanski 2015-03-27 16:38 ` Milosz Tanski 2015-03-30 7:36 ` Christoph Hellwig 2015-03-30 7:36 ` Christoph Hellwig [not found] ` <20150330073604.GB22229-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 2015-03-30 17:19 ` Jeremy Allison 2015-03-30 17:19 ` Jeremy Allison 2015-03-30 22:51 ` Milosz Tanski 2015-03-30 20:26 ` Andrew Morton 2015-03-30 20:26 ` Andrew Morton 2015-03-30 20:32 ` Jeremy Allison 2015-03-30 20:37 ` Andrew Morton 2015-03-30 20:49 ` Jeremy Allison 2015-03-30 20:49 ` Jeremy Allison 2015-03-30 21:33 ` Andrew Morton 2015-03-30 22:35 ` Milosz Tanski 2015-03-30 22:35 ` Milosz Tanski 2015-03-30 22:49 ` Milosz Tanski 2015-03-30 22:57 ` Andrew Morton [not found] ` <20150330155700.92f4c8a0bf13418aaf01ae04-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> 2015-03-30 23:06 ` Milosz Tanski 2015-03-30 23:06 ` Milosz Tanski 2015-03-30 23:25 ` Milosz Tanski 2015-03-30 23:25 ` Milosz Tanski 2015-04-04 3:42 ` Andrew Morton 2015-04-04 3:42 ` Andrew Morton [not found] ` <20150403204209.75405f37.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> 2015-04-06 3:53 ` Milosz Tanski 2015-04-06 3:53 ` Milosz Tanski 2015-03-30 23:09 ` Milosz Tanski 2015-03-30 23:09 ` Milosz Tanski 2015-03-27 15:21 ` Milosz Tanski 2015-03-27 15:21 ` Milosz Tanski 2015-03-27 17:04 ` Andrew Morton 2015-03-27 17:04 ` Andrew Morton 2015-03-30 7:40 ` Christoph Hellwig 2015-03-30 7:40 ` Christoph Hellwig 2015-03-30 18:54 ` Andrew Morton 2015-03-30 22:40 ` Milosz Tanski [not found] ` <CANP1eJH4BcZ0vgZ6pZdKOd4orEzfKUqjpKXb3m=WMy0mbK+PFA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2015-03-30 22:50 ` Andrew Morton 2015-03-30 22:50 ` Andrew Morton
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=20150316220253.GF28557@dastard \ --to=david@fromorbit.com \ --cc=Volker.Lendecke@sernet.de \ --cc=akpm@linux-foundation.org \ --cc=hch@infradead.org \ --cc=jmoyer@redhat.com \ --cc=linux-aio@kvack.org \ --cc=linux-api@vger.kernel.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mgorman@suse.de \ --cc=milosz@adfin.com \ --cc=mtk.manpages@gmail.com \ --cc=tj@kernel.org \ --cc=tytso@mit.edu \ --cc=viro@zeniv.linux.org.uk \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).