Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dm thin: disable discards for thin-pool if no_discard_passdown

Also rename disable_passdown_if_not_supported to
disable_discard_passdown_if_not_supported.

And fold passdown_enabled() into only caller.

Signed-off-by: Mike Snitzer <snitzer@kernel.org>

+5 -8
+5 -8
drivers/md/dm-thin.c
··· 2528 2528 2529 2529 /*----------------------------------------------------------------*/ 2530 2530 2531 - static bool passdown_enabled(struct pool_c *pt) 2532 - { 2533 - return pt->adjusted_pf.discard_passdown; 2534 - } 2535 - 2536 2531 static void set_discard_callbacks(struct pool *pool) 2537 2532 { 2538 2533 struct pool_c *pt = pool->ti->private; 2539 2534 2540 - if (passdown_enabled(pt)) { 2535 + if (pt->adjusted_pf.discard_passdown) { 2541 2536 pool->process_discard_cell = process_discard_cell_passdown; 2542 2537 pool->process_prepared_discard = process_prepared_discard_passdown_pt1; 2543 2538 pool->process_prepared_discard_pt2 = process_prepared_discard_passdown_pt2; ··· 2841 2846 * If discard_passdown was enabled verify that the data device 2842 2847 * supports discards. Disable discard_passdown if not. 2843 2848 */ 2844 - static void disable_passdown_if_not_supported(struct pool_c *pt) 2849 + static void disable_discard_passdown_if_not_supported(struct pool_c *pt) 2845 2850 { 2846 2851 struct pool *pool = pt->pool; 2847 2852 struct block_device *data_bdev = pt->data_dev->bdev; ··· 4095 4100 */ 4096 4101 4097 4102 if (pt->adjusted_pf.discard_enabled) { 4098 - disable_passdown_if_not_supported(pt); 4103 + disable_discard_passdown_if_not_supported(pt); 4104 + if (!pt->adjusted_pf.discard_passdown) 4105 + limits->max_discard_sectors = 0; 4099 4106 /* 4100 4107 * The pool uses the same discard limits as the underlying data 4101 4108 * device. DM core has already set this up.