On 12/16/2013 02:03 PM, Nicholas A. Bellinger wrote:
On Fri, 2013-12-13 at 15:58 -0800, Andy Grover wrote:
Hi Nicholas,
This patchset uses krefs to refcount structures shared across threads.
LIO is full of these because configfs-based configuration actions can
be removing an object, even while that object is being used by a SCSI
command.
Using kref to free the struct on whichever thread drops the last
reference allows us to avoid busy-waiting in configfs removal functions.
Next, this set removes the statically-sized tpg lun and deve arrays in
favor of dynamically adding entries into rbtrees. This reduces memory
consumption and allows more than 255 luns per tpg and initiator mapping.
Except for some rbtree lookups, these changes are entirely in the
configuration paths of Lio. I have tested these as extensively as I can,
and it's ready for wider testing.
Note: patch 22 converts a percpu refcount to a normal kref. I'd argue
the benefit is really in the "refcount" part rather than the "percpu",
so a simpler kref does the job, but we might want to discuss this some
more.
It would be helpful to breakup future patches into different series
based on:
* Bugfixes
* New features
* Minor improvements
Thanks for all the reviews. For the remaining changes, it'll be after
the new year before a v2. I'm still hopeful we can work out the issues
preventing the use of krefs.
I'm somewhat surprised over the resistance to rbtrees. I guess I'll need
to hold off on resubmitting that until I have some performance data on
their effect.
Regards -- Andy
--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html