From 4305084d35c40037269787778601b4f91e370529 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Sat, 9 Nov 2019 01:47:24 -0500 Subject: [PATCH] Align the types used by jbd2_journal_bmap and getblk with the kernel This avoids some 32-bit vs 64-bit discrepancies in the function signatures and the types used by their callers. This cleans up some sparse warnings in recovery.c. Signed-off-by: Theodore Ts'o --- debugfs/journal.c | 10 ++++++---- e2fsck/jfs_user.h | 5 +++-- e2fsck/journal.c | 10 ++++++---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/debugfs/journal.c b/debugfs/journal.c index c55a6ef..fa72ec5 100644 --- a/debugfs/journal.c +++ b/debugfs/journal.c @@ -99,7 +99,7 @@ static errcode_t ext2fs_journal_sb_csum_set(journal_t *j, * to use the recovery.c file virtually unchanged from the kernel, so we * don't have to do much to keep kernel and user recovery in sync. */ -int jbd2_journal_bmap(journal_t *journal, blk64_t block, +int jbd2_journal_bmap(journal_t *journal, unsigned long block, unsigned long long *phys) { #ifdef USE_INODE_IO @@ -116,13 +116,15 @@ int jbd2_journal_bmap(journal_t *journal, blk64_t block, } retval = ext2fs_bmap2(inode->i_fs, inode->i_ino, - &inode->i_ext2, NULL, 0, block, 0, &pblk); + &inode->i_ext2, NULL, 0, (blk64_t) block, + 0, &pblk); *phys = pblk; return (int) retval; #endif } -struct buffer_head *getblk(kdev_t kdev, blk64_t blocknr, int blocksize) +struct buffer_head *getblk(kdev_t kdev, unsigned long long blocknr, + int blocksize) { struct buffer_head *bh; int bufsize = sizeof(*bh) + kdev->k_fs->blocksize - @@ -138,7 +140,7 @@ struct buffer_head *getblk(kdev_t kdev, blk64_t blocknr, int blocksize) bh_count++; #endif jfs_debug(4, "getblk for block %llu (%d bytes)(total %d)\n", - (unsigned long long) blocknr, blocksize, bh_count); + blocknr, blocksize, bh_count); bh->b_fs = kdev->k_fs; if (kdev->k_dev == K_DEV_FS) diff --git a/e2fsck/jfs_user.h b/e2fsck/jfs_user.h index 9955578..10baf75 100644 --- a/e2fsck/jfs_user.h +++ b/e2fsck/jfs_user.h @@ -187,9 +187,10 @@ _INLINE_ __u32 hash_64(__u64 val, unsigned int bits) /* * Kernel compatibility functions are defined in journal.c */ -int jbd2_journal_bmap(journal_t *journal, blk64_t block, +int jbd2_journal_bmap(journal_t *journal, unsigned long block, unsigned long long *phys); -struct buffer_head *getblk(kdev_t ctx, blk64_t blocknr, int blocksize); +struct buffer_head *getblk(kdev_t ctx, unsigned long long blocknr, + int blocksize); int sync_blockdev(kdev_t kdev); void ll_rw_block(int rw, int op_flags, int nr, struct buffer_head *bh[]); void mark_buffer_dirty(struct buffer_head *bh); diff --git a/e2fsck/journal.c b/e2fsck/journal.c index 9a0ced5..7d9f1b4 100644 --- a/e2fsck/journal.c +++ b/e2fsck/journal.c @@ -94,7 +94,7 @@ static errcode_t e2fsck_journal_sb_csum_set(journal_t *j, * to use the recovery.c file virtually unchanged from the kernel, so we * don't have to do much to keep kernel and user recovery in sync. */ -int jbd2_journal_bmap(journal_t *journal, blk64_t block, +int jbd2_journal_bmap(journal_t *journal, unsigned long block, unsigned long long *phys) { #ifdef USE_INODE_IO @@ -111,13 +111,15 @@ int jbd2_journal_bmap(journal_t *journal, blk64_t block, } retval= ext2fs_bmap2(inode->i_ctx->fs, inode->i_ino, - &inode->i_ext2, NULL, 0, block, 0, &pblk); + &inode->i_ext2, NULL, 0, (blk64_t) block, + 0, &pblk); *phys = pblk; return -1 * ((int) retval); #endif } -struct buffer_head *getblk(kdev_t kdev, blk64_t blocknr, int blocksize) +struct buffer_head *getblk(kdev_t kdev, unsigned long long blocknr, + int blocksize) { struct buffer_head *bh; int bufsize = sizeof(*bh) + kdev->k_ctx->fs->blocksize - @@ -132,7 +134,7 @@ struct buffer_head *getblk(kdev_t kdev, blk64_t blocknr, int blocksize) bh_count++; #endif jfs_debug(4, "getblk for block %llu (%d bytes)(total %d)\n", - (unsigned long long) blocknr, blocksize, bh_count); + blocknr, blocksize, bh_count); bh->b_ctx = kdev->k_ctx; if (kdev->k_dev == K_DEV_FS) -- 1.8.3.1