• Q
    btrfs: add extra error messages to cover non-ENOMEM errors from device_add_list() · ed02363f
    Qu Wenruo 提交于
    [BUG]
    When test case btrfs/219 (aka, mount a registered device but with a lower
    generation) failed, there is not any useful information for the end user
    to find out what's going wrong.
    
    The mount failure just looks like this:
    
      #  mount -o loop /tmp/219.img2 /mnt/btrfs/
      mount: /mnt/btrfs: mount(2) system call failed: File exists.
             dmesg(1) may have more information after failed mount system call.
    
    While the dmesg contains nothing but the loop device change:
    
      loop1: detected capacity change from 0 to 524288
    
    [CAUSE]
    In device_list_add() we have a lot of extra checks to reject invalid
    cases.
    
    That function also contains the regular device scan result like the
    following prompt:
    
      BTRFS: device fsid 6222333e-f9f1-47e6-b306-55ddd4dcaef4 devid 1 transid 8 /dev/loop0 scanned by systemd-udevd (3027)
    
    But unfortunately not all errors have their own error messages, thus if
    we hit something wrong in device_add_list(), there may be no error
    messages at all.
    
    [FIX]
    Add errors message for all non-ENOMEM errors.
    
    For ENOMEM, I'd say we're in a much worse situation, and there should be
    some OOM messages way before our call sites.
    
    CC: stable@vger.kernel.org # 6.0+
    Signed-off-by: NQu Wenruo <wqu@suse.com>
    Reviewed-by: NDavid Sterba <dsterba@suse.com>
    Signed-off-by: NDavid Sterba <dsterba@suse.com>
    ed02363f
volumes.c 219.1 KB