The branch main has been updated by mckusick:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=8c22cf9b0997566ff6f576cfc9296b29bb055f65

commit 8c22cf9b0997566ff6f576cfc9296b29bb055f65
Author:     Kirk McKusick <mckus...@freebsd.org>
AuthorDate: 2021-01-26 19:46:38 +0000
Commit:     Kirk McKusick <mckus...@freebsd.org>
CommitDate: 2021-01-26 19:46:38 +0000

    Fix fsck_ffs incorrectly reporting "CANNOT READ BLK: NNNN" errors.
    
    A long-standing bug in Pass 1 of fsck_ffs in which it is reading in
    blocks of inodes to check their block pointers. It failed to round
    up the size of the read to a disk block size. When disks would
    accept 512-byte aligned reads, the bug rarely manifested itself.
    But many recent disks will no longer accept 512-byte aligned reads
    but require 4096-byte aligned reads, so the failure to properly
    round-up read sizes to multiples of 4096 bytes makes the error
    much more likely to occur.
    
    Reported by:  Peter Holm and others
    Tested by:    Peter Holm and Rozhuk Ivan
    MFC after:    3 days
    Sponsored by: Netflix
---
 sbin/fsck_ffs/inode.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/sbin/fsck_ffs/inode.c b/sbin/fsck_ffs/inode.c
index 18a015f8187e..60019425c825 100644
--- a/sbin/fsck_ffs/inode.c
+++ b/sbin/fsck_ffs/inode.c
@@ -611,8 +611,9 @@ setinodebuf(int cg, ino_t inosused)
            sizeof(struct ufs1_dinode) : sizeof(struct ufs2_dinode));
        readpercg = inosused / fullcnt;
        partialcnt = inosused % fullcnt;
-       partialsize = partialcnt * ((sblock.fs_magic == FS_UFS1_MAGIC) ?
-           sizeof(struct ufs1_dinode) : sizeof(struct ufs2_dinode));
+       partialsize = fragroundup(&sblock,
+           partialcnt * ((sblock.fs_magic == FS_UFS1_MAGIC) ?
+           sizeof(struct ufs1_dinode) : sizeof(struct ufs2_dinode)));
        if (partialcnt != 0) {
                readpercg++;
        } else {
_______________________________________________
dev-commits-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
To unsubscribe, send any mail to "dev-commits-src-all-unsubscr...@freebsd.org"

Reply via email to