For most ioctl() we do not need to pass so big buffers
and we can reduce amount of zeroed memory blocks.
static struct dm_ioctl *_flatten(struct dm_task *dmt, unsigned repeat_count)
{
- const size_t min_size = 16 * 1024;
+ size_t min_size;
const int (*version)[3];
struct dm_ioctl *dmi;
else if (dmt->head)
log_debug_activation(INTERNAL_ERROR "dm '%s' ioctl should not define parameters.",
_cmd_data_v4[dmt->type].name);
+ switch (dmt->type) {
+ case DM_DEVICE_CREATE:
+ case DM_DEVICE_DEPS:
+ case DM_DEVICE_INFO:
+ case DM_DEVICE_LIST:
+ case DM_DEVICE_STATUS:
+ case DM_DEVICE_TABLE:
+ case DM_DEVICE_TARGET_MSG:
+ min_size = 16 * 1024;
+ default:
+ min_size = 2 * 1024;
+ }
if (count && (dmt->sector || dmt->message)) {
log_error("targets and message are incompatible");