<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/include/linux/iocontext.h, branch linux-2.6.32.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.32.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.32.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-10-07T21:37:22Z</updated>
<entry>
<title>block: Fix io_context leak after failure of clone with CLONE_IO</title>
<updated>2012-10-07T21:37:22Z</updated>
<author>
<name>Louis Rilling</name>
</author>
<published>2009-12-04T13:52:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6ace7773b07bb1949a54aad85e5c2f21b6c299d6'/>
<id>urn:sha1:6ace7773b07bb1949a54aad85e5c2f21b6c299d6</id>
<content type='text'>
commit b69f2292063d2caf37ca9aec7d63ded203701bf3 upstream

With CLONE_IO, parent's io_context-&gt;nr_tasks is incremented, but never
decremented whenever copy_process() fails afterwards, which prevents
exit_io_context() from calling IO schedulers exit functions.

Give a task_struct to exit_io_context(), and call exit_io_context() instead of
put_io_context() in copy_process() cleanup path.

Signed-off-by: Louis Rilling &lt;louis.rilling@kerlabs.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
Signed-off-by: Willy Tarreau &lt;w@1wt.eu&gt;
</content>
</entry>
<entry>
<title>cfq: calculate the seek_mean per cfq_queue not per cfq_io_context</title>
<updated>2011-11-07T20:32:38Z</updated>
<author>
<name>Jeff Moyer</name>
</author>
<published>2011-09-29T09:56:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4a78a06ce2ecea224c55eb2e171ea020110ecaa9'/>
<id>urn:sha1:4a78a06ce2ecea224c55eb2e171ea020110ecaa9</id>
<content type='text'>
commit b2c18e1e08a5a9663094d57bb4be2f02226ee61c upstream.

async cfq_queue's are already shared between processes within the same
priority, and forthcoming patches will change the mapping of cic to sync
cfq_queue from 1:1 to 1:N.  So, calculate the seekiness of a process
based on the cfq_queue instead of the cfq_io_context.

Signed-off-by: Jeff Moyer &lt;jmoyer@redhat.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
Signed-off-by: Suresh Jayaraman &lt;sjayaraman@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>io context: fix ref counting</title>
<updated>2009-07-31T06:55:48Z</updated>
<author>
<name>Li Zefan</name>
</author>
<published>2009-07-31T06:55:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cbb4f2646d77b536ed2b1500ef6641083228ed8f'/>
<id>urn:sha1:cbb4f2646d77b536ed2b1500ef6641083228ed8f</id>
<content type='text'>
Commit d9c7d394a8ebacb60097b192939ae9f15235225e
("block: prevent possible io_context-&gt;refcount overflow") mistakenly
changed atomic_inc(&amp;ioc-&gt;nr_tasks) to atomic_long_inc(&amp;ioc-&gt;refcount).

Signed-off-by: Li Zefan &lt;lizf@cn.fujitsu.com&gt;
Acked-by: Nikanth Karthikesan &lt;knikanth@suse.de&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>block: prevent possible io_context-&gt;refcount overflow</title>
<updated>2009-06-10T21:07:15Z</updated>
<author>
<name>Nikanth Karthikesan</name>
</author>
<published>2009-06-10T19:57:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d9c7d394a8ebacb60097b192939ae9f15235225e'/>
<id>urn:sha1:d9c7d394a8ebacb60097b192939ae9f15235225e</id>
<content type='text'>
Currently io_context has an atomic_t(32-bit) as refcount.  In the case of
cfq, for each device against whcih a task does I/O, a reference to the
io_context would be taken.  And when there are multiple process sharing
io_contexts(CLONE_IO) would also have a reference to the same io_context.

Theoretically the possible maximum number of processes sharing the same
io_context + the number of disks/cfq_data referring to the same io_context
can overflow the 32-bit counter on a very high-end machine.

Even though it is an improbable case, let us make it atomic_long_t.

