hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/fs/ext4/fsmap.c
....@@ -280,7 +280,7 @@
280280
281281 /* Fabricate an rmap entry for the external log device. */
282282 irec.fmr_physical = journal->j_blk_offset;
283
- irec.fmr_length = journal->j_maxlen;
283
+ irec.fmr_length = journal->j_total_len;
284284 irec.fmr_owner = EXT4_FMR_OWN_LOG;
285285 irec.fmr_flags = 0;
286286
....@@ -486,6 +486,8 @@
486486 keys[0].fmr_physical = bofs;
487487 if (keys[1].fmr_physical >= eofs)
488488 keys[1].fmr_physical = eofs - 1;
489
+ if (keys[1].fmr_physical < keys[0].fmr_physical)
490
+ return 0;
489491 start_fsb = keys[0].fmr_physical;
490492 end_fsb = keys[1].fmr_physical;
491493
....@@ -574,8 +576,8 @@
574576 if (fm->fmr_device == 0 || fm->fmr_device == UINT_MAX ||
575577 fm->fmr_device == new_encode_dev(sb->s_bdev->bd_dev))
576578 return true;
577
- if (EXT4_SB(sb)->journal_bdev &&
578
- fm->fmr_device == new_encode_dev(EXT4_SB(sb)->journal_bdev->bd_dev))
579
+ if (EXT4_SB(sb)->s_journal_bdev &&
580
+ fm->fmr_device == new_encode_dev(EXT4_SB(sb)->s_journal_bdev->bd_dev))
579581 return true;
580582 return false;
581583 }
....@@ -629,7 +631,7 @@
629631 {
630632 struct ext4_fsmap dkeys[2]; /* per-dev keys */
631633 struct ext4_getfsmap_dev handlers[EXT4_GETFSMAP_DEVS];
632
- struct ext4_getfsmap_info info = {0};
634
+ struct ext4_getfsmap_info info = { NULL };
633635 int i;
634636 int error = 0;
635637
....@@ -645,9 +647,9 @@
645647 memset(handlers, 0, sizeof(handlers));
646648 handlers[0].gfd_dev = new_encode_dev(sb->s_bdev->bd_dev);
647649 handlers[0].gfd_fn = ext4_getfsmap_datadev;
648
- if (EXT4_SB(sb)->journal_bdev) {
650
+ if (EXT4_SB(sb)->s_journal_bdev) {
649651 handlers[1].gfd_dev = new_encode_dev(
650
- EXT4_SB(sb)->journal_bdev->bd_dev);
652
+ EXT4_SB(sb)->s_journal_bdev->bd_dev);
651653 handlers[1].gfd_fn = ext4_getfsmap_logdev;
652654 }
653655