1. 29 Jun, 2024 6 commits
  2. 28 Jun, 2024 5 commits
  3. 26 Jun, 2024 1 commit
  4. 25 Jun, 2024 3 commits
  5. 23 Jun, 2024 8 commits
  6. 22 Jun, 2024 1 commit
  7. 21 Jun, 2024 7 commits
    • Youling Tang's avatar
      bcachefs: Move the ei_flags setting to after initialization · bd4da046
      Youling Tang authored
      `inode->ei_flags` setting and cleaning should be done after initialization,
      otherwise the operation is invalid.
      
      Fixes: 9ca4853b ("bcachefs: Fix quota support for snapshots")
      Signed-off-by: default avatarYouling Tang <tangyouling@kylinos.cn>
      Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
      bd4da046
    • Kent Overstreet's avatar
      bcachefs: Fix a UAF after write_super() · 2fe79ce7
      Kent Overstreet authored
      write_super() may reallocate the superblock buffer - but
      bch_sb_field_ext was referencing it; don't use it after the write_super
      call.
      
      Reported-by: syzbot+8992fc10a192067b8d8a@syzkaller.appspotmail.com
      Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
      2fe79ce7
    • Kent Overstreet's avatar
      bcachefs: Use bch2_print_string_as_lines for long err · e6b3a655
      Kent Overstreet authored
      printk strings get truncated to 1024 bytes; if we have a long error
      message (journal debug info) we need to use a helper.
      Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
      e6b3a655
    • Kent Overstreet's avatar
      bcachefs: Fix I_NEW warning in race path in bch2_inode_insert() · dd908648
      Kent Overstreet authored
      discard_new_inode() is the correct interface for tearing down an indoe
      that was fully created but not made visible to other threads, but it
      expects I_NEW to be set, which we don't use.
      
      Reported-by: https://github.com/koverstreet/bcachefs/issues/690
      Fixes: bcachefs: Fix race path in bch2_inode_insert()
      Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
      dd908648
    • Kent Overstreet's avatar
    • Kent Overstreet's avatar
      bcachefs: Fix missing alloc_data_type_set() · f648b6c1
      Kent Overstreet authored
      Incorrect bucket state transition in the discard path; when incrementing
      a bucket's generation number that had already been discarded, we were
      forgetting to check if it should be need_gc_gens, not free.
      
      This was caught by the .invalid checks in the transaction commit path,
      causing us to go emergency read only.
      Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
      f648b6c1
    • Kent Overstreet's avatar
      closures: Change BUG_ON() to WARN_ON() · 339b84ab
      Kent Overstreet authored
      If a BUG_ON() can be hit in the wild, it shouldn't be a BUG_ON()
      
      For reference, this has popped up once in the CI, and we'll need more
      info to debug it:
      
      03240 ------------[ cut here ]------------
      03240 kernel BUG at lib/closure.c:21!
      03240 kernel BUG at lib/closure.c:21!
      03240 Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
      03240 Modules linked in:
      03240 CPU: 15 PID: 40534 Comm: kworker/u80:1 Not tainted 6.10.0-rc4-ktest-ga56da697 #25570
      03240 Hardware name: linux,dummy-virt (DT)
      03240 Workqueue: btree_update btree_interior_update_work
      03240 pstate: 00001005 (nzcv daif -PAN -UAO -TCO -DIT +SSBS BTYPE=--)
      03240 pc : closure_put+0x224/0x2a0
      03240 lr : closure_put+0x24/0x2a0
      03240 sp : ffff0000d12071c0
      03240 x29: ffff0000d12071c0 x28: dfff800000000000 x27: ffff0000d1207360
      03240 x26: 0000000000000040 x25: 0000000000000040 x24: 0000000000000040
      03240 x23: ffff0000c1f20180 x22: 0000000000000000 x21: ffff0000c1f20168
      03240 x20: 0000000040000000 x19: ffff0000c1f20140 x18: 0000000000000001
      03240 x17: 0000000000003aa0 x16: 0000000000003ad0 x15: 1fffe0001c326974
      03240 x14: 0000000000000a1e x13: 0000000000000000 x12: 1fffe000183e402d
      03240 x11: ffff6000183e402d x10: dfff800000000000 x9 : ffff6000183e402e
      03240 x8 : 0000000000000001 x7 : 00009fffe7c1bfd3 x6 : ffff0000c1f2016b
      03240 x5 : ffff0000c1f20168 x4 : ffff6000183e402e x3 : ffff800081391954
      03240 x2 : 0000000000000001 x1 : 0000000000000000 x0 : 00000000a8000000
      03240 Call trace:
      03240  closure_put+0x224/0x2a0
      03240  bch2_check_for_deadlock+0x910/0x1028
      03240  bch2_six_check_for_deadlock+0x1c/0x30
      03240  six_lock_slowpath.isra.0+0x29c/0xed0
      03240  six_lock_ip_waiter+0xa8/0xf8
      03240  __bch2_btree_node_lock_write+0x14c/0x298
      03240  bch2_trans_lock_write+0x6d4/0xb10
      03240  __bch2_trans_commit+0x135c/0x5520
      03240  btree_interior_update_work+0x1248/0x1c10
      03240  process_scheduled_works+0x53c/0xd90
      03240  worker_thread+0x370/0x8c8
      03240  kthread+0x258/0x2e8
      03240  ret_from_fork+0x10/0x20
      03240 Code: aa1303e0 d63f0020 a94363f7 17ffff8c (d4210000)
      03240 ---[ end trace 0000000000000000 ]---
      03240 Kernel panic - not syncing: Oops - BUG: Fatal exception
      03240 SMP: stopping secondary CPUs
      03241 SMP: failed to stop secondary CPUs 13,15
      03241 Kernel Offset: disabled
      03241 CPU features: 0x00,00000003,80000008,4240500b
      03241 Memory Limit: none
      03241 ---[ end Kernel panic - not syncing: Oops - BUG: Fatal exception ]---
      03246 ========= FAILED TIMEOUT copygc_torture_no_checksum in 7200s
      Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
      339b84ab
  8. 20 Jun, 2024 2 commits
    • Youling Tang's avatar
      bcachefs: fix alignment of VMA for memory mapped files on THP · c6cab97c
      Youling Tang authored
      With CONFIG_READ_ONLY_THP_FOR_FS, the Linux kernel supports using THPs
      for read-only mmapped files, such as shared libraries. However, the
      kernel makes no attempt to actually align those mappings on 2MB
      boundaries, which makes it impossible to use those THPs most of the
      time. This issue applies to general file mapping THP as well as
      existing setups using CONFIG_READ_ONLY_THP_FOR_FS. This is easily
      fixed by using thp_get_unmapped_area for the unmapped_area function
      in bcachefs, which is what ext2, ext4, fuse, xfs and btrfs all use.
      
      Similar to commit b0c58223 ("btrfs: fix alignment of VMA for
      memory mapped files on THP").
      Signed-off-by: default avatarYouling Tang <tangyouling@kylinos.cn>
      Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
      c6cab97c
    • Kent Overstreet's avatar
      bcachefs: Fix safe errors by default · 33dfafa9
      Kent Overstreet authored
      i.e. the start of automatic self healing:
      
      If errors=continue or fix_safe, we now automatically fix simple errors
      without user intervention.
      
      New error action option: fix_safe
      
      This replaces the existing errors=ro option, which gets a new slot, i.e.
      existing errors=ro users now get errors=fix_safe.
      
      This is currently only enabled for a limited set of errors - initially
      just disk accounting; errors we would never not want to fix, and we
      don't want to require user intervention (i.e. to make sure a bug report
      gets filed).
      
      Errors will still be counted in the superblock, so we (developers) will
      still know they've been occuring if a bug report gets filed (as bug
      reports typically include the errors superblock section).
      
      Eventually we'll be enabling this for a much wider set of errors, after
      we've done thorough error injection testing.
      Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
      33dfafa9
  9. 19 Jun, 2024 7 commits