def put(self, tpart):
if self.closed:<EOL><INDENT>raise UserCritical(msg='<STR_LIT>',<EOL>hint='<STR_LIT>')<EOL><DEDENT>while True:<EOL><INDENT>too_many = (<EOL>self.concurrency_burden + <NUM_LIT:1> > self.max_concurrency<EOL>or self.member_burden + len(tpart) > self.max_members<EOL>)<EOL>if too_many:<EOL><INDENT>if self.concurrency_burden == <NUM_LIT:0>:<EOL><INDENT>raise UserCritical(<EOL>msg=('<STR_LIT>'<EOL>'<STR_LIT>'),<EOL>hint='<STR_LIT>')<EOL><DEDENT>self._wait()<EOL>gc.collect()<EOL><DEDENT>else:<EOL><INDENT>self._start(tpart)<EOL>return<EOL><DEDENT><DEDENT>
Upload a tar volume

        Blocks if there is too much work outstanding already, and
        raise errors of previously submitted greenlets that die
        unexpectedly.