On Tue 21-04-15 13:05:30, Jens Axboe wrote:
On 04/21/2015 12:34 PM, Ming Lin wrote:Technically, you could have a radix tree in an inode that would store
On Tue, Apr 21, 2015 at 10:12 AM, Jens Axboe <axboe@xxxxxx> wrote:
On 04/21/2015 11:09 AM, Ming Lin wrote:
Hi Jens,
This RFC DRAFT patch is on top of your "[PATCH v2] Support for write
stream IDs"
I throw it out early to get comments if it's the way to go.
Quote LWN(https://urldefense.proofpoint.com/v1/url?u=http://lwn.net/Articles/638722%29:&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=3JMVyziIyZtZ5cv9eWNLwQ%3D%3D%0A&m=eufWIgHAAF0gB7U%2FEOk2iHyObFrgcrM5NnNLDnRvmMc%3D%0A&s=5f6fea75e6421dfb626f57041781e733cb276872d2f9465187cc05bbcc3d7b0f
"There would be clear value in a closer association between stream IDs
and specific buffered-write operations. Getting there would require
storing
the stream ID with each dirtied page, though; that, in turn, almost
certainly
implies shoehorning the stream ID into the associated page structure.
That would not be an easy task; it is not surprising that it is not a part
of
this patch set. Should the lack of per-buffered-write stream IDs prove to
be
a serious constraint in the future, somebody will certainly be motivated
to
try to find a place to store another eight bits in struct page."
This draft patch stores stream_id in buffer head instead of page.
This is pointless. You need to store it in the page, if the whole point is
that you want this to be trackable. And adding it to struct page would be a
no-go, we can't increase the size of that. See various other discussions
around, for instance, IO priorities for buffered writeback and tracking that
state on the side.
I googled, but didn't find related discussions.
Could you please point me a link?
This is the most recent effort:
https://urldefense.proofpoint.com/v1/url?u=https://lwn.net/Articles/628631/&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=3JMVyziIyZtZ5cv9eWNLwQ%3D%3D%0A&m=eufWIgHAAF0gB7U%2FEOk2iHyObFrgcrM5NnNLDnRvmMc%3D%0A&s=34699d56963c665d00d15e88c0f146122c693f9979a7fe7be7751f91a6372452
My point is that adding it to the buffer_head accomplishes nothing.
You need to track from when the page was dirtied.
stream id (or other info you need to track) for each dirty page. I'm not
convinced it's worth the complexity and the overhead but it would be doable
and it won't bloat struct page...