If you need to fill small "donut holes" you might try the buffer-out/buffer-in trick. You create a buffer of your polygons just large enough to fill the holes. Then buffer that polygon layer again with the same value but negative (i.e. buffer inside). The problem with this method is that is does change the outer boundary slightly. If the holes are small, this might not make too much of a difference.
(From what you describe as "rings", they seem to empty areas, not part of the surrounding polygon, so v.clean tool=rmarea won't work)