conn_free (conn);
create_directory (FCacheEntry *dir_entry,		  const char *name, AFSStoreStatus *store_attr,		  VenusFid *child_fid, AFSFetchStatus *fetch_attr,		  CredCacheEntry *ce){    int ret = 0;    ConnCacheEntry *conn;    AFSFid OutFid;    FCacheEntry *child_entry;    AFSFetchStatus status;    AFSCallBack callback;    AFSVolSync volsync;    assert (CheckLock(&dir_entry->lock) == -1);    conn = findconn (dir_entry, ce);    if (conn == NULL)	return ENETDOWN;    ret = RXAFS_MakeDir (conn->connection,			 &dir_entry->fid.fid,			 name,			 store_attr,			 &OutFid,			 fetch_attr,			 &status,			 &callback,			 &volsync);    if (ret) {	arla_warn (ADEBFCACHE, ret, "MakeDir");	goto out;    }    update_entry (dir_entry, &status, &callback, &volsync,		  rx_HostOf(rx_PeerOf(conn->connection)),		  ce->cred);    child_fid->Cell = dir_entry->fid.Cell;    child_fid->fid  = OutFid;    ret = fcache_get (&child_entry, *child_fid, ce);    if (ret) {	arla_warn (ADEBFCACHE, ret, "fcache_get");	goto out;    }    update_entry (child_entry, fetch_attr, NULL, NULL,		  rx_HostOf(rx_PeerOf(conn->connection)),		  ce->cred);    child_entry->flags.attrp = TRUE;    child_entry->flags.kernelp = TRUE;    ret = adir_mkdir (child_entry, child_fid->fid, dir_entry->fid.fid);    if (ret) {	arla_warn (ADEBFCACHE, ret, "adir_mkdir");	ReleaseWriteLock (&child_entry->lock);	goto out;    }    usedbytes += child_entry->status.Length;    child_entry->flags.datap = TRUE;    child_entry->tokens |= XFS_ATTR_R | XFS_DATA_R | XFS_DATA_W;	    ReleaseWriteLock (&child_entry->lock);out:    conn_free (conn);    return ret;}