Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dm: add helper macro for simple DM target module init and exit

Eliminate duplicate boilerplate code for simple modules that contain
a single DM target driver without any additional setup code.

Add a new module_dm() macro, which replaces the module_init() and
module_exit() with template functions that call dm_register_target()
and dm_unregister_target() respectively.

Signed-off-by: Yangtao Li <frank.li@vivo.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>

authored by

Yangtao Li and committed by
Mike Snitzer
3664ff82 306fbc2e

+35 -189
+1 -13
drivers/md/dm-crypt.c
··· 3659 3659 .iterate_devices = crypt_iterate_devices, 3660 3660 .io_hints = crypt_io_hints, 3661 3661 }; 3662 - 3663 - static int __init dm_crypt_init(void) 3664 - { 3665 - return dm_register_target(&crypt_target); 3666 - } 3667 - 3668 - static void __exit dm_crypt_exit(void) 3669 - { 3670 - dm_unregister_target(&crypt_target); 3671 - } 3672 - 3673 - module_init(dm_crypt_init); 3674 - module_exit(dm_crypt_exit); 3662 + module_dm(crypt); 3675 3663 3676 3664 MODULE_AUTHOR("Jana Saout <jana@saout.de>"); 3677 3665 MODULE_DESCRIPTION(DM_NAME " target for transparent encryption / decryption");
+1 -14
drivers/md/dm-delay.c
··· 367 367 .status = delay_status, 368 368 .iterate_devices = delay_iterate_devices, 369 369 }; 370 - 371 - static int __init dm_delay_init(void) 372 - { 373 - return dm_register_target(&delay_target); 374 - } 375 - 376 - static void __exit dm_delay_exit(void) 377 - { 378 - dm_unregister_target(&delay_target); 379 - } 380 - 381 - /* Module hooks */ 382 - module_init(dm_delay_init); 383 - module_exit(dm_delay_exit); 370 + module_dm(delay); 384 371 385 372 MODULE_DESCRIPTION(DM_NAME " delay target"); 386 373 MODULE_AUTHOR("Heinz Mauelshagen <mauelshagen@redhat.com>");
+1 -13
drivers/md/dm-dust.c
··· 570 570 .status = dust_status, 571 571 .prepare_ioctl = dust_prepare_ioctl, 572 572 }; 573 - 574 - static int __init dm_dust_init(void) 575 - { 576 - return dm_register_target(&dust_target); 577 - } 578 - 579 - static void __exit dm_dust_exit(void) 580 - { 581 - dm_unregister_target(&dust_target); 582 - } 583 - 584 - module_init(dm_dust_init); 585 - module_exit(dm_dust_exit); 573 + module_dm(dust); 586 574 587 575 MODULE_DESCRIPTION(DM_NAME " dust test target"); 588 576 MODULE_AUTHOR("Bryan Gurney <dm-devel@redhat.com>");
+1 -13
drivers/md/dm-ebs-target.c
··· 452 452 .prepare_ioctl = ebs_prepare_ioctl, 453 453 .iterate_devices = ebs_iterate_devices, 454 454 }; 455 - 456 - static int __init dm_ebs_init(void) 457 - { 458 - return dm_register_target(&ebs_target); 459 - } 460 - 461 - static void dm_ebs_exit(void) 462 - { 463 - dm_unregister_target(&ebs_target); 464 - } 465 - 466 - module_init(dm_ebs_init); 467 - module_exit(dm_ebs_exit); 455 + module_dm(ebs); 468 456 469 457 MODULE_AUTHOR("Heinz Mauelshagen <dm-devel@redhat.com>"); 470 458 MODULE_DESCRIPTION(DM_NAME " emulated block size target");
+1 -13
drivers/md/dm-era-target.c
··· 1753 1753 .iterate_devices = era_iterate_devices, 1754 1754 .io_hints = era_io_hints 1755 1755 }; 1756 - 1757 - static int __init dm_era_init(void) 1758 - { 1759 - return dm_register_target(&era_target); 1760 - } 1761 - 1762 - static void __exit dm_era_exit(void) 1763 - { 1764 - dm_unregister_target(&era_target); 1765 - } 1766 - 1767 - module_init(dm_era_init); 1768 - module_exit(dm_era_exit); 1756 + module_dm(era); 1769 1757 1770 1758 MODULE_DESCRIPTION(DM_NAME " era target"); 1771 1759 MODULE_AUTHOR("Joe Thornber <ejt@redhat.com>");
+1 -14
drivers/md/dm-flakey.c
··· 506 506 .prepare_ioctl = flakey_prepare_ioctl, 507 507 .iterate_devices = flakey_iterate_devices, 508 508 }; 509 - 510 - static int __init dm_flakey_init(void) 511 - { 512 - return dm_register_target(&flakey_target); 513 - } 514 - 515 - static void __exit dm_flakey_exit(void) 516 - { 517 - dm_unregister_target(&flakey_target); 518 - } 519 - 520 - /* Module hooks */ 521 - module_init(dm_flakey_init); 522 - module_exit(dm_flakey_exit); 509 + module_dm(flakey); 523 510 524 511 MODULE_DESCRIPTION(DM_NAME " flakey target"); 525 512 MODULE_AUTHOR("Joe Thornber <dm-devel@redhat.com>");
+1 -13
drivers/md/dm-log-writes.c
··· 937 937 .dax_zero_page_range = log_writes_dax_zero_page_range, 938 938 .dax_recovery_write = log_writes_dax_recovery_write, 939 939 }; 940 - 941 - static int __init dm_log_writes_init(void) 942 - { 943 - return dm_register_target(&log_writes_target); 944 - } 945 - 946 - static void __exit dm_log_writes_exit(void) 947 - { 948 - dm_unregister_target(&log_writes_target); 949 - } 950 - 951 - module_init(dm_log_writes_init); 952 - module_exit(dm_log_writes_exit); 940 + module_dm(log_writes); 953 941 954 942 MODULE_DESCRIPTION(DM_NAME " log writes target"); 955 943 MODULE_AUTHOR("Josef Bacik <jbacik@fb.com>");
+1 -17
drivers/md/dm-raid.c
··· 4077 4077 .preresume = raid_preresume, 4078 4078 .resume = raid_resume, 4079 4079 }; 4080 - 4081 - static int __init dm_raid_init(void) 4082 - { 4083 - DMINFO("Loading target version %u.%u.%u", 4084 - raid_target.version[0], 4085 - raid_target.version[1], 4086 - raid_target.version[2]); 4087 - return dm_register_target(&raid_target); 4088 - } 4089 - 4090 - static void __exit dm_raid_exit(void) 4091 - { 4092 - dm_unregister_target(&raid_target); 4093 - } 4094 - 4095 - module_init(dm_raid_init); 4096 - module_exit(dm_raid_exit); 4080 + module_dm(raid); 4097 4081 4098 4082 module_param(devices_handle_discard_safely, bool, 0644); 4099 4083 MODULE_PARM_DESC(devices_handle_discard_safely,
+1 -13
drivers/md/dm-switch.c
··· 565 565 .prepare_ioctl = switch_prepare_ioctl, 566 566 .iterate_devices = switch_iterate_devices, 567 567 }; 568 - 569 - static int __init dm_switch_init(void) 570 - { 571 - return dm_register_target(&switch_target); 572 - } 573 - 574 - static void __exit dm_switch_exit(void) 575 - { 576 - dm_unregister_target(&switch_target); 577 - } 578 - 579 - module_init(dm_switch_init); 580 - module_exit(dm_switch_exit); 568 + module_dm(switch); 581 569 582 570 MODULE_DESCRIPTION(DM_NAME " dynamic path switching target"); 583 571 MODULE_AUTHOR("Kevin D. O'Kelley <Kevin_OKelley@dell.com>");
+1 -13
drivers/md/dm-unstripe.c
··· 192 192 .iterate_devices = unstripe_iterate_devices, 193 193 .io_hints = unstripe_io_hints, 194 194 }; 195 - 196 - static int __init dm_unstripe_init(void) 197 - { 198 - return dm_register_target(&unstripe_target); 199 - } 200 - 201 - static void __exit dm_unstripe_exit(void) 202 - { 203 - dm_unregister_target(&unstripe_target); 204 - } 205 - 206 - module_init(dm_unstripe_init); 207 - module_exit(dm_unstripe_exit); 195 + module_dm(unstripe); 208 196 209 197 MODULE_DESCRIPTION(DM_NAME " unstriped target"); 210 198 MODULE_ALIAS("dm-unstriped");
+1 -13
drivers/md/dm-verity-target.c
··· 1514 1514 .iterate_devices = verity_iterate_devices, 1515 1515 .io_hints = verity_io_hints, 1516 1516 }; 1517 - 1518 - static int __init dm_verity_init(void) 1519 - { 1520 - return dm_register_target(&verity_target); 1521 - } 1522 - 1523 - static void __exit dm_verity_exit(void) 1524 - { 1525 - dm_unregister_target(&verity_target); 1526 - } 1527 - 1528 - module_init(dm_verity_init); 1529 - module_exit(dm_verity_exit); 1517 + module_dm(verity); 1530 1518 1531 1519 MODULE_AUTHOR("Mikulas Patocka <mpatocka@redhat.com>"); 1532 1520 MODULE_AUTHOR("Mandeep Baines <msb@chromium.org>");
+1 -13
drivers/md/dm-writecache.c
··· 2773 2773 .iterate_devices = writecache_iterate_devices, 2774 2774 .io_hints = writecache_io_hints, 2775 2775 }; 2776 - 2777 - static int __init dm_writecache_init(void) 2778 - { 2779 - return dm_register_target(&writecache_target); 2780 - } 2781 - 2782 - static void __exit dm_writecache_exit(void) 2783 - { 2784 - dm_unregister_target(&writecache_target); 2785 - } 2786 - 2787 - module_init(dm_writecache_init); 2788 - module_exit(dm_writecache_exit); 2776 + module_dm(writecache); 2789 2777 2790 2778 MODULE_DESCRIPTION(DM_NAME " writecache target"); 2791 2779 MODULE_AUTHOR("Mikulas Patocka <dm-devel@redhat.com>");
+1 -13
drivers/md/dm-zero.c
··· 75 75 .map = zero_map, 76 76 .io_hints = zero_io_hints, 77 77 }; 78 - 79 - static int __init dm_zero_init(void) 80 - { 81 - return dm_register_target(&zero_target); 82 - } 83 - 84 - static void __exit dm_zero_exit(void) 85 - { 86 - dm_unregister_target(&zero_target); 87 - } 88 - 89 - module_init(dm_zero_init) 90 - module_exit(dm_zero_exit) 78 + module_dm(zero); 91 79 92 80 MODULE_AUTHOR("Jana Saout <jana@saout.de>"); 93 81 MODULE_DESCRIPTION(DM_NAME " dummy target returning zeros");
+2 -14
drivers/md/dm-zoned-target.c
··· 1138 1138 return r; 1139 1139 } 1140 1140 1141 - static struct target_type dmz_type = { 1141 + static struct target_type zoned_target = { 1142 1142 .name = "zoned", 1143 1143 .version = {2, 0, 0}, 1144 1144 .features = DM_TARGET_SINGLETON | DM_TARGET_MIXED_ZONED_MODEL, ··· 1154 1154 .status = dmz_status, 1155 1155 .message = dmz_message, 1156 1156 }; 1157 - 1158 - static int __init dmz_init(void) 1159 - { 1160 - return dm_register_target(&dmz_type); 1161 - } 1162 - 1163 - static void __exit dmz_exit(void) 1164 - { 1165 - dm_unregister_target(&dmz_type); 1166 - } 1167 - 1168 - module_init(dmz_init); 1169 - module_exit(dmz_exit); 1157 + module_dm(zoned); 1170 1158 1171 1159 MODULE_DESCRIPTION(DM_NAME " target for zoned block devices"); 1172 1160 MODULE_AUTHOR("Damien Le Moal <damien.lemoal@wdc.com>");
+20
include/linux/device-mapper.h
··· 631 631 DMEMIT("target_name=%s,target_version=%u.%u.%u", \ 632 632 (y)->name, (y)->version[0], (y)->version[1], (y)->version[2]) 633 633 634 + /** 635 + * module_dm() - Helper macro for DM targets that don't do anything 636 + * special in their module_init and module_exit. 637 + * Each module may only use this macro once, and calling it replaces 638 + * module_init() and module_exit(). 639 + * 640 + * @name: DM target's name 641 + */ 642 + #define module_dm(name) \ 643 + static int __init dm_##name##_init(void) \ 644 + { \ 645 + return dm_register_target(&(name##_target)); \ 646 + } \ 647 + module_init(dm_##name##_init) \ 648 + static void __exit dm_##name##_exit(void) \ 649 + { \ 650 + dm_unregister_target(&(name##_target)); \ 651 + } \ 652 + module_exit(dm_##name##_exit) 653 + 634 654 /* 635 655 * Definitions of return values from target end_io function. 636 656 */