Message ID | 1477728600-12938-20-git-send-email-tom.leiming@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
I think we'll just need a version zero_fill_bio with a length argument and let that handle all the bvec access. I have vague memories that Kent posted one a while ago, Ccing him. On Sat, Oct 29, 2016 at 04:08:18PM +0800, Ming Lei wrote: > Signed-off-by: Ming Lei <tom.leiming@gmail.com> > --- > fs/buffer.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/fs/buffer.c b/fs/buffer.c > index b205a629001d..81c3793948b4 100644 > --- a/fs/buffer.c > +++ b/fs/buffer.c > @@ -3018,8 +3018,13 @@ static void end_bio_bh_io_sync(struct bio *bio) > void guard_bio_eod(int op, struct bio *bio) > { > sector_t maxsector; > - struct bio_vec *bvec = &bio->bi_io_vec[bio->bi_vcnt - 1]; > unsigned truncated_bytes; > + /* > + * It is safe to truncate the last bvec in the following way > + * even though multipage bvec is supported, but we need to > + * fix the parameters passed to zero_user(). > + */ > + struct bio_vec *bvec = &bio->bi_io_vec[bio->bi_vcnt - 1]; > > maxsector = i_size_read(bio->bi_bdev->bd_inode) >> 9; > if (!maxsector) > -- > 2.7.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-block" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ---end quoted text--- -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Oct 31, 2016 at 11:35 PM, Christoph Hellwig <hch@infradead.org> wrote: > > I think we'll just need a version zero_fill_bio with a length argument > and let that handle all the bvec access. I have vague memories that > Kent posted one a while ago, Ccing him. I will try to find zero_fill_bio() in Kent's tree later. BTW, patch 59 switches to use bvec iterator to do that too. > > On Sat, Oct 29, 2016 at 04:08:18PM +0800, Ming Lei wrote: >> Signed-off-by: Ming Lei <tom.leiming@gmail.com> >> --- >> fs/buffer.c | 7 ++++++- >> 1 file changed, 6 insertions(+), 1 deletion(-) >> >> diff --git a/fs/buffer.c b/fs/buffer.c >> index b205a629001d..81c3793948b4 100644 >> --- a/fs/buffer.c >> +++ b/fs/buffer.c >> @@ -3018,8 +3018,13 @@ static void end_bio_bh_io_sync(struct bio *bio) >> void guard_bio_eod(int op, struct bio *bio) >> { >> sector_t maxsector; >> - struct bio_vec *bvec = &bio->bi_io_vec[bio->bi_vcnt - 1]; >> unsigned truncated_bytes; >> + /* >> + * It is safe to truncate the last bvec in the following way >> + * even though multipage bvec is supported, but we need to >> + * fix the parameters passed to zero_user(). >> + */ >> + struct bio_vec *bvec = &bio->bi_io_vec[bio->bi_vcnt - 1]; >> >> maxsector = i_size_read(bio->bi_bdev->bd_inode) >> 9; >> if (!maxsector) >> -- >> 2.7.4 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-block" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > ---end quoted text--- thanks, Ming Lei -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/buffer.c b/fs/buffer.c index b205a629001d..81c3793948b4 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -3018,8 +3018,13 @@ static void end_bio_bh_io_sync(struct bio *bio) void guard_bio_eod(int op, struct bio *bio) { sector_t maxsector; - struct bio_vec *bvec = &bio->bi_io_vec[bio->bi_vcnt - 1]; unsigned truncated_bytes; + /* + * It is safe to truncate the last bvec in the following way + * even though multipage bvec is supported, but we need to + * fix the parameters passed to zero_user(). + */ + struct bio_vec *bvec = &bio->bi_io_vec[bio->bi_vcnt - 1]; maxsector = i_size_read(bio->bi_bdev->bd_inode) >> 9; if (!maxsector)
Signed-off-by: Ming Lei <tom.leiming@gmail.com> --- fs/buffer.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)