Commit 8a2bcda5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'for-6.18/dm-fixes' of...

Merge tag 'for-6.18/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm

Pull device mapper fixes from Mikulas Patocka:

 - dm-pcache fixes

 - fix a regression with empty flush bios

 - dm-verity: fix unreliable memory allocation with GFP_NOWAIT

* tag 'for-6.18/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
  dm-verity: fix unreliable memory allocation
  dm: fix failure when empty flush's bi_sector points beyond the device end
  dm-pcache: zero cache_info before default init
  dm-pcache: reuse meta_addr in pcache_meta_find_latest
  dm-pcache: allow built-in build and rename flush helper
parents ac3fd01e fe680d8c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
dm-pcache-y := dm_pcache.o cache_dev.o segment.o backing_dev.o cache.o cache_gc.o cache_writeback.o cache_segment.o cache_key.o cache_req.o

obj-m += dm-pcache.o
obj-$(CONFIG_DM_PCACHE) += dm-pcache.o
+2 −2
Original line number Diff line number Diff line
@@ -181,7 +181,7 @@ static void cache_info_init_default(struct pcache_cache *cache)
{
	struct pcache_cache_info *cache_info = &cache->cache_info;

	cache_info->header.seq = 0;
	memset(cache_info, 0, sizeof(*cache_info));
	cache_info->n_segs = cache->cache_dev->seg_num;
	cache_info_set_gc_percent(cache_info, PCACHE_CACHE_GC_PERCENT_DEFAULT);
}
@@ -411,7 +411,7 @@ void pcache_cache_stop(struct dm_pcache *pcache)
{
	struct pcache_cache *cache = &pcache->cache;

	cache_flush(cache);
	pcache_cache_flush(cache);

	cancel_delayed_work_sync(&cache->gc_work);
	flush_work(&cache->clean_work);
+1 −1
Original line number Diff line number Diff line
@@ -339,7 +339,7 @@ void cache_seg_put(struct pcache_cache_segment *cache_seg);
void cache_seg_set_next_seg(struct pcache_cache_segment *cache_seg, u32 seg_id);

/* cache request*/
int cache_flush(struct pcache_cache *cache);
int pcache_cache_flush(struct pcache_cache *cache);
void miss_read_end_work_fn(struct work_struct *work);
int pcache_cache_handle_req(struct pcache_cache *cache, struct pcache_request *pcache_req);

+3 −3
Original line number Diff line number Diff line
@@ -790,7 +790,7 @@ static int cache_write(struct pcache_cache *cache, struct pcache_request *pcache
}

/**
 * cache_flush - Flush all ksets to persist any pending cache data
 * pcache_cache_flush - Flush all ksets to persist any pending cache data
 * @cache: Pointer to the cache structure
 *
 * This function iterates through all ksets associated with the provided `cache`
@@ -802,7 +802,7 @@ static int cache_write(struct pcache_cache *cache, struct pcache_request *pcache
 * the respective error code, preventing the flush operation from proceeding to
 * subsequent ksets.
 */
int cache_flush(struct pcache_cache *cache)
int pcache_cache_flush(struct pcache_cache *cache)
{
	struct pcache_cache_kset *kset;
	int ret;
@@ -827,7 +827,7 @@ int pcache_cache_handle_req(struct pcache_cache *cache, struct pcache_request *p
	struct bio *bio = pcache_req->bio;

	if (unlikely(bio->bi_opf & REQ_PREFLUSH))
		return cache_flush(cache);
		return pcache_cache_flush(cache);

	if (bio_data_dir(bio) == READ)
		return cache_read(cache, pcache_req);
+1 −1
Original line number Diff line number Diff line
@@ -99,7 +99,7 @@ static inline void __must_check *pcache_meta_find_latest(struct pcache_meta_head
		/* Update latest if a more recent sequence is found */
		if (!latest || pcache_meta_seq_after(meta->seq, seq_latest)) {
			seq_latest = meta->seq;
			latest = (void *)header + (i * meta_max_size);
			latest = meta_addr;
		}
	}

Loading