X-Git-Url: http://git.osdn.net/view?p=sagit-ice-cold%2Fkernel_xiaomi_msm8998.git;a=blobdiff_plain;f=drivers%2Fmd%2Fpersistent-data%2Fdm-space-map-disk.c;fp=drivers%2Fmd%2Fpersistent-data%2Fdm-space-map-disk.c;h=bf4c5e2ccb6ffc8d8e0fa5ba049429bdb6dc18d0;hp=32adf6b4a9c7097e12796f8b396f80bfc8867c0a;hb=8f54298dd8fabb33560a2ec7b8d101d03992ff07;hpb=d690caf517f896a0576fa088f06d69f07c132211 diff --git a/drivers/md/persistent-data/dm-space-map-disk.c b/drivers/md/persistent-data/dm-space-map-disk.c index 32adf6b4a9c7..bf4c5e2ccb6f 100644 --- a/drivers/md/persistent-data/dm-space-map-disk.c +++ b/drivers/md/persistent-data/dm-space-map-disk.c @@ -167,8 +167,10 @@ static int sm_disk_new_block(struct dm_space_map *sm, dm_block_t *b) enum allocation_event ev; struct sm_disk *smd = container_of(sm, struct sm_disk, sm); - /* FIXME: we should loop round a couple of times */ - r = sm_ll_find_free_block(&smd->old_ll, smd->begin, smd->old_ll.nr_blocks, b); + /* + * Any block we allocate has to be free in both the old and current ll. + */ + r = sm_ll_find_common_free_block(&smd->old_ll, &smd->ll, smd->begin, smd->ll.nr_blocks, b); if (r) return r;