Thread (71 messages) 71 messages, 7 authors, 2012-08-15

Re: [PATCH v5 11/12] block: Add bio_clone_bioset()

From: Kent Overstreet <hidden>
Date: 2012-08-09 06:59:32
Also in: dm-devel, lkml

On Wed, Aug 08, 2012 at 11:52:51PM -0700, Tejun Heo wrote:
On Wed, Aug 08, 2012 at 07:56:10PM -0700, Kent Overstreet wrote:
quoted
quoted
So, bio_clone() loses its function comment.  Also, does it even make
sense to call bio_clone() from fs_bio_set?
I'll re add the function comment if you want, just for a single line
wrapper I don't know if it's worth the cost - comments get out of date,
and they're more stuff to wade through.
People actually look at docbook generated docs.  I don't know why but
they do.  It's a utility function at block layer.  Please just add the
comment.
Will do then.
quoted
quoted
Let's say it's so, then
what's the difference from using _kmalloc variant?
bio_kmalloc() fails if nr_iovecs > 1024, bio_alloc_bioset() fails if
nr_iovecs > 256

and bio_alloc_bioset() is mempool backed, bio_kmalloc() is not.

AFAICT that's it.
So, the thing is being mempool backed doesn't mean anything if
multiple layers use the pool. 
It's worse than just using kmalloc, because then you've introduced the
possibility of deadlock.
I *suspect* fs_bio_set is supposed to
be used by fs layer - ie. where bios originate.  The reason why I
wondered about bio_clone() is that bio_clone() is almost always used
from stacking drivers and stacking driver tapping into fs reserve is
buggy.  So, I'm wondering whether cloning from fs_bio_set should be
supported at all.
That's actually a really good point.

I just grepped and there's actually only 3 callers - I thought there'd
be more.  That should be easy to fix, at least.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help