Loading drivers/md/dm-integrity.c +20 −28 Original line number Diff line number Diff line Loading @@ -630,11 +630,10 @@ static bool block_bitmap_op(struct dm_integrity_c *ic, struct page_list *bitmap, end_bit %= PAGE_SIZE * 8; repeat: if (page < end_page) { if (page < end_page) this_end_bit = PAGE_SIZE * 8 - 1; } else { else this_end_bit = end_bit; } data = lowmem_page_address(bitmap[page].page); Loading Loading @@ -1251,14 +1250,13 @@ static bool add_new_range(struct dm_integrity_c *ic, struct dm_integrity_range * struct dm_integrity_range *range = container_of(*n, struct dm_integrity_range, node); parent = *n; if (new_range->logical_sector + new_range->n_sectors <= range->logical_sector) { if (new_range->logical_sector + new_range->n_sectors <= range->logical_sector) n = &range->node.rb_left; } else if (new_range->logical_sector >= range->logical_sector + range->n_sectors) { else if (new_range->logical_sector >= range->logical_sector + range->n_sectors) n = &range->node.rb_right; } else { else return false; } } rb_link_node(&new_range->node, parent, n); rb_insert_color(&new_range->node, &ic->in_progress); Loading Loading @@ -1364,16 +1362,15 @@ static unsigned int find_journal_node(struct dm_integrity_c *ic, sector_t sector while (n) { struct journal_node *j = container_of(n, struct journal_node, node); if (sector == j->sector) { if (sector == j->sector) found = j - ic->journal_tree; } if (sector < j->sector) { *next_sector = j->sector; n = j->node.rb_left; } else { } else n = j->node.rb_right; } } return found; } Loading Loading @@ -1501,9 +1498,8 @@ static int dm_integrity_rw_tag(struct dm_integrity_c *ic, unsigned char *tag, se *metadata_offset = 0; } if (unlikely(!is_power_of_2(ic->tag_size))) { if (unlikely(!is_power_of_2(ic->tag_size))) hash_offset = (hash_offset + to_copy) % ic->tag_size; } total_size -= to_copy; } while (unlikely(total_size)); Loading Loading @@ -2104,14 +2100,12 @@ static bool __journal_read_write(struct dm_integrity_io *dio, struct bio *bio, smp_mb(); if (unlikely(waitqueue_active(&ic->copy_to_journal_wait))) wake_up(&ic->copy_to_journal_wait); if (READ_ONCE(ic->free_sectors) <= ic->free_sectors_threshold) { if (READ_ONCE(ic->free_sectors) <= ic->free_sectors_threshold) queue_work(ic->commit_wq, &ic->commit_work); } else { else schedule_autocommit(ic); } } else { } else remove_range(ic, &dio->range); } if (unlikely(bio->bi_iter.bi_size)) { sector_t area, offset; Loading Loading @@ -2569,10 +2563,9 @@ static void do_journal_write(struct dm_integrity_c *ic, unsigned int write_start mempool_free(io, &ic->journal_io_mempool); goto skip_io; } for (l = j; l < k; l++) { for (l = j; l < k; l++) remove_journal_node(ic, §ion_node[l]); } } spin_unlock_irq(&ic->endio_wait.lock); metadata_block = get_metadata_sector_and_offset(ic, area, offset, &metadata_offset); Loading @@ -2598,10 +2591,9 @@ static void do_journal_write(struct dm_integrity_c *ic, unsigned int write_start journal_entry_set_unused(je2); r = dm_integrity_rw_tag(ic, journal_entry_tag(ic, je2), &metadata_block, &metadata_offset, ic->tag_size, TAG_WRITE); if (unlikely(r)) { if (unlikely(r)) dm_integrity_io_error(ic, "reading tags", r); } } atomic_inc(&comp.in_flight); copy_from_journal(ic, i, j << ic->sb->log2_sectors_per_block, Loading Loading @@ -2711,9 +2703,9 @@ static void integrity_recalc(struct work_struct *w) n_sectors = range.n_sectors; if (ic->mode == 'B') { if (block_bitmap_op(ic, ic->recalc_bitmap, logical_sector, n_sectors, BITMAP_OP_TEST_ALL_CLEAR)) { if (block_bitmap_op(ic, ic->recalc_bitmap, logical_sector, n_sectors, BITMAP_OP_TEST_ALL_CLEAR)) goto advance_and_next; } while (block_bitmap_op(ic, ic->recalc_bitmap, logical_sector, ic->sectors_per_block, BITMAP_OP_TEST_ALL_CLEAR)) { logical_sector += ic->sectors_per_block; Loading @@ -2732,9 +2724,9 @@ static void integrity_recalc(struct work_struct *w) if (unlikely(++super_counter == RECALC_WRITE_SUPER)) { recalc_write_super(ic); if (ic->mode == 'B') { if (ic->mode == 'B') queue_delayed_work(ic->commit_wq, &ic->bitmap_flush_work, ic->bitmap_flush_interval); } super_counter = 0; } Loading Loading @@ -4417,9 +4409,9 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned int argc, char **argv log2_blocks_per_bitmap_bit = log2_sectors_per_bitmap_bit - ic->sb->log2_sectors_per_block; ic->log2_blocks_per_bitmap_bit = log2_blocks_per_bitmap_bit; if (should_write_sb) { if (should_write_sb) ic->sb->log2_blocks_per_bitmap_bit = log2_blocks_per_bitmap_bit; } n_bitmap_bits = ((ic->provided_data_sectors >> ic->sb->log2_sectors_per_block) + (((sector_t)1 << log2_blocks_per_bitmap_bit) - 1)) >> log2_blocks_per_bitmap_bit; ic->n_bitmap_blocks = DIV_ROUND_UP(n_bitmap_bits, BITMAP_BLOCK_SIZE * 8); Loading drivers/md/dm-stats.c +3 −6 Original line number Diff line number Diff line Loading @@ -601,13 +601,11 @@ static void dm_stat_for_entry(struct dm_stat *s, size_t entry, while (lo + 1 < hi) { unsigned int mid = (lo + hi) / 2; if (s->histogram_boundaries[mid - 1] > duration) { if (s->histogram_boundaries[mid - 1] > duration) hi = mid; } else { else lo = mid; } } p->histogram[lo]++; } } Loading Loading @@ -900,10 +898,9 @@ static int dm_stats_print(struct dm_stats *stats, int id, if (s->n_histogram_entries) { unsigned int i; for (i = 0; i < s->n_histogram_entries + 1; i++) { for (i = 0; i < s->n_histogram_entries + 1; i++) DMEMIT("%s%llu", !i ? " " : ":", shared->tmp.histogram[i]); } } DMEMIT("\n"); if (unlikely(sz + 1 >= maxlen)) Loading drivers/md/dm-stripe.c +4 −6 Original line number Diff line number Diff line Loading @@ -369,14 +369,12 @@ static void stripe_status(struct dm_target *ti, status_type_t type, switch (type) { case STATUSTYPE_INFO: DMEMIT("%d ", sc->stripes); for (i = 0; i < sc->stripes; i++) { for (i = 0; i < sc->stripes; i++) DMEMIT("%s ", sc->stripe[i].dev->name); } DMEMIT("1 "); for (i = 0; i < sc->stripes; i++) { DMEMIT("%c", atomic_read(&(sc->stripe[i].error_count)) ? 'D' : 'A'); } for (i = 0; i < sc->stripes; i++) DMEMIT("%c", atomic_read(&(sc->stripe[i].error_count)) ? 'D' : 'A'); break; case STATUSTYPE_TABLE: Loading drivers/md/dm-thin-metadata.c +2 −2 Original line number Diff line number Diff line Loading @@ -1536,9 +1536,9 @@ static int __find_block(struct dm_thin_device *td, dm_block_t block, dm_block_t keys[2] = { td->id, block }; struct dm_btree_info *info; if (can_issue_io) { if (can_issue_io) info = &pmd->info; } else else info = &pmd->nb_info; r = dm_btree_lookup(info, pmd->root, keys, &value); Loading drivers/md/dm-writecache.c +3 −4 Original line number Diff line number Diff line Loading @@ -1984,9 +1984,8 @@ static void writecache_writeback(struct work_struct *work) goto restart; } if (wc->overwrote_committed) { if (wc->overwrote_committed) writecache_wait_for_ios(wc, WRITE); } n_walked = 0; INIT_LIST_HEAD(&skipped); Loading Loading @@ -2015,9 +2014,9 @@ static void writecache_writeback(struct work_struct *work) } else e = container_of(wc->lru.prev, struct wc_entry, lru); BUG_ON(e->write_in_progress); if (unlikely(!writecache_entry_is_committed(wc, e))) { if (unlikely(!writecache_entry_is_committed(wc, e))) writecache_flush(wc); } node = rb_prev(&e->rb_node); if (node) { f = container_of(node, struct wc_entry, rb_node); Loading Loading
drivers/md/dm-integrity.c +20 −28 Original line number Diff line number Diff line Loading @@ -630,11 +630,10 @@ static bool block_bitmap_op(struct dm_integrity_c *ic, struct page_list *bitmap, end_bit %= PAGE_SIZE * 8; repeat: if (page < end_page) { if (page < end_page) this_end_bit = PAGE_SIZE * 8 - 1; } else { else this_end_bit = end_bit; } data = lowmem_page_address(bitmap[page].page); Loading Loading @@ -1251,14 +1250,13 @@ static bool add_new_range(struct dm_integrity_c *ic, struct dm_integrity_range * struct dm_integrity_range *range = container_of(*n, struct dm_integrity_range, node); parent = *n; if (new_range->logical_sector + new_range->n_sectors <= range->logical_sector) { if (new_range->logical_sector + new_range->n_sectors <= range->logical_sector) n = &range->node.rb_left; } else if (new_range->logical_sector >= range->logical_sector + range->n_sectors) { else if (new_range->logical_sector >= range->logical_sector + range->n_sectors) n = &range->node.rb_right; } else { else return false; } } rb_link_node(&new_range->node, parent, n); rb_insert_color(&new_range->node, &ic->in_progress); Loading Loading @@ -1364,16 +1362,15 @@ static unsigned int find_journal_node(struct dm_integrity_c *ic, sector_t sector while (n) { struct journal_node *j = container_of(n, struct journal_node, node); if (sector == j->sector) { if (sector == j->sector) found = j - ic->journal_tree; } if (sector < j->sector) { *next_sector = j->sector; n = j->node.rb_left; } else { } else n = j->node.rb_right; } } return found; } Loading Loading @@ -1501,9 +1498,8 @@ static int dm_integrity_rw_tag(struct dm_integrity_c *ic, unsigned char *tag, se *metadata_offset = 0; } if (unlikely(!is_power_of_2(ic->tag_size))) { if (unlikely(!is_power_of_2(ic->tag_size))) hash_offset = (hash_offset + to_copy) % ic->tag_size; } total_size -= to_copy; } while (unlikely(total_size)); Loading Loading @@ -2104,14 +2100,12 @@ static bool __journal_read_write(struct dm_integrity_io *dio, struct bio *bio, smp_mb(); if (unlikely(waitqueue_active(&ic->copy_to_journal_wait))) wake_up(&ic->copy_to_journal_wait); if (READ_ONCE(ic->free_sectors) <= ic->free_sectors_threshold) { if (READ_ONCE(ic->free_sectors) <= ic->free_sectors_threshold) queue_work(ic->commit_wq, &ic->commit_work); } else { else schedule_autocommit(ic); } } else { } else remove_range(ic, &dio->range); } if (unlikely(bio->bi_iter.bi_size)) { sector_t area, offset; Loading Loading @@ -2569,10 +2563,9 @@ static void do_journal_write(struct dm_integrity_c *ic, unsigned int write_start mempool_free(io, &ic->journal_io_mempool); goto skip_io; } for (l = j; l < k; l++) { for (l = j; l < k; l++) remove_journal_node(ic, §ion_node[l]); } } spin_unlock_irq(&ic->endio_wait.lock); metadata_block = get_metadata_sector_and_offset(ic, area, offset, &metadata_offset); Loading @@ -2598,10 +2591,9 @@ static void do_journal_write(struct dm_integrity_c *ic, unsigned int write_start journal_entry_set_unused(je2); r = dm_integrity_rw_tag(ic, journal_entry_tag(ic, je2), &metadata_block, &metadata_offset, ic->tag_size, TAG_WRITE); if (unlikely(r)) { if (unlikely(r)) dm_integrity_io_error(ic, "reading tags", r); } } atomic_inc(&comp.in_flight); copy_from_journal(ic, i, j << ic->sb->log2_sectors_per_block, Loading Loading @@ -2711,9 +2703,9 @@ static void integrity_recalc(struct work_struct *w) n_sectors = range.n_sectors; if (ic->mode == 'B') { if (block_bitmap_op(ic, ic->recalc_bitmap, logical_sector, n_sectors, BITMAP_OP_TEST_ALL_CLEAR)) { if (block_bitmap_op(ic, ic->recalc_bitmap, logical_sector, n_sectors, BITMAP_OP_TEST_ALL_CLEAR)) goto advance_and_next; } while (block_bitmap_op(ic, ic->recalc_bitmap, logical_sector, ic->sectors_per_block, BITMAP_OP_TEST_ALL_CLEAR)) { logical_sector += ic->sectors_per_block; Loading @@ -2732,9 +2724,9 @@ static void integrity_recalc(struct work_struct *w) if (unlikely(++super_counter == RECALC_WRITE_SUPER)) { recalc_write_super(ic); if (ic->mode == 'B') { if (ic->mode == 'B') queue_delayed_work(ic->commit_wq, &ic->bitmap_flush_work, ic->bitmap_flush_interval); } super_counter = 0; } Loading Loading @@ -4417,9 +4409,9 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned int argc, char **argv log2_blocks_per_bitmap_bit = log2_sectors_per_bitmap_bit - ic->sb->log2_sectors_per_block; ic->log2_blocks_per_bitmap_bit = log2_blocks_per_bitmap_bit; if (should_write_sb) { if (should_write_sb) ic->sb->log2_blocks_per_bitmap_bit = log2_blocks_per_bitmap_bit; } n_bitmap_bits = ((ic->provided_data_sectors >> ic->sb->log2_sectors_per_block) + (((sector_t)1 << log2_blocks_per_bitmap_bit) - 1)) >> log2_blocks_per_bitmap_bit; ic->n_bitmap_blocks = DIV_ROUND_UP(n_bitmap_bits, BITMAP_BLOCK_SIZE * 8); Loading
drivers/md/dm-stats.c +3 −6 Original line number Diff line number Diff line Loading @@ -601,13 +601,11 @@ static void dm_stat_for_entry(struct dm_stat *s, size_t entry, while (lo + 1 < hi) { unsigned int mid = (lo + hi) / 2; if (s->histogram_boundaries[mid - 1] > duration) { if (s->histogram_boundaries[mid - 1] > duration) hi = mid; } else { else lo = mid; } } p->histogram[lo]++; } } Loading Loading @@ -900,10 +898,9 @@ static int dm_stats_print(struct dm_stats *stats, int id, if (s->n_histogram_entries) { unsigned int i; for (i = 0; i < s->n_histogram_entries + 1; i++) { for (i = 0; i < s->n_histogram_entries + 1; i++) DMEMIT("%s%llu", !i ? " " : ":", shared->tmp.histogram[i]); } } DMEMIT("\n"); if (unlikely(sz + 1 >= maxlen)) Loading
drivers/md/dm-stripe.c +4 −6 Original line number Diff line number Diff line Loading @@ -369,14 +369,12 @@ static void stripe_status(struct dm_target *ti, status_type_t type, switch (type) { case STATUSTYPE_INFO: DMEMIT("%d ", sc->stripes); for (i = 0; i < sc->stripes; i++) { for (i = 0; i < sc->stripes; i++) DMEMIT("%s ", sc->stripe[i].dev->name); } DMEMIT("1 "); for (i = 0; i < sc->stripes; i++) { DMEMIT("%c", atomic_read(&(sc->stripe[i].error_count)) ? 'D' : 'A'); } for (i = 0; i < sc->stripes; i++) DMEMIT("%c", atomic_read(&(sc->stripe[i].error_count)) ? 'D' : 'A'); break; case STATUSTYPE_TABLE: Loading
drivers/md/dm-thin-metadata.c +2 −2 Original line number Diff line number Diff line Loading @@ -1536,9 +1536,9 @@ static int __find_block(struct dm_thin_device *td, dm_block_t block, dm_block_t keys[2] = { td->id, block }; struct dm_btree_info *info; if (can_issue_io) { if (can_issue_io) info = &pmd->info; } else else info = &pmd->nb_info; r = dm_btree_lookup(info, pmd->root, keys, &value); Loading
drivers/md/dm-writecache.c +3 −4 Original line number Diff line number Diff line Loading @@ -1984,9 +1984,8 @@ static void writecache_writeback(struct work_struct *work) goto restart; } if (wc->overwrote_committed) { if (wc->overwrote_committed) writecache_wait_for_ios(wc, WRITE); } n_walked = 0; INIT_LIST_HEAD(&skipped); Loading Loading @@ -2015,9 +2014,9 @@ static void writecache_writeback(struct work_struct *work) } else e = container_of(wc->lru.prev, struct wc_entry, lru); BUG_ON(e->write_in_progress); if (unlikely(!writecache_entry_is_committed(wc, e))) { if (unlikely(!writecache_entry_is_committed(wc, e))) writecache_flush(wc); } node = rb_prev(&e->rb_node); if (node) { f = container_of(node, struct wc_entry, rb_node); Loading