Port fix: don't round mmap offset to next page
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 22 Aug 2017 19:04:45 +0000 (15:04 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 29 Aug 2017 18:31:25 +0000 (14:31 -0400)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
plugins/ctf/fs-src/data-stream-file.c
plugins/ctf/fs-src/data-stream-file.h

index bae0bd14bdda1eca1a9849500c582412944c7b87..2fddc39dfc9d2ec3cd0bc0f43ce8a43a33476a5b 100644 (file)
@@ -50,7 +50,7 @@
 static inline
 size_t remaining_mmap_bytes(struct ctf_fs_ds_file *ds_file)
 {
-       return ds_file->mmap_valid_len - ds_file->request_offset;
+       return ds_file->mmap_len - ds_file->request_offset;
 }
 
 static
@@ -93,23 +93,20 @@ enum bt_ctf_notif_iter_medium_status ds_file_mmap_next(
                }
 
                /*
-                * mmap_valid_len is guaranteed to be page-aligned except on the
+                * mmap_len is guaranteed to be page-aligned except on the
                 * last mapping where it may not be possible (since the file's
                 * size itself may not be a page multiple).
                 */
-               ds_file->mmap_offset += ds_file->mmap_valid_len;
+               ds_file->mmap_offset += ds_file->mmap_len;
                ds_file->request_offset = 0;
        }
 
-       ds_file->mmap_valid_len = MIN(ds_file->file->size - ds_file->mmap_offset,
+       ds_file->mmap_len = MIN(ds_file->file->size - ds_file->mmap_offset,
                        ds_file->mmap_max_len);
-       if (ds_file->mmap_valid_len == 0) {
+       if (ds_file->mmap_len == 0) {
                ret = BT_CTF_NOTIF_ITER_MEDIUM_STATUS_EOF;
                goto end;
        }
-       /* Round up to next page, assuming page size being a power of 2. */
-       ds_file->mmap_len = (ds_file->mmap_valid_len + page_size - 1)
-                       & ~(page_size - 1);
        /* Map new region */
        assert(ds_file->mmap_len);
        ds_file->mmap_addr = bt_mmap((void *) 0, ds_file->mmap_len,
index 56397dff46d31c351be035119ad14967706b9049..1d3e51e68385e70a8c5b4afcdd0d0f3985a02941 100644 (file)
@@ -105,12 +105,9 @@ struct ctf_fs_ds_file {
         */
        size_t mmap_max_len;
 
-       /* Length of the current mapping. */
+       /* Length of the current mapping. Never exceeds the file's length. */
        size_t mmap_len;
 
-       /* Length of the current mapping which *exists* in the backing file. */
-       size_t mmap_valid_len;
-
        /* Offset in the file where the current mapping starts. */
        off_t mmap_offset;
 
This page took 0.025586 seconds and 4 git commands to generate.