The direct cause is, when the initial super RO flag mismatches, we got EBUSY and go btrfs_reconfigure_for_mount(), which flips our RO flag and retry. But since the background process is also re-mounting which can flips the RO flag to a different one, we got -EBUSY again because the newly flipped RO flag conflicts with the newly remounted flag. This involves a lot of VFS calls which can be a little complex, but I'll try if we can do a mutex or something like that to avoid remount/mount to race on the same btrfs.