Commit 70aab28
dax: Introduce alloc_dev_dax_id()
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: 0f3da14 ("device-dax: introduce 'seed' devices")
Link: http://lore.kernel.org/r/20221203095858.612027-1-liuyongqiang13@huawei.com [1]
Link: http://lore.kernel.org/r/3cf0890b-4eb0-e70e-cd9c-2ecc3d496263@hpe.com [2]
Reported-by: Yongqiang Liu <liuyongqiang13@huawei.com>
Reported-by: Paul Cassella <cassella@hpe.com>
Reported-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Link: https://lore.kernel.org/r/168577284563.1672036.13493034988900989554.stgit@dwillia2-xfh.jf.intel.com
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>1 parent 82b4cee commit 70aab28
2 files changed
Lines changed: 37 additions & 23 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
446 | 446 | | |
447 | 447 | | |
448 | 448 | | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
449 | 463 | | |
450 | 464 | | |
451 | 465 | | |
452 | | - | |
453 | 466 | | |
| 467 | + | |
454 | 468 | | |
455 | 469 | | |
456 | 470 | | |
457 | 471 | | |
458 | | - | |
| 472 | + | |
459 | 473 | | |
| 474 | + | |
460 | 475 | | |
| 476 | + | |
461 | 477 | | |
462 | 478 | | |
463 | 479 | | |
| |||
473 | 489 | | |
474 | 490 | | |
475 | 491 | | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
476 | 506 | | |
477 | 507 | | |
478 | 508 | | |
| |||
560 | 590 | | |
561 | 591 | | |
562 | 592 | | |
563 | | - | |
564 | | - | |
565 | | - | |
566 | | - | |
567 | | - | |
568 | | - | |
569 | | - | |
570 | | - | |
571 | | - | |
572 | | - | |
573 | | - | |
574 | | - | |
575 | | - | |
576 | | - | |
577 | 593 | | |
578 | 594 | | |
579 | 595 | | |
| |||
1297 | 1313 | | |
1298 | 1314 | | |
1299 | 1315 | | |
1300 | | - | |
1301 | 1316 | | |
1302 | 1317 | | |
1303 | 1318 | | |
1304 | 1319 | | |
1305 | | - | |
1306 | 1320 | | |
1307 | 1321 | | |
1308 | 1322 | | |
| |||
1326 | 1340 | | |
1327 | 1341 | | |
1328 | 1342 | | |
| 1343 | + | |
1329 | 1344 | | |
1330 | 1345 | | |
1331 | 1346 | | |
| |||
1341 | 1356 | | |
1342 | 1357 | | |
1343 | 1358 | | |
1344 | | - | |
| 1359 | + | |
1345 | 1360 | | |
1346 | 1361 | | |
1347 | | - | |
1348 | 1362 | | |
1349 | 1363 | | |
1350 | | - | |
1351 | 1364 | | |
1352 | 1365 | | |
1353 | 1366 | | |
| |||
1388 | 1401 | | |
1389 | 1402 | | |
1390 | 1403 | | |
1391 | | - | |
1392 | 1404 | | |
1393 | 1405 | | |
1394 | 1406 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
| 55 | + | |
| 56 | + | |
56 | 57 | | |
57 | 58 | | |
58 | 59 | | |
| |||
64 | 65 | | |
65 | 66 | | |
66 | 67 | | |
| 68 | + | |
67 | 69 | | |
68 | 70 | | |
69 | 71 | | |
| |||
0 commit comments