1. 19 Sep, 2023 7 commits
  2. 03 Aug, 2023 3 commits
  3. 02 Aug, 2023 2 commits
  4. 31 Jul, 2023 12 commits
    • Nils Goroll's avatar
      Add a hall of fame · f3f60c0e
      Nils Goroll authored
      f3f60c0e
    • Nils Goroll's avatar
      Unfortunate Flexelinting · c113a423
      Nils Goroll authored
      I have tried hard to make value tracking understand the code, but to
      no avail. It seems, for example
      
      	assert(n <= 56)
      
      and later
      	assert(n > 0)
      
      will just lead to flexelint knowning 1? but not 56 as the limit.
      c113a423
    • Nils Goroll's avatar
      9572fc70
    • Nils Goroll's avatar
      Flexelinting: Avoid temporary out of bounds pointer · 0c6399b7
      Nils Goroll authored
      it was never accessed, but triggered flexelint
      0c6399b7
    • Nils Goroll's avatar
      Correct stack regionlist size used during fellow_log_entries_prep() · f62133cc
      Nils Goroll authored
      First and foremost, fellow_log_prep_max_regions was defined wrong:
      
      Except in fellow_cache_test, we call log submission with a maximum of
      FELLOW_DISK_LOG_BLOCK_ENTRIES = 56 DLEs. The intention of the
      fellow_log_prep_max_regions was was to allocate space to track return
      of the maximum number of regions possibly contained. The exact maximum
      would be (FELLOW_DISK_LOG_BLOCK_ENTRIES - 1) * DLE_REG_NREGION + 1 =
      (55 * 4) + 1 = 221, which is higher than FELLOW_DISK_LOG_BLOCK_ENTRIES
      * DLE_BAN_REG_NREGION = 56 * 3 = 168.
      
      Yet it seems prudent to not reply on any fixed maximum, and also our
      test cases call for a higher value, so we now define the maximum three
      times the actually used value, and also ensure that we batch the code
      to this size.
      
      In addition, one assertion in fellow_log_entries_prep() was wrong (it
      compared a number of DLEs with a number of regions).
      
      We also tighten some assertions to help future analysis of possible
      issues in this area:
      
      - Ensure that the data path via fellow_log_entries_prep() only ever
        uses a region list on the stack.
      
      - By using the regionlist_onlystk_add() macro, ensure that we hit an
        assertion on the array on stack, rather than one on the regionlist
        pointer.
      
      Diff best viewed with -b
      
      Fixes #18
      f62133cc
    • Nils Goroll's avatar
      Rename for clarity · d5e53eac
      Nils Goroll authored
      Related to #18
      d5e53eac
    • Nils Goroll's avatar
      Tighten DLE array sizing · 3bdbeede
      Nils Goroll authored
      We should do this right and not over-allocate, this is just confusing.
      3bdbeede
    • Nils Goroll's avatar
      Add miniobj check · 99ebbda3
      Nils Goroll authored
      Motivated by #18, but does not fix the root cause yet
      
      For the call path in the bug ticket, the stack regionlist is supposed
      to be big enough and the root cause is that it is not. But at any
      rate, for that call path, the regionlist is OK to be NULL and
      regionlist_add() should never be called.
      
      If, however, it _is_ called, the regionlist can't be NULL.
      99ebbda3
    • Nils Goroll's avatar
      403819a3
    • Nils Goroll's avatar
      Call try_flags() even when there are no flags to try · 44929e67
      Nils Goroll authored
      Avoids:
      
      fellow_io_uring.c:234:1: error: ‘try_flag’ defined but not used [-Werror=unused-function]
        234 | try_flag(unsigned flag)
            | ^~~~~~~~
      44929e67
    • Nils Goroll's avatar
      Batch LRU changes · ea397ae7
      Nils Goroll authored
      the lru_mtx is our most contended mtx.
      
      As a first improvement, batch changes to LRU for multiple segments
      and maintain the effective change locally outside the lru mtx (but
      while holding the obj mtx).
      ea397ae7
    • Nils Goroll's avatar
      Minor refactor · e73e97da
      Nils Goroll authored
      e73e97da
  5. 24 Jul, 2023 16 commits