Signed-off-by: Nikanth Karthikesan &lt;knikanth@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>block: blkdev.h cleanup, move iocontext stuff to iocontext.h</title>
<updated>2008-07-03T11:21:14Z</updated>
<author>
<name>Jens Axboe</name>
</author>
<published>2008-06-30T18:42:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=da9cbc87395308a21465bd25441297bbba0477e1'/>
<id>urn:sha1:da9cbc87395308a21465bd25441297bbba0477e1</id>
<content type='text'>
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>io context: increment task attachment count in ioc_task_link()</title>
<updated>2008-04-15T07:25:33Z</updated>
<author>
<name>Jens Axboe</name>
</author>
<published>2008-04-15T07:25:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d237e5c7ce82b6c7e1aa50348520a0c5a47274fa'/>
<id>urn:sha1:d237e5c7ce82b6c7e1aa50348520a0c5a47274fa</id>
<content type='text'>
Thanks to Nikanth Karthikesan &lt;knikanth@suse.de&gt; for reporting this.

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>cfq-iosched: fix rcu freeing of cfq io contexts</title>
<updated>2008-04-02T13:42:20Z</updated>
<author>
<name>Fabio Checconi</name>
</author>
<published>2008-04-02T12:31:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=34e6bbf23c8f43e8713d9bd092680f1660494b4a'/>
<id>urn:sha1:34e6bbf23c8f43e8713d9bd092680f1660494b4a</id>
<content type='text'>
SLAB_DESTROY_BY_RCU is not a direct substitute for normal call_rcu()
freeing, since it'll page freeing but NOT object freeing. So change
cfq to do the freeing on its own.

Signed-off-by: Fabio Checconi &lt;fabio@gandalf.sssup.it&gt;
Acked-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>cfq-iosched: add hlist for browsing parallel to the radix tree</title>
<updated>2008-02-19T09:04:00Z</updated>
<author>
<name>Jens Axboe</name>
</author>
<published>2008-02-19T09:02:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ffc4e7595734cf768fa60cea8a4d545dfef8231a'/>
<id>urn:sha1:ffc4e7595734cf768fa60cea8a4d545dfef8231a</id>
<content type='text'>
It's cumbersome to browse a radix tree from start to finish, especially
since we modify keys when a process exits. So add a hlist for the single
purpose of browsing over all known cfq_io_contexts, used for exit,
io prio change, etc.

This fixes http://bugzilla.kernel.org/show_bug.cgi?id=9948

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>block: cfq: make the io contect sharing lockless</title>
<updated>2008-01-28T09:50:33Z</updated>
<author>
<name>Jens Axboe</name>
</author>
<published>2008-01-24T07:44:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4ac845a2e9a816ed5a7b301f56dcc0a3d0b1ba4d'/>
<id>urn:sha1:4ac845a2e9a816ed5a7b301f56dcc0a3d0b1ba4d</id>
<content type='text'>
The io context sharing introduced a per-ioc spinlock, that would protect
the cfq io context lookup. That is a regression from the original, since
we never needed any locking there because the ioc/cic were process private.

The cic lookup is changed from an rbtree construct to a radix tree, which
we can then use RCU to make the reader side lockless. That is the performance
critical path, modifying the radix tree is only done on process creation
(when that process first does IO, actually) and on process exit (if that
process has done IO).

As it so happens, radix trees are also much faster for this type of
lookup where the key is a pointer. It's a very sparse tree.

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>io context sharing: preliminary support</title>
<updated>2008-01-28T09:50:31Z</updated>
<author>
<name>Jens Axboe</name>
</author>
<published>2008-01-24T07:53:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d38ecf935fcb10264a6bc190855d9595165e6eeb'/>
<id>urn:sha1:d38ecf935fcb10264a6bc190855d9595165e6eeb</id>
<content type='text'>
Detach task state from ioc, instead keep track of how many processes
are accessing the ioc.

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
</feed>
