From: Dave Chinner <david@fromorbit.com>
To: Ming Lin <mlin@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>, Jens Axboe <axboe@fb.com>,
lkml <linux-kernel@vger.kernel.org>,
linux-fsdevel@vger.kernel.org, ming.l@ssi.samsung.com
Subject: Re: [PATCH 3/6] direct-io: add support for write stream IDs
Date: Sat, 11 Apr 2015 21:59:22 +1000 [thread overview]
Message-ID: <20150411115922.GO13731@dastard> (raw)
In-Reply-To: <CAF1ivSb_TwuYY9RJcfkJxRmSFeaCVuzXuksS4uEsd4ahPLDPEA@mail.gmail.com>
On Fri, Apr 10, 2015 at 04:50:05PM -0700, Ming Lin wrote:
> On Wed, Mar 25, 2015 at 7:26 AM, Jens Axboe <axboe@kernel.dk> wrote:
> > On 03/24/2015 08:43 PM, Dave Chinner wrote:
> >>
> >> On Tue, Mar 24, 2015 at 09:27:00AM -0600, Jens Axboe wrote:
> >>>
> >>> Get the streamid from the file, if any, and set it on the bio.
> >>>
> >>> Signed-off-by: Jens Axboe <axboe@fb.com>
> >>> ---
> >>> fs/direct-io.c | 4 ++++
> >>> 1 file changed, 4 insertions(+)
> >>>
> >>> diff --git a/fs/direct-io.c b/fs/direct-io.c
> >>> index e181b6b2e297..5d2750346451 100644
> >>> --- a/fs/direct-io.c
> >>> +++ b/fs/direct-io.c
> >>> @@ -77,6 +77,7 @@ struct dio_submit {
> >>> int reap_counter; /* rate limit reaping */
> >>> sector_t final_block_in_request;/* doesn't change */
> >>> int boundary; /* prev block is at a boundary */
> >>> + int streamid; /* Write stream ID */
> >>> get_block_t *get_block; /* block mapping function */
> >>> dio_submit_t *submit_io; /* IO submition function */
> >>>
> >>> @@ -372,6 +373,8 @@ dio_bio_alloc(struct dio *dio, struct dio_submit
> >>> *sdio,
> >>>
> >>> sdio->bio = bio;
> >>> sdio->logical_offset_in_bio = sdio->cur_page_fs_offset;
> >>> +
> >>> + bio_set_streamid(bio, sdio->streamid);
> >>> }
> >>>
> >>> /*
> >>> @@ -1205,6 +1208,7 @@ do_blockdev_direct_IO(int rw, struct kiocb *iocb,
> >>> struct inode *inode,
> >>> sdio.blkbits = blkbits;
> >>> sdio.blkfactor = i_blkbits - blkbits;
> >>> sdio.block_in_file = offset >> blkbits;
> >>> + sdio.streamid = iocb->ki_filp->f_streamid;
> >>
> >>
> >> If iocb->ki_filp->f_streamid is not set, then it should fall back to
> >> whatever is set on the inode->i_streamid.
>
> Why should do the fall back?
Because then you have a method of using streams with applications
that aren't aware of streams.
Or perhaps you have a file you know has different access patterns to
the rest of the files in a directory, and you don't want to have to
set the stream on every process that opens and uses that file. e.g.
database writeahead log files (sequential write, never read) vs
database index/table files (random read/write).....
> > Good point, agree. Will make that change.
>
> That change causes problem for direct IO, for example
>
> process 1:
> fd = open("/dev/nvme0n1", O_DIRECT...);
> //set stream_id 1
> fadvise(fd, 1, 0, POSIX_FADV_STREAMID);
> pwrite(fd, ....);
>
> process 2:
> fd = open("/dev/nvme0n1", O_DIRECT...);
> //should be legacy stream_id 0
> pwrite(fd, ....);
>
> But now process 2 also see stream_id 1, which is wrong.
It's not wrong, your behaviour model is just different You have
defined a process/fd based stream model and not considered
considered that admins and applications might want to use a file
based stream model instead, so applications don't need to even be
aware that write streams are in use...
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
next prev parent reply other threads:[~2015-04-11 11:59 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-24 15:26 [PATCH RFC] Support for write stream IDs Jens Axboe
2015-03-24 15:26 ` [PATCH 1/6] block: add support for carrying a stream ID in a bio Jens Axboe
2015-03-24 17:11 ` Matias Bjørling
2015-03-24 17:26 ` Jens Axboe
2015-03-24 22:07 ` Ming Lin-SSI
2015-03-25 1:42 ` Jens Axboe
2015-03-25 8:11 ` Matias Bjørling
2015-03-25 18:36 ` Ming Lin-SSI
2015-03-25 2:30 ` Dave Chinner
2015-04-12 10:42 ` Dmitry Monakhov
2015-03-24 15:26 ` [PATCH 2/6] Add support for per-file stream ID Jens Axboe
2015-03-24 15:27 ` [PATCH 3/6] direct-io: add support for write stream IDs Jens Axboe
2015-03-25 2:43 ` Dave Chinner
2015-03-25 14:26 ` Jens Axboe
2015-04-10 23:50 ` Ming Lin
2015-04-11 0:06 ` Ming Lin
2015-04-11 11:59 ` Dave Chinner [this message]
2015-04-17 6:20 ` Ming Lin
2015-04-17 23:06 ` Dave Chinner
2015-04-17 23:11 ` Jens Axboe
2015-04-17 23:51 ` Dave Chinner
2015-04-18 2:00 ` Jens Axboe
2015-04-17 15:17 ` Jens Axboe
2015-03-24 15:27 ` [PATCH 4/6] Add stream ID support for buffered writeback Jens Axboe
2015-03-25 2:40 ` Dave Chinner
2015-03-25 14:17 ` Jens Axboe
2015-03-24 15:27 ` [PATCH 5/6] btrfs: add support for buffered writeback stream ID Jens Axboe
2015-03-24 15:27 ` [PATCH 6/6] xfs: " Jens Axboe
2015-03-25 2:41 ` Dave Chinner
2015-03-24 17:03 ` [PATCH RFC] Support for write stream IDs Jeff Moyer
2015-03-24 17:08 ` Jens Axboe
2015-03-24 21:46 ` Ming Lin-SSI
2015-03-24 21:48 ` Jens Axboe
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=20150411115922.GO13731@dastard \
--to=david@fromorbit.com \
--cc=axboe@fb.com \
--cc=axboe@kernel.dk \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ming.l@ssi.samsung.com \
--cc=mlin@kernel.org \
/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 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).