diff options
author | Eric Biggers <ebiggers@google.com> | 2025-05-11 11:31:33 -0700 |
---|---|---|
committer | Andreas Gruenbacher <agruenba@redhat.com> | 2025-05-22 09:12:27 +0200 |
commit | b6ccde39b1c1292ad4442e9410e2c4c2510fe759 (patch) | |
tree | 1ccd0f647b5343f1ca031de60ab1ba0cef000bc3 | |
parent | 87faee382d294a35f3dad06dd0c27cdbee12cb97 (diff) |
gfs2: avoid inefficient use of crc32_le_shift()
__get_log_header() was using crc32_le_shift() to update a CRC with four
zero bytes. However, this is about 5x slower than just CRC'ing four
zero bytes in the normal way. Just do that instead.
(We could instead make crc32_le_shift() faster on short lengths. But
all its callers do just fine without it, so I'd like to just remove it.)
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
-rw-r--r-- | fs/gfs2/recovery.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/gfs2/recovery.c b/fs/gfs2/recovery.c index f4fe7039f725..9080f1b5f434 100644 --- a/fs/gfs2/recovery.c +++ b/fs/gfs2/recovery.c @@ -118,6 +118,7 @@ void gfs2_revoke_clean(struct gfs2_jdesc *jd) int __get_log_header(struct gfs2_sbd *sdp, const struct gfs2_log_header *lh, unsigned int blkno, struct gfs2_log_header_host *head) { + const u32 zero = 0; u32 hash, crc; if (lh->lh_header.mh_magic != cpu_to_be32(GFS2_MAGIC) || @@ -126,7 +127,7 @@ int __get_log_header(struct gfs2_sbd *sdp, const struct gfs2_log_header *lh, return 1; hash = crc32(~0, lh, LH_V1_SIZE - 4); - hash = ~crc32_le_shift(hash, 4); /* assume lh_hash is zero */ + hash = ~crc32(hash, &zero, 4); /* assume lh_hash is zero */ if (be32_to_cpu(lh->lh_hash) != hash) return 1; |