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

dm thin metadata: Remove unused local variable when create thin and snap

The local variable disk details is not used during the creating of thin & snap
devices. Remove them from dm-thin-metadata, and add pointer validity check for
pointer value in btree_lookup_raw. Skip memory copy when the caller doesn't need
the value.

Signed-off-by: Huaisheng Ye <yehs1@lenovo.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>

authored by

Huaisheng Ye and committed by
Mike Snitzer
399c9bdb f0e90b6c

+4 -5
+2 -4
drivers/md/dm-thin-metadata.c
··· 1051 1051 int r; 1052 1052 dm_block_t dev_root; 1053 1053 uint64_t key = dev; 1054 - struct disk_device_details details_le; 1055 1054 struct dm_thin_device *td; 1056 1055 __le64 value; 1057 1056 1058 1057 r = dm_btree_lookup(&pmd->details_info, pmd->details_root, 1059 - &key, &details_le); 1058 + &key, NULL); 1060 1059 if (!r) 1061 1060 return -EEXIST; 1062 1061 ··· 1128 1129 dm_block_t origin_root; 1129 1130 uint64_t key = origin, dev_key = dev; 1130 1131 struct dm_thin_device *td; 1131 - struct disk_device_details details_le; 1132 1132 __le64 value; 1133 1133 1134 1134 /* check this device is unused */ 1135 1135 r = dm_btree_lookup(&pmd->details_info, pmd->details_root, 1136 - &dev_key, &details_le); 1136 + &dev_key, NULL); 1137 1137 if (!r) 1138 1138 return -EEXIST; 1139 1139
+2 -1
drivers/md/persistent-data/dm-btree.c
··· 366 366 } while (!(flags & LEAF_NODE)); 367 367 368 368 *result_key = le64_to_cpu(ro_node(s)->keys[i]); 369 - memcpy(v, value_ptr(ro_node(s), i), value_size); 369 + if (v) 370 + memcpy(v, value_ptr(ro_node(s), i), value_size); 370 371 371 372 return 0; 372 373 }