dm ioctl: use kmalloc if possible
authorMikulas Patocka <mpatocka@redhat.com>
Fri, 21 Dec 2012 20:23:36 +0000 (20:23 +0000)
committerAlasdair G Kergon <agk@redhat.com>
Fri, 21 Dec 2012 20:23:36 +0000 (20:23 +0000)
commit9c5091f2eeeffe5eca2ffe8a1bc28d312c8a5083
tree8452b7ece373cf845bd745ff78750ae325a881d3
parent5023e5cf58e1dae904e2e8b5b9779c33512b75a1
dm ioctl: use kmalloc if possible

If the parameter buffer is small enough, try to allocate it with kmalloc()
rather than vmalloc().

vmalloc is noticeably slower than kmalloc because it has to manipulate
page tables.

In my tests, on PA-RISC this patch speeds up activation 13 times.
On Opteron this patch speeds up activation by 5%.

This patch introduces a new function free_params() to free the
parameters and this uses new flags that record whether or not vmalloc()
was used and whether or not the input buffer must be wiped after use.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
drivers/md/dm-ioctl.c