- lc->bitset_uint32_count = bitset_size / sizeof(*lc->clean_bits);
-
- /*
- * Disk log?
- */
- if (!dev) {
- lc->clean_bits = vmalloc(bitset_size);
- if (!lc->clean_bits) {
- DMWARN("couldn't allocate clean bitset");
- kfree(lc);
- return -ENOMEM;
- }
- lc->disk_header = NULL;
- } else {
- lc->log_dev = dev;
- lc->log_dev_failed = 0;
- lc->header_location.bdev = lc->log_dev->bdev;
- lc->header_location.sector = 0;
-
- /*
- * Buffer holds both header and bitset.
- */
- buf_size = dm_round_up((LOG_OFFSET << SECTOR_SHIFT) +
- bitset_size, ti->limits.hardsect_size);
- lc->header_location.count = buf_size >> SECTOR_SHIFT;
-
- lc->disk_header = vmalloc(buf_size);
- if (!lc->disk_header) {
- DMWARN("couldn't allocate disk log buffer");
- kfree(lc);
- return -ENOMEM;
- }
-
- lc->clean_bits = (void *)lc->disk_header +
- (LOG_OFFSET << SECTOR_SHIFT);
+ lc->bitset_uint32_count = bitset_size / 4;
+ lc->clean_bits = vmalloc(bitset_size);
+ if (!lc->clean_bits) {
+ DMWARN("couldn't allocate clean bitset");
+ kfree(lc);
+ return -ENOMEM;