'Handle HTTP HEAD request.'

@public
@timing_stats(sample_rate=0.1)
def HEAD(self, req):

    (drive, part, account, container, obj) = split_and_validate_path(req, 4, 5, True)
    out_content_type = get_listing_content_type(req)
    if (self.mount_check and (not check_mount(self.root, drive))):
        return HTTPInsufficientStorage(drive=drive, request=req)
    broker = self._get_container_broker(drive, part, account, container, pending_timeout=0.1, stale_reads_ok=True)
    (info, is_deleted) = broker.get_info_is_deleted()
    headers = gen_resp_headers(info, is_deleted=is_deleted)
    if is_deleted:
        return HTTPNotFound(request=req, headers=headers)
    headers.update(((key, value) for (key, (value, timestamp)) in broker.metadata.items() if ((value != '') and ((key.lower() in self.save_headers) or is_sys_or_user_meta('container', key)))))
    headers['Content-Type'] = out_content_type
    resp = HTTPNoContent(request=req, headers=headers, charset='utf-8')
    resp.last_modified = math.ceil(float(headers['X-PUT-Timestamp']))
    return resp
