Skip to content
  • David Sterba's avatar
    btrfs: dev-replace: remove warning for unknown return codes when finished · 4cea9037
    David Sterba authored
    
    
    The fstests btrfs/011 triggered a warning at the end of device replace,
    
      [ 1891.998975] BTRFS warning (device vdd): failed setting block group ro: -28
      [ 1892.038338] BTRFS error (device vdd): btrfs_scrub_dev(/dev/vdd, 1, /dev/vdb) failed -28
      [ 1892.059993] ------------[ cut here ]------------
      [ 1892.063032] WARNING: CPU: 2 PID: 2244 at fs/btrfs/dev-replace.c:506 btrfs_dev_replace_start.cold+0xf9/0x140 [btrfs]
      [ 1892.074346] CPU: 2 PID: 2244 Comm: btrfs Not tainted 5.5.0-rc7-default+ #942
      [ 1892.079956] RIP: 0010:btrfs_dev_replace_start.cold+0xf9/0x140 [btrfs]
    
      [ 1892.096576] RSP: 0018:ffffbb58c7b3fd10 EFLAGS: 00010286
      [ 1892.098311] RAX: 00000000ffffffe4 RBX: 0000000000000001 RCX: 8888888888888889
      [ 1892.100342] RDX: 0000000000000001 RSI: ffff9e889645f5d8 RDI: ffffffff92821080
      [ 1892.102291] RBP: ffff9e889645c000 R08: 000001b8878fe1f6 R09: 0000000000000000
      [ 1892.104239] R10: ffffbb58c7b3fd08 R11: 0000000000000000 R12: ffff9e88a0017000
      [ 1892.106434] R13: ffff9e889645f608 R14: ffff9e88794e1000 R15: ffff9e88a07b5200
      [ 1892.108642] FS:  00007fcaed3f18c0(0000) GS:ffff9e88bda00000(0000) knlGS:0000000000000000
      [ 1892.111558] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 1892.113492] CR2: 00007f52509ff420 CR3: 00000000603dd002 CR4: 0000000000160ee0
    
      [ 1892.115814] Call Trace:
      [ 1892.116896]  btrfs_dev_replace_by_ioctl+0x35/0x60 [btrfs]
      [ 1892.118962]  btrfs_ioctl+0x1d62/0x2550 [btrfs]
    
    caused by the previous patch ("btrfs: scrub: Require mandatory block
    group RO for dev-replace"). Hitting ENOSPC is possible and could happen
    when the block group is set read-only, preventing NOCOW writes to the
    area that's being accessed by dev-replace.
    
    This has happend with scratch devices of size 12G but not with 5G and
    20G, so this is depends on timing and other activity on the filesystem.
    The whole replace operation is restartable, the space state should be
    examined by the user in any case.
    
    The error code is propagated back to the ioctl caller so the kernel
    warning is causing false alerts.
    
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    4cea9037