From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2750061123450383695==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: [hch-block:blkdev.h-includes 7/8] drivers/md/dm-table.c:1100:11: error: implicit declaration of function 'blk_get_integrity' Date: Sat, 04 Sep 2021 22:52:16 +0800 Message-ID: <202109042200.yUxMTSes-lkp@intel.com> List-Id: --===============2750061123450383695== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable tree: git://git.infradead.org/users/hch/block.git blkdev.h-includes head: c404937ee66601b9936ecbe31d7f24a396ead2c2 commit: 4cff104f02339e4b1f8f65fe2dff8f6c07c1784b [7/8] block: move integrit= y handling out of config: mips-randconfig-r031-20210904 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 6fe2be= ba7d2a41964af658c8c59dd172683ef739) reproduce (this is a W=3D1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/= make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install mips cross compiling tool for clang build # apt-get install binutils-mips-linux-gnu git remote add hch-block git://git.infradead.org/users/hch/block.git git fetch --no-tags hch-block blkdev.h-includes git checkout 4cff104f02339e4b1f8f65fe2dff8f6c07c1784b # save the attached .config to linux build tree COMPILER_INSTALL_PATH=3D$HOME/0day COMPILER=3Dclang make.cross ARCH= =3Dmips = If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All error/warnings (new ones prefixed by >>): >> drivers/md/dm-table.c:1100:11: error: implicit declaration of function '= blk_get_integrity' [-Werror,-Wimplicit-function-declaration] return !!blk_get_integrity(disk); ^ >> drivers/md/dm-table.c:1125:5: error: implicit declaration of function 'b= lk_integrity_compare' [-Werror,-Wimplicit-function-declaration] blk_integrity_compare(prev_disk, template_disk)= < 0) ^ >> drivers/md/dm-table.c:1170:3: error: implicit declaration of function 'b= lk_integrity_register' [-Werror,-Wimplicit-function-declaration] blk_integrity_register(dm_disk(md), ^ drivers/md/dm-table.c:1171:12: error: implicit declaration of function '= blk_get_integrity' [-Werror,-Wimplicit-function-declaration] blk_get_integrity(template_disk)); ^ drivers/md/dm-table.c:1179:6: error: implicit declaration of function 'b= lk_integrity_compare' [-Werror,-Wimplicit-function-declaration] if (blk_integrity_compare(dm_disk(md), template_disk) < 0) { ^ drivers/md/dm-table.c:1755:7: error: implicit declaration of function 'b= lk_integrity_compare' [-Werror,-Wimplicit-function-declaration] blk_integrity_compare(dm_disk(t->md), template_disk)= >=3D 0) ^ >> drivers/md/dm-table.c:1762:3: error: implicit declaration of function 'b= lk_integrity_unregister' [-Werror,-Wimplicit-function-declaration] blk_integrity_unregister(dm_disk(t->md)); ^ drivers/md/dm-table.c:1762:3: note: did you mean 'blkcg_policy_unregiste= r'? include/linux/blk-cgroup.h:190:6: note: 'blkcg_policy_unregister' declar= ed here void blkcg_policy_unregister(struct blkcg_policy *pol); ^ 7 errors generated. -- >> drivers/md/dm-crypt.c:1164:29: error: implicit declaration of function '= blk_get_integrity' [-Werror,-Wimplicit-function-declaration] struct blk_integrity *bi =3D blk_get_integrity(cc->dev->bdev->bd= _disk); ^ >> drivers/md/dm-crypt.c:1164:24: warning: incompatible integer to pointer = conversion initializing 'struct blk_integrity *' with an expression of type= 'int' [-Wint-conversion] struct blk_integrity *bi =3D blk_get_integrity(cc->dev->bdev->bd= _disk); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~ >> drivers/md/dm-crypt.c:1168:35: error: incomplete definition of type 'str= uct blk_integrity_profile' if (!bi || strcasecmp(bi->profile->name, "DM-DIF-EXT-TAG")) { ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ >> drivers/md/dm-crypt.c:1168:35: error: incomplete definition of type 'str= uct blk_integrity_profile' if (!bi || strcasecmp(bi->profile->name, "DM-DIF-EXT-TAG")) { ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:61: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ >> drivers/md/dm-crypt.c:1168:35: error: incomplete definition of type 'str= uct blk_integrity_profile' if (!bi || strcasecmp(bi->profile->name, "DM-DIF-EXT-TAG")) { ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) = ^~~~ include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_val= ue' (cond) ? \ ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ 1 warning and 4 errors generated. -- >> drivers/scsi/sd_dif.c:54:15: error: use of undeclared identifier 'BLK_IN= TEGRITY_IP_CHECKSUM' bi.flags |=3D BLK_INTEGRITY_IP_CHECKSUM; ^ >> drivers/scsi/sd_dif.c:63:47: error: incomplete definition of type 'struc= t blk_integrity_profile' "Enabling DIX %s protection\n", bi.profile->name); ~~~~~~~~~~^ drivers/scsi/sd.h:139:38: note: expanded from macro 'sd_printk' (sdsk)->disk->disk_name, fmt, ##a) : \ ^ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ >> drivers/scsi/sd_dif.c:63:47: error: incomplete definition of type 'struc= t blk_integrity_profile' "Enabling DIX %s protection\n", bi.profile->name); ~~~~~~~~~~^ drivers/scsi/sd.h:140:51: note: expanded from macro 'sd_printk' sdev_printk(prefix, (sdsk)->device, fmt, ##a) ^ include/scsi/scsi_device.h:269:43: note: expanded from macro 'sdev_print= k' sdev_prefix_printk(l, sdev, NULL, fmt, ##a) ^ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ >> drivers/scsi/sd_dif.c:66:15: error: use of undeclared identifier 'BLK_IN= TEGRITY_DEVICE_CAPABLE' bi.flags |=3D BLK_INTEGRITY_DEVICE_CAPABLE; ^ >> drivers/scsi/sd_dif.c:81:2: error: implicit declaration of function 'blk= _integrity_register' [-Werror,-Wimplicit-function-declaration] blk_integrity_register(disk, &bi); ^ 5 errors generated. -- >> drivers/target/target_core_iblock.c:138:7: error: implicit declaration o= f function 'bdev_get_integrity' [-Werror,-Wimplicit-function-declaration] bi =3D bdev_get_integrity(bd); ^ >> drivers/target/target_core_iblock.c:138:5: warning: incompatible integer= to pointer conversion assigning to 'struct blk_integrity *' from 'int' [-W= int-conversion] bi =3D bdev_get_integrity(bd); ^ ~~~~~~~~~~~~~~~~~~~~~~ >> drivers/target/target_core_iblock.c:142:26: error: incomplete definition= of type 'struct blk_integrity_profile' if (!strcmp(bi->profile->name, "T10-DIF-TYPE3-IP") || ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ drivers/target/target_core_iblock.c:143:26: error: incomplete definition= of type 'struct blk_integrity_profile' !strcmp(bi->profile->name, "T10-DIF-TYPE1-IP")) { ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ >> drivers/target/target_core_iblock.c:142:26: error: incomplete definition= of type 'struct blk_integrity_profile' if (!strcmp(bi->profile->name, "T10-DIF-TYPE3-IP") || ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:61: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ drivers/target/target_core_iblock.c:143:26: error: incomplete definition= of type 'struct blk_integrity_profile' !strcmp(bi->profile->name, "T10-DIF-TYPE1-IP")) { ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:61: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ >> drivers/target/target_core_iblock.c:142:26: error: incomplete definition= of type 'struct blk_integrity_profile' if (!strcmp(bi->profile->name, "T10-DIF-TYPE3-IP") || ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) = ^~~~ include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_val= ue' (cond) ? \ ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ drivers/target/target_core_iblock.c:143:26: error: incomplete definition= of type 'struct blk_integrity_profile' !strcmp(bi->profile->name, "T10-DIF-TYPE1-IP")) { ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) = ^~~~ include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_val= ue' (cond) ? \ ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ drivers/target/target_core_iblock.c:145:38: error: incomplete definition= of type 'struct blk_integrity_profile' " supported\n", bi->profile->name); ~~~~~~~~~~~^ include/linux/printk.h:489:33: note: expanded from macro 'pr_err' printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~ include/linux/printk.h:446:60: note: expanded from macro 'printk' #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) ^~~~~~~~~~~ include/linux/printk.h:418:19: note: expanded from macro 'printk_index_w= rap' _p_func(_fmt, ##__VA_ARGS__); \ ^~~~~~~~~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ drivers/target/target_core_iblock.c:150:26: error: incomplete definition= of type 'struct blk_integrity_profile' if (!strcmp(bi->profile->name, "T10-DIF-TYPE3-CRC")) { ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ drivers/target/target_core_iblock.c:150:26: error: incomplete definition= of type 'struct blk_integrity_profile' if (!strcmp(bi->profile->name, "T10-DIF-TYPE3-CRC")) { ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:61: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ drivers/target/target_core_iblock.c:150:26: error: incomplete definition= of type 'struct blk_integrity_profile' if (!strcmp(bi->profile->name, "T10-DIF-TYPE3-CRC")) { ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) = ^~~~ include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_val= ue' (cond) ? \ ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ drivers/target/target_core_iblock.c:152:33: error: incomplete definition= of type 'struct blk_integrity_profile' } else if (!strcmp(bi->profile->name, "T10-DIF-TYPE1-CRC= ")) { ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_va= r' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __tr= ace_if_value(cond)) ^~~~ include/linux/genhd.h:120:15: note: forward declaration of 'struct blk_i= ntegrity_profile' const struct blk_integrity_profile *profile; ^ drivers/target/target_core_iblock.c:152:33: error: incomplete definition= of type 'struct blk_integrity_profile' } else if (!strcmp(bi->profile->name, "T10-DIF-TYPE1-CRC= ")) { ~~~~~~~~~~~^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) vim +/blk_get_integrity +1100 drivers/md/dm-table.c ^1da177e4c3f41 Linus Torvalds 2005-04-16 1097 = 25520d55cdb6ee Martin K. Petersen 2015-10-21 1098 static bool integrity_p= rofile_exists(struct gendisk *disk) 25520d55cdb6ee Martin K. Petersen 2015-10-21 1099 { 25520d55cdb6ee Martin K. Petersen 2015-10-21 @1100 return !!blk_get_integ= rity(disk); 25520d55cdb6ee Martin K. Petersen 2015-10-21 1101 } 25520d55cdb6ee Martin K. Petersen 2015-10-21 1102 = a63a5cf84dac7a Mike Snitzer 2011-04-01 1103 /* a63a5cf84dac7a Mike Snitzer 2011-04-01 1104 * Get a disk whose int= egrity profile reflects the table's profile. a63a5cf84dac7a Mike Snitzer 2011-04-01 1105 * Returns NULL if inte= grity support was inconsistent or unavailable. a63a5cf84dac7a Mike Snitzer 2011-04-01 1106 */ 25520d55cdb6ee Martin K. Petersen 2015-10-21 1107 static struct gendisk *= dm_table_get_integrity_disk(struct dm_table *t) a63a5cf84dac7a Mike Snitzer 2011-04-01 1108 { a63a5cf84dac7a Mike Snitzer 2011-04-01 1109 struct list_head *devi= ces =3D dm_table_get_devices(t); a63a5cf84dac7a Mike Snitzer 2011-04-01 1110 struct dm_dev_internal= *dd =3D NULL; a63a5cf84dac7a Mike Snitzer 2011-04-01 1111 struct gendisk *prev_d= isk =3D NULL, *template_disk =3D NULL; e2460f2a4bc740 Mikulas Patocka 2017-04-18 1112 unsigned i; e2460f2a4bc740 Mikulas Patocka 2017-04-18 1113 = e2460f2a4bc740 Mikulas Patocka 2017-04-18 1114 for (i =3D 0; i < dm_t= able_get_num_targets(t); i++) { e2460f2a4bc740 Mikulas Patocka 2017-04-18 1115 struct dm_target *ti = =3D dm_table_get_target(t, i); e2460f2a4bc740 Mikulas Patocka 2017-04-18 1116 if (!dm_target_passes= _integrity(ti->type)) e2460f2a4bc740 Mikulas Patocka 2017-04-18 1117 goto no_integrity; e2460f2a4bc740 Mikulas Patocka 2017-04-18 1118 } a63a5cf84dac7a Mike Snitzer 2011-04-01 1119 = a63a5cf84dac7a Mike Snitzer 2011-04-01 1120 list_for_each_entry(dd= , devices, list) { 86f1152b117a40 Benjamin Marzinski 2014-08-13 1121 template_disk =3D dd-= >dm_dev->bdev->bd_disk; 25520d55cdb6ee Martin K. Petersen 2015-10-21 1122 if (!integrity_profil= e_exists(template_disk)) a63a5cf84dac7a Mike Snitzer 2011-04-01 1123 goto no_integrity; a63a5cf84dac7a Mike Snitzer 2011-04-01 1124 else if (prev_disk && a63a5cf84dac7a Mike Snitzer 2011-04-01 @1125 blk_integrity_compa= re(prev_disk, template_disk) < 0) a63a5cf84dac7a Mike Snitzer 2011-04-01 1126 goto no_integrity; a63a5cf84dac7a Mike Snitzer 2011-04-01 1127 prev_disk =3D templat= e_disk; a63a5cf84dac7a Mike Snitzer 2011-04-01 1128 } a63a5cf84dac7a Mike Snitzer 2011-04-01 1129 = a63a5cf84dac7a Mike Snitzer 2011-04-01 1130 return template_disk; a63a5cf84dac7a Mike Snitzer 2011-04-01 1131 = a63a5cf84dac7a Mike Snitzer 2011-04-01 1132 no_integrity: a63a5cf84dac7a Mike Snitzer 2011-04-01 1133 if (prev_disk) a63a5cf84dac7a Mike Snitzer 2011-04-01 1134 DMWARN("%s: integrity= not set: %s and %s profile mismatch", a63a5cf84dac7a Mike Snitzer 2011-04-01 1135 dm_device_name= (t->md), a63a5cf84dac7a Mike Snitzer 2011-04-01 1136 prev_disk->dis= k_name, a63a5cf84dac7a Mike Snitzer 2011-04-01 1137 template_disk-= >disk_name); a63a5cf84dac7a Mike Snitzer 2011-04-01 1138 return NULL; a63a5cf84dac7a Mike Snitzer 2011-04-01 1139 } a63a5cf84dac7a Mike Snitzer 2011-04-01 1140 = 26803b9f06d365 Will Drewry 2010-08-12 1141 /* 25520d55cdb6ee Martin K. Petersen 2015-10-21 1142 * Register the mapped = device for blk_integrity support if the 25520d55cdb6ee Martin K. Petersen 2015-10-21 1143 * underlying devices h= ave an integrity profile. But all devices may 25520d55cdb6ee Martin K. Petersen 2015-10-21 1144 * not have matching pr= ofiles (checking all devices isn't reliable a63a5cf84dac7a Mike Snitzer 2011-04-01 1145 * during table load be= cause this table may use other DM device(s) which 25520d55cdb6ee Martin K. Petersen 2015-10-21 1146 * must be resumed befo= re they will have an initialized integity 25520d55cdb6ee Martin K. Petersen 2015-10-21 1147 * profile). Consequen= tly, stacked DM devices force a 2 stage integrity 25520d55cdb6ee Martin K. Petersen 2015-10-21 1148 * profile validation: = First pass during table load, final pass during 25520d55cdb6ee Martin K. Petersen 2015-10-21 1149 * resume. 26803b9f06d365 Will Drewry 2010-08-12 1150 */ 25520d55cdb6ee Martin K. Petersen 2015-10-21 1151 static int dm_table_reg= ister_integrity(struct dm_table *t) 26803b9f06d365 Will Drewry 2010-08-12 1152 { 25520d55cdb6ee Martin K. Petersen 2015-10-21 1153 struct mapped_device *= md =3D t->md; a63a5cf84dac7a Mike Snitzer 2011-04-01 1154 struct gendisk *templa= te_disk =3D NULL; 26803b9f06d365 Will Drewry 2010-08-12 1155 = 9b4b5a797cf8a8 Milan Broz 2017-01-04 1156 /* If target handles i= ntegrity itself do not register it here. */ 9b4b5a797cf8a8 Milan Broz 2017-01-04 1157 if (t->integrity_added) 9b4b5a797cf8a8 Milan Broz 2017-01-04 1158 return 0; 9b4b5a797cf8a8 Milan Broz 2017-01-04 1159 = 25520d55cdb6ee Martin K. Petersen 2015-10-21 1160 template_disk =3D dm_t= able_get_integrity_disk(t); a63a5cf84dac7a Mike Snitzer 2011-04-01 1161 if (!template_disk) a63a5cf84dac7a Mike Snitzer 2011-04-01 1162 return 0; a63a5cf84dac7a Mike Snitzer 2011-04-01 1163 = 25520d55cdb6ee Martin K. Petersen 2015-10-21 1164 if (!integrity_profile= _exists(dm_disk(md))) { e83068a5faafb8 Mike Snitzer 2016-05-24 1165 t->integrity_supporte= d =3D true; 25520d55cdb6ee Martin K. Petersen 2015-10-21 1166 /* 25520d55cdb6ee Martin K. Petersen 2015-10-21 1167 * Register integrity= profile during table load; we can do 25520d55cdb6ee Martin K. Petersen 2015-10-21 1168 * this because the f= inal profile must match during resume. 25520d55cdb6ee Martin K. Petersen 2015-10-21 1169 */ 25520d55cdb6ee Martin K. Petersen 2015-10-21 @1170 blk_integrity_registe= r(dm_disk(md), 25520d55cdb6ee Martin K. Petersen 2015-10-21 1171 blk_get_inte= grity(template_disk)); 25520d55cdb6ee Martin K. Petersen 2015-10-21 1172 return 0; a91a2785b20086 Martin K. Petersen 2011-03-17 1173 } 26803b9f06d365 Will Drewry 2010-08-12 1174 = a63a5cf84dac7a Mike Snitzer 2011-04-01 1175 /* 25520d55cdb6ee Martin K. Petersen 2015-10-21 1176 * If DM device alread= y has an initialized integrity a63a5cf84dac7a Mike Snitzer 2011-04-01 1177 * profile the new pro= file should not conflict. a63a5cf84dac7a Mike Snitzer 2011-04-01 1178 */ 25520d55cdb6ee Martin K. Petersen 2015-10-21 1179 if (blk_integrity_comp= are(dm_disk(md), template_disk) < 0) { a63a5cf84dac7a Mike Snitzer 2011-04-01 1180 DMWARN("%s: conflict = with existing integrity profile: " a63a5cf84dac7a Mike Snitzer 2011-04-01 1181 "%s profile mi= smatch", a63a5cf84dac7a Mike Snitzer 2011-04-01 1182 dm_device_name= (t->md), a63a5cf84dac7a Mike Snitzer 2011-04-01 1183 template_disk-= >disk_name); a63a5cf84dac7a Mike Snitzer 2011-04-01 1184 return 1; a63a5cf84dac7a Mike Snitzer 2011-04-01 1185 } a63a5cf84dac7a Mike Snitzer 2011-04-01 1186 = 25520d55cdb6ee Martin K. Petersen 2015-10-21 1187 /* Preserve existing i= ntegrity profile */ e83068a5faafb8 Mike Snitzer 2016-05-24 1188 t->integrity_supported= =3D true; 26803b9f06d365 Will Drewry 2010-08-12 1189 return 0; 26803b9f06d365 Will Drewry 2010-08-12 1190 } 26803b9f06d365 Will Drewry 2010-08-12 1191 = :::::: The code at line 1100 was first introduced by commit :::::: 25520d55cdb6ee289abc68f553d364d22478ff54 block: Inline blk_integrity= in struct gendisk :::::: TO: Martin K. Petersen :::::: CC: Jens Axboe --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============2750061123450383695== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 FDx5VvYitJxiUku3JWV5/h+SJa43GqoBAA== --===============2750061123450383695==--