]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/io.c
tdb2: handle non-transaction-page-aligned sizes in recovery.
[ccan] / ccan / tdb2 / io.c
index bb3d2192829dc504a885e06176f6a2e275c2bcd8..31756de341d8fd43d17a41d57c41284cbb650227 100644 (file)
@@ -48,8 +48,13 @@ void tdb_mmap(struct tdb_context *tdb)
        if (tdb->flags & TDB_NOMMAP)
                return;
 
-       tdb->file->map_ptr = mmap(NULL, tdb->file->map_size, tdb->mmap_flags,
-                                 MAP_SHARED, tdb->file->fd, 0);
+       /* size_t can be smaller than off_t. */
+       if ((size_t)tdb->file->map_size == tdb->file->map_size) {
+               tdb->file->map_ptr = mmap(NULL, tdb->file->map_size,
+                                         tdb->mmap_flags,
+                                         MAP_SHARED, tdb->file->fd, 0);
+       } else
+               tdb->file->map_ptr = MAP_FAILED;
 
        /*
         * NB. When mmap fails it returns MAP_FAILED *NOT* NULL !!!!
@@ -592,12 +597,6 @@ void tdb_inc_seqnum(struct tdb_context *tdb)
        }
 }
 
-void add_stat_(struct tdb_context *tdb, uint64_t *s, size_t val)
-{
-       if ((uintptr_t)s < (uintptr_t)tdb->stats + tdb->stats->size)
-               *s += val;
-}
-
 static const struct tdb_methods io_methods = {
        tdb_read,
        tdb_write,