block: prevent possible io_context->refcount overflow
authorNikanth Karthikesan <knikanth@novell.com>
Wed, 10 Jun 2009 19:57:06 +0000 (12:57 -0700)
committerJens Axboe <jens.axboe@oracle.com>
Wed, 10 Jun 2009 21:07:15 +0000 (23:07 +0200)
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 <knikanth@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

No differences found