[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20090401214415W.fujita.tomonori@lab.ntt.co.jp>
Date: Wed, 1 Apr 2009 21:44:09 +0900
From: FUJITA Tomonori <fujita.tomonori@....ntt.co.jp>
To: tj@...nel.org
Cc: axboe@...nel.dk, bharrosh@...asas.com,
linux-kernel@...r.kernel.org, tj@...el.org
Subject: Re: [PATCH 8/8] blk-map: reimplement blk_rq_map_user() using
blk_rq_map_user_iov()
On Wed, 1 Apr 2009 20:04:44 +0900
Tejun Heo <tj@...nel.org> wrote:
> Impact: subtle bugs fixed, cleanup
>
> blk_rq_map_user() supported multi-bio mapping by calling
> bio_map/copy_user() multiple times and linking the resulting bios into
> rq; however, this had subtle bugs.
>
> * Because each call to bio_map/copy_user() is independent, segment
> limit check was done only per each bio, so it was possible to create
> requests which are larger than the driver and hardware limits, which
> could lead to disastrous outcome.
What do you mean? blk_rq_append_bio properly checks the segment and
limit, I think.
> * Layers under FS may call blk_rq_map*() functions during request
> processing. Under severe memory pressure and with enough bad luck,
> this can lead to deadlock. As fs bvec pool is quite small, the
> possibility isn't completely theoretical.
>
> This patch reimplement blk_rq_map_user() in terms of
> blk_rq_map_user_iov() which doesn't support multi-bio mappping and
> drop multi bio handling from blk_rq_unmap_user(). Note that with the
> previous patch to remove bio max size limit and to add null mapping
> support to blk_rq_map_user_iov(), this change doesn't remove any
> functionality.
I don't think that we can drop multi bio handling from
blk_rq_unmap_user(). It may make some users angry. Mike Christie added
it because it was necessary.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists