Thanks to help from cwillu and mig at freenode, I figured out the solution.
The btrfs filesystem resize command just like resize2fsresize2fs
resizes the filesystem, but keeps the partition limits unchanged. These can be changed using the fdiskfdisk
to delete the btrfs partition and then recreating it with an endpoint which is slighty less than 20Gb smaller than the current endpoint, since the freespace is at the end. Run btrfsckbtrfsck
to ensure everything is fine, otherwise revert back to the previous partition table. There are many tutorials on the web on this process.