01 Nov, 2011
1 commit
-
This patch introduces dm_kcopyd_zero() to make it easy to use
kcopyd to write zeros into the requested areas instead
instead of copying. It is implemented by passing a NULL
copying source to dm_kcopyd_copy().The forthcoming thin provisioning target uses this.
Signed-off-by: Mikulas Patocka
Signed-off-by: Alasdair G Kergon
02 Aug, 2011
1 commit
-
If we write a full chunk in the snapshot, skip reading the origin device
because the whole chunk will be overwritten anyway.This patch changes the snapshot write logic when a full chunk is written.
In this case:
1. allocate the exception
2. dispatch the bio (but don't report the bio completion to device mapper)
3. write the exception record
4. report bio completedCallbacks must be done through the kcopyd thread, because callbacks must not
race with each other. So we create two new functions:dm_kcopyd_prepare_callback: allocate a job structure and prepare the callback.
(This function must not be called from interrupt context.)dm_kcopyd_do_callback: submit callback.
(This function may be called from interrupt context.)Performance test (on snapshots with 4k chunk size):
without the patch:
non-direct-io sequential write (dd): 17.7MB/s
direct-io sequential write (dd): 20.9MB/s
non-direct-io random write (mkfs.ext2): 0.44swith the patch:
non-direct-io sequential write (dd): 26.5MB/s
direct-io sequential write (dd): 33.2MB/s
non-direct-io random write (mkfs.ext2): 0.27sSigned-off-by: Mikulas Patocka
Signed-off-by: Alasdair G Kergon
29 May, 2011
2 commits
-
Return client directly from dm_kcopyd_client_create, not through a
parameter, making it consistent with dm_io_client_create.Signed-off-by: Mikulas Patocka
Signed-off-by: Alasdair G Kergon -
Reserve just the minimum of pages needed to process one job.
Because we allocate pages from page allocator, we don't need to reserve
a large number of pages. The maximum job size is SUB_JOB_SIZE and we
calculate the number of reserved pages based on this.Signed-off-by: Mikulas Patocka
Signed-off-by: Alasdair G Kergon
25 Apr, 2008
1 commit
-
Publish the dm-io, dm-log and dm-kcopyd headers in include/linux.
Signed-off-by: Alasdair G Kergon