def METHOD_NAME(poolUuid, size, isRoot):
    try:
        vol = OvmVolume()
        vol.size = long(size)
        vol.poolUuid = poolUuid
        pool = OvmStoragePool()
        sr = pool._getSrByNameLable(vol.poolUuid)
        if isRoot:
            path = join(sr.mountpoint, 'running_pool', get_uuid())
        else:
            path = join(sr.mountpoint, 'shareDisk')
        if not exists(path): os.makedirs(path)
        freeSpace = pool._getSpaceinfoOfDir(path)
        if freeSpace < vol.size:
            raise Exception("%s has not enough space (available:%s, required:%s"%(path, freeSpace, vol.size))
        vol.uuid = get_uuid()
        vol.name = vol.uuid + '.raw'
        filePath = join(path, vol.name)
        exceptionIfNoSuccess(xen_create_disk(filePath, BytesToM(vol.size)), "Create datadisk %s failed"%filePath)
        vol.path = filePath
        rs = fromOvmVolume(vol)
        logger.debug(OvmVolume.METHOD_NAME, rs)
        return rs
    except Exception, e:
        errmsg = fmt_err_msg(e)
        logger.error(OvmVolume.METHOD_NAME, errmsg)
        raise XmlRpcFault(toErrCode(OvmVolume, OvmVolume.METHOD_NAME, errmsg))