mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 21:51:40 +00:00
70aab281e1
The reference counting of dax_region objects is needlessly complicated,
has lead to confusion [1], and has hidden a bug [2]. Towards cleaning up
that mess introduce alloc_dev_dax_id() to minimize the holding of a
dax_region reference to only what dev_dax_release() needs, the
dax_region->ida.
Part of the reason for the mess was the design to dereference a
dax_region in all cases in free_dev_dax_id() even if the id was
statically assigned by the upper level dax_region driver. Remove the
need to call "is_static(dax_region)" by tracking whether the id is
dynamic directly in the dev_dax instance itself.
With that flag the dax_region pinning and release per dev_dax instance
can move to alloc_dev_dax_id() and free_dev_dax_id() respectively.
A follow-on cleanup address the unnecessary references in the dax_region
setup and drivers.
Fixes:
|
||
---|---|---|
.. | ||
hmem | ||
pmem | ||
bus.c | ||
bus.h | ||
cxl.c | ||
dax-private.h | ||
device.c | ||
Kconfig | ||
kmem.c | ||
Makefile | ||
pmem.c | ||
super.c |