hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/md/dm-era-target.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 #include "dm.h"
23 #include "persistent-data/dm-transaction-manager.h"
34 #include "persistent-data/dm-bitset.h"
....@@ -1151,7 +1152,6 @@
11511152
11521153 struct era {
11531154 struct dm_target *ti;
1154
- struct dm_target_callbacks callbacks;
11551155
11561156 struct dm_dev *metadata_dev;
11571157 struct dm_dev *origin_dev;
....@@ -1289,7 +1289,7 @@
12891289 */
12901290 if (commit_needed)
12911291 set_bit(get_block(era, bio), ws->bits);
1292
- generic_make_request(bio);
1292
+ submit_bio_noacct(bio);
12931293 }
12941294 blk_finish_plug(&plug);
12951295 }
....@@ -1396,24 +1396,12 @@
13961396 static void stop_worker(struct era *era)
13971397 {
13981398 atomic_set(&era->suspended, 1);
1399
- flush_workqueue(era->wq);
1399
+ drain_workqueue(era->wq);
14001400 }
14011401
14021402 /*----------------------------------------------------------------
14031403 * Target methods
14041404 *--------------------------------------------------------------*/
1405
-static int dev_is_congested(struct dm_dev *dev, int bdi_bits)
1406
-{
1407
- struct request_queue *q = bdev_get_queue(dev->bdev);
1408
- return bdi_congested(q->backing_dev_info, bdi_bits);
1409
-}
1410
-
1411
-static int era_is_congested(struct dm_target_callbacks *cb, int bdi_bits)
1412
-{
1413
- struct era *era = container_of(cb, struct era, callbacks);
1414
- return dev_is_congested(era->origin_dev, bdi_bits);
1415
-}
1416
-
14171405 static void era_destroy(struct era *era)
14181406 {
14191407 if (era->md)
....@@ -1532,8 +1520,6 @@
15321520 ti->flush_supported = true;
15331521
15341522 ti->num_discard_bios = 1;
1535
- era->callbacks.congested_fn = era_is_congested;
1536
- dm_table_add_target_callbacks(ti->table, &era->callbacks);
15371523
15381524 return 0;
15391525 }
....@@ -1580,6 +1566,12 @@
15801566 }
15811567
15821568 stop_worker(era);
1569
+
1570
+ r = metadata_commit(era->md);
1571
+ if (r) {
1572
+ DMERR("%s: metadata_commit failed", __func__);
1573
+ /* FIXME: fail mode */
1574
+ }
15831575 }
15841576
15851577 static int era_preresume(struct dm_target *ti)