Skip to content

Commit

Permalink
dmu_buf_will_clone: change assertion to fix 32-bit compiler warning
Browse files Browse the repository at this point in the history
Building `module/zfs/dbuf.c` for 32-bit targets can result in a warning:

    In file included from /workspace/src/sys/contrib/openzfs/include/sys/zfs_context.h:97,
                     from /workspace/src/sys/contrib/openzfs/module/zfs/dbuf.c:32:
    /workspace/src/sys/contrib/openzfs/module/zfs/dbuf.c: In function 'dmu_buf_will_clone':
    /workspace/src/sys/contrib/openzfs/lib/libspl/include/assert.h:116:33: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
      116 |         const uint64_t __left = (uint64_t)(LEFT);                       \
          |                                 ^
    /workspace/src/sys/contrib/openzfs/lib/libspl/include/assert.h:148:25: note: in expansion of macro 'VERIFY0'
      148 | #define ASSERT0         VERIFY0
          |                         ^~~~~~~
    /workspace/src/sys/contrib/openzfs/module/zfs/dbuf.c:2704:9: note: in expansion of macro 'ASSERT0'
     2704 |         ASSERT0(dbuf_find_dirty_eq(db, tx->tx_txg));
          |         ^~~~~~~

This is because `dbuf_find_dirty_eq()` returns a pointer, which if
pointers are 32-bit results in a warning about the cast to `uint64_t`.

Instead, use the regular `ASSERT()` macro, and compare the return value
with `NULL`, which should work regardless of the target's bitness.

Signed-off-by: Dimitry Andric <[email protected]>
  • Loading branch information
DimitryAndric committed Aug 30, 2023
1 parent cad00d5 commit 3fcfd2f
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion module/zfs/dbuf.c
Original file line number Diff line number Diff line change
Expand Up @@ -2701,7 +2701,7 @@ dmu_buf_will_clone(dmu_buf_t *db_fake, dmu_tx_t *tx)
*/
mutex_enter(&db->db_mtx);
VERIFY(!dbuf_undirty(db, tx));
ASSERT0(dbuf_find_dirty_eq(db, tx->tx_txg));
ASSERT(dbuf_find_dirty_eq(db, tx->tx_txg) == NULL);
if (db->db_buf != NULL) {
arc_buf_destroy(db->db_buf, db);
db->db_buf = NULL;
Expand Down

0 comments on commit 3fcfd2f

Please sign in to comment.