Skip to content

Commit

Permalink
[PATCH] dm: snapshot: abstract memory release
Browse files Browse the repository at this point in the history
Move the code that releases memory used by a snapshot into a separate function.

Signed-off-by: Milan Broz <mbroz@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Cc: dm-devel@redhat.com
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Milan Broz authored and Linus Torvalds committed Dec 8, 2006
1 parent 45e1572 commit 31c93a0
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions drivers/md/dm-snap.c
Original file line number Diff line number Diff line change
Expand Up @@ -564,6 +564,17 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv)
return r;
}

static void __free_exceptions(struct dm_snapshot *s)
{
kcopyd_client_destroy(s->kcopyd_client);
s->kcopyd_client = NULL;

exit_exception_table(&s->pending, pending_cache);
exit_exception_table(&s->complete, exception_cache);

s->store.destroy(&s->store);
}

static void snapshot_dtr(struct dm_target *ti)
{
struct dm_snapshot *s = (struct dm_snapshot *) ti->private;
Expand All @@ -574,13 +585,7 @@ static void snapshot_dtr(struct dm_target *ti)
/* After this returns there can be no new kcopyd jobs. */
unregister_snapshot(s);

kcopyd_client_destroy(s->kcopyd_client);

exit_exception_table(&s->pending, pending_cache);
exit_exception_table(&s->complete, exception_cache);

/* Deallocate memory used */
s->store.destroy(&s->store);
__free_exceptions(s);

dm_put_device(ti, s->origin);
dm_put_device(ti, s->cow);
Expand Down

0 comments on commit 31c93a0

Please sign in to comment.