Commit 904b2377 authored by Mikulas Patocka's avatar Mikulas Patocka Committed by Stefan Bader

dm snapshot: introduce account_start_copy() and account_end_copy()

BugLink: https://bugs.launchpad.net/bugs/1851549

[ Upstream commit a2f83e8b ]

This simple refactoring moves code for modifying the semaphore cow_count
into separate functions to prepare for changes that will extend these
methods to provide for a more sophisticated mechanism for COW
throttling.
Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
Reviewed-by: default avatarNikos Tsironis <ntsironis@arrikto.com>
Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarConnor Kuehl <connor.kuehl@canonical.com>
Signed-off-by: default avatarKhalid Elmously <khalid.elmously@canonical.com>
parent 2f78d4ba
......@@ -1400,6 +1400,16 @@ static void snapshot_dtr(struct dm_target *ti)
kfree(s);
}
static void account_start_copy(struct dm_snapshot *s)
{
down(&s->cow_count);
}
static void account_end_copy(struct dm_snapshot *s)
{
up(&s->cow_count);
}
/*
* Flush a list of buffers.
*/
......@@ -1584,7 +1594,7 @@ static void copy_callback(int read_err, unsigned long write_err, void *context)
}
list_add(&pe->out_of_order_entry, lh);
}
up(&s->cow_count);
account_end_copy(s);
}
/*
......@@ -1608,7 +1618,7 @@ static void start_copy(struct dm_snap_pending_exception *pe)
dest.count = src.count;
/* Hand over to kcopyd */
down(&s->cow_count);
account_start_copy(s);
dm_kcopyd_copy(s->kcopyd_client, &src, 1, &dest, 0, copy_callback, pe);
}
......@@ -1629,7 +1639,7 @@ static void start_full_bio(struct dm_snap_pending_exception *pe,
pe->full_bio_end_io = bio->bi_end_io;
pe->full_bio_private = bio->bi_private;
down(&s->cow_count);
account_start_copy(s);
callback_data = dm_kcopyd_prepare_callback(s->kcopyd_client,
copy_callback, pe);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment