The output shows vgextend and lvextend, then xfs_growfs. However, after lvextend, the filesystem must be notified. For XFS, xfs_growfs is the correct tool, but the output does not show that the underlying block device (the LV) was resized first (which it was via lvextend).
Actually, lvextend resizes the LV, and xfs_growfs resizes the filesystem. The missing step is resizing the filesystem? No, xfs_growfs is present. The question likely expects that the filesystem must be mounted for xfs_growfs to work.
But the output shows it worked. Alternatively, the prerequisite is that the LV must be extended before xfs_growfs, which is shown. Perhaps the missing step is that the filesystem should be unmounted? No, xfs_growfs can be run on a mounted filesystem.
Actually, the exhibit is complete; maybe the missing step is that the partition (sdb3) must be added to the VG, which is done via vgextend. The question might be misaligned. Let me adjust: The exhibit shows extending the LV and then growing the filesystem.
The missing step is that the filesystem must be mounted? But it is mounted at /data. The output shows xfs_growfs /data, which works on mounted. So perhaps the missing step is that the partition (sdb3) must be created first? The exhibit shows vgextend /dev/sdb3, implying sdb3 already exists.
Actually, the question should be about resizing an XFS filesystem after extending the LV. The prerequisite is that the filesystem must be mounted (or at least the device must be accessible). But the output shows it's mounted.
Let me rephrase the stem to be more specific.