Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 596084 Details for
Bug 837414
kernel panic doing direct IOs > 1 MiB on drivers with max segments > 256 (BIO_MAX_PAGES)
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
upstream git commit 20d9600cb407b0b55fef6ee814b60345c6f58264
20d9600cb407b0b55fef6ee814b60345c6f58264.patch (text/plain), 2.20 KB, created by
Greg Edwards
on 2012-07-03 19:48:23 UTC
(
hide
)
Description:
upstream git commit 20d9600cb407b0b55fef6ee814b60345c6f58264
Filename:
MIME Type:
Creator:
Greg Edwards
Created:
2012-07-03 19:48:23 UTC
Size:
2.20 KB
patch
obsolete
>From: David Dillow <dillowda@ornl.gov> >Date: Thu, 20 Jan 2011 22:44:22 +0000 (-0800) >Subject: fs/direct-io.c: don't try to allocate more than BIO_MAX_PAGES in a bio >X-Git-Tag: v2.6.38-rc2~19^2~11 >X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git;a=commitdiff_plain;h=20d9600cb407b0b55fef6ee814b60345c6f58264 > >fs/direct-io.c: don't try to allocate more than BIO_MAX_PAGES in a bio > >When using devices that support max_segments > BIO_MAX_PAGES (256), direct >IO tries to allocate a bio with more pages than allowed, which leads to an >oops in dio_bio_alloc(). Clamp the request to the supported maximum, and >change dio_bio_alloc() to reflect that bio_alloc() will always return a >bio when called with __GFP_WAIT and a valid number of vectors. > >[akpm@linux-foundation.org: remove redundant BUG_ON()] >Signed-off-by: David Dillow <dillowda@ornl.gov> >Reviewed-by: Jeff Moyer <jmoyer@redhat.com> >Cc: <stable@kernel.org> >Signed-off-by: Andrew Morton <akpm@linux-foundation.org> >Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> >--- > >diff --git a/fs/direct-io.c b/fs/direct-io.c >index 85882f6..b044705 100644 >--- a/fs/direct-io.c >+++ b/fs/direct-io.c >@@ -325,12 +325,16 @@ void dio_end_io(struct bio *bio, int error) > } > EXPORT_SYMBOL_GPL(dio_end_io); > >-static int >+static void > dio_bio_alloc(struct dio *dio, struct block_device *bdev, > sector_t first_sector, int nr_vecs) > { > struct bio *bio; > >+ /* >+ * bio_alloc() is guaranteed to return a bio when called with >+ * __GFP_WAIT and we request a valid number of vectors. >+ */ > bio = bio_alloc(GFP_KERNEL, nr_vecs); > > bio->bi_bdev = bdev; >@@ -342,7 +346,6 @@ dio_bio_alloc(struct dio *dio, struct block_device *bdev, > > dio->bio = bio; > dio->logical_offset_in_bio = dio->cur_page_fs_offset; >- return 0; > } > > /* >@@ -583,8 +586,9 @@ static int dio_new_bio(struct dio *dio, sector_t start_sector) > goto out; > sector = start_sector << (dio->blkbits - 9); > nr_pages = min(dio->pages_in_io, bio_get_nr_vecs(dio->map_bh.b_bdev)); >+ nr_pages = min(nr_pages, BIO_MAX_PAGES); > BUG_ON(nr_pages <= 0); >- ret = dio_bio_alloc(dio, dio->map_bh.b_bdev, sector, nr_pages); >+ dio_bio_alloc(dio, dio->map_bh.b_bdev, sector, nr_pages); > dio->boundary = 0; > out: > return ret;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 837414
: 596084