• Josef Bacik's avatar
    btrfs: init device stats for seed devices · 124604eb
    Josef Bacik authored
    We recently started recording device stats across the fleet, and noticed
    a large increase in messages such as this
    
      BTRFS warning (device dm-0): get dev_stats failed, not yet valid
    
    on our tiers that use seed devices for their root devices.  This is
    because we do not initialize the device stats for any seed devices if we
    have a sprout device and mount using that sprout device.  The basic
    steps for reproducing are:
    
      $ mkfs seed device
      $ mount seed device
      # fill seed device
      $ umount seed device
      $ btrfstune -S 1 seed device
      $ mount seed device
      $ btrfs device add -f sprout device /mnt/wherever
      $ umount /mnt/wherever
      $ mount sprout device /mnt/wherever
      $ btrfs device stats /mnt/wherever
    
    This will fail with the above message in dmesg.
    
    Fix this by iterating over the fs_devices->seed if they exist in
    btrfs_init_dev_stats.  This fixed the problem and properly reports the
    stats for both devices.
    Reviewed-by: default avatarAnand Jain <anand.jain@oracle.com>
    Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    [ rename to btrfs_device_init_dev_stats ]
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    124604eb
volumes.c 205 KB