12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725 |
- # -*- Mode: Python -*-
- ##
- # == QAPI block core definitions (vm unrelated)
- ##
- # QAPI common definitions
- { 'include': 'common.json' }
- ##
- # @SnapshotInfo:
- #
- # @id: unique snapshot id
- #
- # @name: user chosen name
- #
- # @vm-state-size: size of the VM state
- #
- # @date-sec: UTC date of the snapshot in seconds
- #
- # @date-nsec: fractional part in nano seconds to be used with date-sec
- #
- # @vm-clock-sec: VM clock relative to boot in seconds
- #
- # @vm-clock-nsec: fractional part in nano seconds to be used with vm-clock-sec
- #
- # Since: 1.3
- #
- ##
- { 'struct': 'SnapshotInfo',
- 'data': { 'id': 'str', 'name': 'str', 'vm-state-size': 'int',
- 'date-sec': 'int', 'date-nsec': 'int',
- 'vm-clock-sec': 'int', 'vm-clock-nsec': 'int' } }
- ##
- # @ImageInfoSpecificQCow2:
- #
- # @compat: compatibility level
- #
- # @lazy-refcounts: on or off; only valid for compat >= 1.1
- #
- # @corrupt: true if the image has been marked corrupt; only valid for
- # compat >= 1.1 (since 2.2)
- #
- # @refcount-bits: width of a refcount entry in bits (since 2.3)
- #
- # Since: 1.7
- ##
- { 'struct': 'ImageInfoSpecificQCow2',
- 'data': {
- 'compat': 'str',
- '*lazy-refcounts': 'bool',
- '*corrupt': 'bool',
- 'refcount-bits': 'int'
- } }
- ##
- # @ImageInfoSpecificVmdk:
- #
- # @create-type: The create type of VMDK image
- #
- # @cid: Content id of image
- #
- # @parent-cid: Parent VMDK image's cid
- #
- # @extents: List of extent files
- #
- # Since: 1.7
- ##
- { 'struct': 'ImageInfoSpecificVmdk',
- 'data': {
- 'create-type': 'str',
- 'cid': 'int',
- 'parent-cid': 'int',
- 'extents': ['ImageInfo']
- } }
- ##
- # @ImageInfoSpecific:
- #
- # A discriminated record of image format specific information structures.
- #
- # Since: 1.7
- ##
- { 'union': 'ImageInfoSpecific',
- 'data': {
- 'qcow2': 'ImageInfoSpecificQCow2',
- 'vmdk': 'ImageInfoSpecificVmdk',
- # If we need to add block driver specific parameters for
- # LUKS in future, then we'll subclass QCryptoBlockInfoLUKS
- # to define a ImageInfoSpecificLUKS
- 'luks': 'QCryptoBlockInfoLUKS'
- } }
- ##
- # @ImageInfo:
- #
- # Information about a QEMU image file
- #
- # @filename: name of the image file
- #
- # @format: format of the image file
- #
- # @virtual-size: maximum capacity in bytes of the image
- #
- # @actual-size: actual size on disk in bytes of the image
- #
- # @dirty-flag: true if image is not cleanly closed
- #
- # @cluster-size: size of a cluster in bytes
- #
- # @encrypted: true if the image is encrypted
- #
- # @compressed: true if the image is compressed (Since 1.7)
- #
- # @backing-filename: name of the backing file
- #
- # @full-backing-filename: full path of the backing file
- #
- # @backing-filename-format: the format of the backing file
- #
- # @snapshots: list of VM snapshots
- #
- # @backing-image: info of the backing image (since 1.6)
- #
- # @format-specific: structure supplying additional format-specific
- # information (since 1.7)
- #
- # Since: 1.3
- #
- ##
- { 'struct': 'ImageInfo',
- 'data': {'filename': 'str', 'format': 'str', '*dirty-flag': 'bool',
- '*actual-size': 'int', 'virtual-size': 'int',
- '*cluster-size': 'int', '*encrypted': 'bool', '*compressed': 'bool',
- '*backing-filename': 'str', '*full-backing-filename': 'str',
- '*backing-filename-format': 'str', '*snapshots': ['SnapshotInfo'],
- '*backing-image': 'ImageInfo',
- '*format-specific': 'ImageInfoSpecific' } }
- ##
- # @ImageCheck:
- #
- # Information about a QEMU image file check
- #
- # @filename: name of the image file checked
- #
- # @format: format of the image file checked
- #
- # @check-errors: number of unexpected errors occurred during check
- #
- # @image-end-offset: offset (in bytes) where the image ends, this
- # field is present if the driver for the image format
- # supports it
- #
- # @corruptions: number of corruptions found during the check if any
- #
- # @leaks: number of leaks found during the check if any
- #
- # @corruptions-fixed: number of corruptions fixed during the check
- # if any
- #
- # @leaks-fixed: number of leaks fixed during the check if any
- #
- # @total-clusters: total number of clusters, this field is present
- # if the driver for the image format supports it
- #
- # @allocated-clusters: total number of allocated clusters, this
- # field is present if the driver for the image format
- # supports it
- #
- # @fragmented-clusters: total number of fragmented clusters, this
- # field is present if the driver for the image format
- # supports it
- #
- # @compressed-clusters: total number of compressed clusters, this
- # field is present if the driver for the image format
- # supports it
- #
- # Since: 1.4
- #
- ##
- { 'struct': 'ImageCheck',
- 'data': {'filename': 'str', 'format': 'str', 'check-errors': 'int',
- '*image-end-offset': 'int', '*corruptions': 'int', '*leaks': 'int',
- '*corruptions-fixed': 'int', '*leaks-fixed': 'int',
- '*total-clusters': 'int', '*allocated-clusters': 'int',
- '*fragmented-clusters': 'int', '*compressed-clusters': 'int' } }
- ##
- # @MapEntry:
- #
- # Mapping information from a virtual block range to a host file range
- #
- # @start: the start byte of the mapped virtual range
- #
- # @length: the number of bytes of the mapped virtual range
- #
- # @data: whether the mapped range has data
- #
- # @zero: whether the virtual blocks are zeroed
- #
- # @depth: the depth of the mapping
- #
- # @offset: the offset in file that the virtual sectors are mapped to
- #
- # @filename: filename that is referred to by @offset
- #
- # Since: 2.6
- #
- ##
- { 'struct': 'MapEntry',
- 'data': {'start': 'int', 'length': 'int', 'data': 'bool',
- 'zero': 'bool', 'depth': 'int', '*offset': 'int',
- '*filename': 'str' } }
- ##
- # @BlockdevCacheInfo:
- #
- # Cache mode information for a block device
- #
- # @writeback: true if writeback mode is enabled
- # @direct: true if the host page cache is bypassed (O_DIRECT)
- # @no-flush: true if flush requests are ignored for the device
- #
- # Since: 2.3
- ##
- { 'struct': 'BlockdevCacheInfo',
- 'data': { 'writeback': 'bool',
- 'direct': 'bool',
- 'no-flush': 'bool' } }
- ##
- # @BlockDeviceInfo:
- #
- # Information about the backing device for a block device.
- #
- # @file: the filename of the backing device
- #
- # @node-name: the name of the block driver node (Since 2.0)
- #
- # @ro: true if the backing device was open read-only
- #
- # @drv: the name of the block format used to open the backing device. As of
- # 0.14.0 this can be: 'blkdebug', 'bochs', 'cloop', 'cow', 'dmg',
- # 'file', 'file', 'ftp', 'ftps', 'host_cdrom', 'host_device',
- # 'http', 'https', 'luks', 'nbd', 'parallels', 'qcow',
- # 'qcow2', 'raw', 'vdi', 'vmdk', 'vpc', 'vvfat'
- # 2.2: 'archipelago' added, 'cow' dropped
- # 2.3: 'host_floppy' deprecated
- # 2.5: 'host_floppy' dropped
- # 2.6: 'luks' added
- # 2.8: 'replication' added, 'tftp' dropped
- # 2.9: 'archipelago' dropped
- #
- # @backing_file: the name of the backing file (for copy-on-write)
- #
- # @backing_file_depth: number of files in the backing file chain (since: 1.2)
- #
- # @encrypted: true if the backing device is encrypted
- #
- # @encryption_key_missing: true if the backing device is encrypted but an
- # valid encryption key is missing
- #
- # @detect_zeroes: detect and optimize zero writes (Since 2.1)
- #
- # @bps: total throughput limit in bytes per second is specified
- #
- # @bps_rd: read throughput limit in bytes per second is specified
- #
- # @bps_wr: write throughput limit in bytes per second is specified
- #
- # @iops: total I/O operations per second is specified
- #
- # @iops_rd: read I/O operations per second is specified
- #
- # @iops_wr: write I/O operations per second is specified
- #
- # @image: the info of image used (since: 1.6)
- #
- # @bps_max: total throughput limit during bursts,
- # in bytes (Since 1.7)
- #
- # @bps_rd_max: read throughput limit during bursts,
- # in bytes (Since 1.7)
- #
- # @bps_wr_max: write throughput limit during bursts,
- # in bytes (Since 1.7)
- #
- # @iops_max: total I/O operations per second during bursts,
- # in bytes (Since 1.7)
- #
- # @iops_rd_max: read I/O operations per second during bursts,
- # in bytes (Since 1.7)
- #
- # @iops_wr_max: write I/O operations per second during bursts,
- # in bytes (Since 1.7)
- #
- # @bps_max_length: maximum length of the @bps_max burst
- # period, in seconds. (Since 2.6)
- #
- # @bps_rd_max_length: maximum length of the @bps_rd_max
- # burst period, in seconds. (Since 2.6)
- #
- # @bps_wr_max_length: maximum length of the @bps_wr_max
- # burst period, in seconds. (Since 2.6)
- #
- # @iops_max_length: maximum length of the @iops burst
- # period, in seconds. (Since 2.6)
- #
- # @iops_rd_max_length: maximum length of the @iops_rd_max
- # burst period, in seconds. (Since 2.6)
- #
- # @iops_wr_max_length: maximum length of the @iops_wr_max
- # burst period, in seconds. (Since 2.6)
- #
- # @iops_size: an I/O size in bytes (Since 1.7)
- #
- # @group: throttle group name (Since 2.4)
- #
- # @cache: the cache mode used for the block device (since: 2.3)
- #
- # @write_threshold: configured write threshold for the device.
- # 0 if disabled. (Since 2.3)
- #
- # Since: 0.14.0
- #
- ##
- { 'struct': 'BlockDeviceInfo',
- 'data': { 'file': 'str', '*node-name': 'str', 'ro': 'bool', 'drv': 'str',
- '*backing_file': 'str', 'backing_file_depth': 'int',
- 'encrypted': 'bool', 'encryption_key_missing': 'bool',
- 'detect_zeroes': 'BlockdevDetectZeroesOptions',
- 'bps': 'int', 'bps_rd': 'int', 'bps_wr': 'int',
- 'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int',
- 'image': 'ImageInfo',
- '*bps_max': 'int', '*bps_rd_max': 'int',
- '*bps_wr_max': 'int', '*iops_max': 'int',
- '*iops_rd_max': 'int', '*iops_wr_max': 'int',
- '*bps_max_length': 'int', '*bps_rd_max_length': 'int',
- '*bps_wr_max_length': 'int', '*iops_max_length': 'int',
- '*iops_rd_max_length': 'int', '*iops_wr_max_length': 'int',
- '*iops_size': 'int', '*group': 'str', 'cache': 'BlockdevCacheInfo',
- 'write_threshold': 'int' } }
- ##
- # @BlockDeviceIoStatus:
- #
- # An enumeration of block device I/O status.
- #
- # @ok: The last I/O operation has succeeded
- #
- # @failed: The last I/O operation has failed
- #
- # @nospace: The last I/O operation has failed due to a no-space condition
- #
- # Since: 1.0
- ##
- { 'enum': 'BlockDeviceIoStatus', 'data': [ 'ok', 'failed', 'nospace' ] }
- ##
- # @BlockDeviceMapEntry:
- #
- # Entry in the metadata map of the device (returned by "qemu-img map")
- #
- # @start: Offset in the image of the first byte described by this entry
- # (in bytes)
- #
- # @length: Length of the range described by this entry (in bytes)
- #
- # @depth: Number of layers (0 = top image, 1 = top image's backing file, etc.)
- # before reaching one for which the range is allocated. The value is
- # in the range 0 to the depth of the image chain - 1.
- #
- # @zero: the sectors in this range read as zeros
- #
- # @data: reading the image will actually read data from a file (in particular,
- # if @offset is present this means that the sectors are not simply
- # preallocated, but contain actual data in raw format)
- #
- # @offset: if present, the image file stores the data for this range in
- # raw format at the given offset.
- #
- # Since: 1.7
- ##
- { 'struct': 'BlockDeviceMapEntry',
- 'data': { 'start': 'int', 'length': 'int', 'depth': 'int', 'zero': 'bool',
- 'data': 'bool', '*offset': 'int' } }
- ##
- # @DirtyBitmapStatus:
- #
- # An enumeration of possible states that a dirty bitmap can report to the user.
- #
- # @frozen: The bitmap is currently in-use by a backup operation or block job,
- # and is immutable.
- #
- # @disabled: The bitmap is currently in-use by an internal operation and is
- # read-only. It can still be deleted.
- #
- # @active: The bitmap is actively monitoring for new writes, and can be cleared,
- # deleted, or used for backup operations.
- #
- # Since: 2.4
- ##
- { 'enum': 'DirtyBitmapStatus',
- 'data': ['active', 'disabled', 'frozen'] }
- ##
- # @BlockDirtyInfo:
- #
- # Block dirty bitmap information.
- #
- # @name: the name of the dirty bitmap (Since 2.4)
- #
- # @count: number of dirty bytes according to the dirty bitmap
- #
- # @granularity: granularity of the dirty bitmap in bytes (since 1.4)
- #
- # @status: current status of the dirty bitmap (since 2.4)
- #
- # Since: 1.3
- ##
- { 'struct': 'BlockDirtyInfo',
- 'data': {'*name': 'str', 'count': 'int', 'granularity': 'uint32',
- 'status': 'DirtyBitmapStatus'} }
- ##
- # @BlockInfo:
- #
- # Block device information. This structure describes a virtual device and
- # the backing device associated with it.
- #
- # @device: The device name associated with the virtual device.
- #
- # @type: This field is returned only for compatibility reasons, it should
- # not be used (always returns 'unknown')
- #
- # @removable: True if the device supports removable media.
- #
- # @locked: True if the guest has locked this device from having its media
- # removed
- #
- # @tray_open: True if the device's tray is open
- # (only present if it has a tray)
- #
- # @dirty-bitmaps: dirty bitmaps information (only present if the
- # driver has one or more dirty bitmaps) (Since 2.0)
- #
- # @io-status: @BlockDeviceIoStatus. Only present if the device
- # supports it and the VM is configured to stop on errors
- # (supported device models: virtio-blk, IDE, SCSI except
- # scsi-generic)
- #
- # @inserted: @BlockDeviceInfo describing the device if media is
- # present
- #
- # Since: 0.14.0
- ##
- { 'struct': 'BlockInfo',
- 'data': {'device': 'str', 'type': 'str', 'removable': 'bool',
- 'locked': 'bool', '*inserted': 'BlockDeviceInfo',
- '*tray_open': 'bool', '*io-status': 'BlockDeviceIoStatus',
- '*dirty-bitmaps': ['BlockDirtyInfo'] } }
- ##
- # @query-block:
- #
- # Get a list of BlockInfo for all virtual block devices.
- #
- # Returns: a list of @BlockInfo describing each virtual block device
- #
- # Since: 0.14.0
- #
- # Example:
- #
- # -> { "execute": "query-block" }
- # <- {
- # "return":[
- # {
- # "io-status": "ok",
- # "device":"ide0-hd0",
- # "locked":false,
- # "removable":false,
- # "inserted":{
- # "ro":false,
- # "drv":"qcow2",
- # "encrypted":false,
- # "file":"disks/test.qcow2",
- # "backing_file_depth":1,
- # "bps":1000000,
- # "bps_rd":0,
- # "bps_wr":0,
- # "iops":1000000,
- # "iops_rd":0,
- # "iops_wr":0,
- # "bps_max": 8000000,
- # "bps_rd_max": 0,
- # "bps_wr_max": 0,
- # "iops_max": 0,
- # "iops_rd_max": 0,
- # "iops_wr_max": 0,
- # "iops_size": 0,
- # "detect_zeroes": "on",
- # "write_threshold": 0,
- # "image":{
- # "filename":"disks/test.qcow2",
- # "format":"qcow2",
- # "virtual-size":2048000,
- # "backing_file":"base.qcow2",
- # "full-backing-filename":"disks/base.qcow2",
- # "backing-filename-format":"qcow2",
- # "snapshots":[
- # {
- # "id": "1",
- # "name": "snapshot1",
- # "vm-state-size": 0,
- # "date-sec": 10000200,
- # "date-nsec": 12,
- # "vm-clock-sec": 206,
- # "vm-clock-nsec": 30
- # }
- # ],
- # "backing-image":{
- # "filename":"disks/base.qcow2",
- # "format":"qcow2",
- # "virtual-size":2048000
- # }
- # }
- # },
- # "type":"unknown"
- # },
- # {
- # "io-status": "ok",
- # "device":"ide1-cd0",
- # "locked":false,
- # "removable":true,
- # "type":"unknown"
- # },
- # {
- # "device":"floppy0",
- # "locked":false,
- # "removable":true,
- # "type":"unknown"
- # },
- # {
- # "device":"sd0",
- # "locked":false,
- # "removable":true,
- # "type":"unknown"
- # }
- # ]
- # }
- #
- ##
- { 'command': 'query-block', 'returns': ['BlockInfo'] }
- ##
- # @BlockDeviceTimedStats:
- #
- # Statistics of a block device during a given interval of time.
- #
- # @interval_length: Interval used for calculating the statistics,
- # in seconds.
- #
- # @min_rd_latency_ns: Minimum latency of read operations in the
- # defined interval, in nanoseconds.
- #
- # @min_wr_latency_ns: Minimum latency of write operations in the
- # defined interval, in nanoseconds.
- #
- # @min_flush_latency_ns: Minimum latency of flush operations in the
- # defined interval, in nanoseconds.
- #
- # @max_rd_latency_ns: Maximum latency of read operations in the
- # defined interval, in nanoseconds.
- #
- # @max_wr_latency_ns: Maximum latency of write operations in the
- # defined interval, in nanoseconds.
- #
- # @max_flush_latency_ns: Maximum latency of flush operations in the
- # defined interval, in nanoseconds.
- #
- # @avg_rd_latency_ns: Average latency of read operations in the
- # defined interval, in nanoseconds.
- #
- # @avg_wr_latency_ns: Average latency of write operations in the
- # defined interval, in nanoseconds.
- #
- # @avg_flush_latency_ns: Average latency of flush operations in the
- # defined interval, in nanoseconds.
- #
- # @avg_rd_queue_depth: Average number of pending read operations
- # in the defined interval.
- #
- # @avg_wr_queue_depth: Average number of pending write operations
- # in the defined interval.
- #
- # Since: 2.5
- ##
- { 'struct': 'BlockDeviceTimedStats',
- 'data': { 'interval_length': 'int', 'min_rd_latency_ns': 'int',
- 'max_rd_latency_ns': 'int', 'avg_rd_latency_ns': 'int',
- 'min_wr_latency_ns': 'int', 'max_wr_latency_ns': 'int',
- 'avg_wr_latency_ns': 'int', 'min_flush_latency_ns': 'int',
- 'max_flush_latency_ns': 'int', 'avg_flush_latency_ns': 'int',
- 'avg_rd_queue_depth': 'number', 'avg_wr_queue_depth': 'number' } }
- ##
- # @BlockDeviceStats:
- #
- # Statistics of a virtual block device or a block backing device.
- #
- # @rd_bytes: The number of bytes read by the device.
- #
- # @wr_bytes: The number of bytes written by the device.
- #
- # @rd_operations: The number of read operations performed by the device.
- #
- # @wr_operations: The number of write operations performed by the device.
- #
- # @flush_operations: The number of cache flush operations performed by the
- # device (since 0.15.0)
- #
- # @flush_total_time_ns: Total time spend on cache flushes in nano-seconds
- # (since 0.15.0).
- #
- # @wr_total_time_ns: Total time spend on writes in nano-seconds (since 0.15.0).
- #
- # @rd_total_time_ns: Total_time_spend on reads in nano-seconds (since 0.15.0).
- #
- # @wr_highest_offset: The offset after the greatest byte written to the
- # device. The intended use of this information is for
- # growable sparse files (like qcow2) that are used on top
- # of a physical device.
- #
- # @rd_merged: Number of read requests that have been merged into another
- # request (Since 2.3).
- #
- # @wr_merged: Number of write requests that have been merged into another
- # request (Since 2.3).
- #
- # @idle_time_ns: Time since the last I/O operation, in
- # nanoseconds. If the field is absent it means that
- # there haven't been any operations yet (Since 2.5).
- #
- # @failed_rd_operations: The number of failed read operations
- # performed by the device (Since 2.5)
- #
- # @failed_wr_operations: The number of failed write operations
- # performed by the device (Since 2.5)
- #
- # @failed_flush_operations: The number of failed flush operations
- # performed by the device (Since 2.5)
- #
- # @invalid_rd_operations: The number of invalid read operations
- # performed by the device (Since 2.5)
- #
- # @invalid_wr_operations: The number of invalid write operations
- # performed by the device (Since 2.5)
- #
- # @invalid_flush_operations: The number of invalid flush operations
- # performed by the device (Since 2.5)
- #
- # @account_invalid: Whether invalid operations are included in the
- # last access statistics (Since 2.5)
- #
- # @account_failed: Whether failed operations are included in the
- # latency and last access statistics (Since 2.5)
- #
- # @timed_stats: Statistics specific to the set of previously defined
- # intervals of time (Since 2.5)
- #
- # Since: 0.14.0
- ##
- { 'struct': 'BlockDeviceStats',
- 'data': {'rd_bytes': 'int', 'wr_bytes': 'int', 'rd_operations': 'int',
- 'wr_operations': 'int', 'flush_operations': 'int',
- 'flush_total_time_ns': 'int', 'wr_total_time_ns': 'int',
- 'rd_total_time_ns': 'int', 'wr_highest_offset': 'int',
- 'rd_merged': 'int', 'wr_merged': 'int', '*idle_time_ns': 'int',
- 'failed_rd_operations': 'int', 'failed_wr_operations': 'int',
- 'failed_flush_operations': 'int', 'invalid_rd_operations': 'int',
- 'invalid_wr_operations': 'int', 'invalid_flush_operations': 'int',
- 'account_invalid': 'bool', 'account_failed': 'bool',
- 'timed_stats': ['BlockDeviceTimedStats'] } }
- ##
- # @BlockStats:
- #
- # Statistics of a virtual block device or a block backing device.
- #
- # @device: If the stats are for a virtual block device, the name
- # corresponding to the virtual block device.
- #
- # @node-name: The node name of the device. (Since 2.3)
- #
- # @stats: A @BlockDeviceStats for the device.
- #
- # @parent: This describes the file block device if it has one.
- # Contains recursively the statistics of the underlying
- # protocol (e.g. the host file for a qcow2 image). If there is
- # no underlying protocol, this field is omitted
- #
- # @backing: This describes the backing block device if it has one.
- # (Since 2.0)
- #
- # Since: 0.14.0
- ##
- { 'struct': 'BlockStats',
- 'data': {'*device': 'str', '*node-name': 'str',
- 'stats': 'BlockDeviceStats',
- '*parent': 'BlockStats',
- '*backing': 'BlockStats'} }
- ##
- # @query-blockstats:
- #
- # Query the @BlockStats for all virtual block devices.
- #
- # @query-nodes: If true, the command will query all the block nodes
- # that have a node name, in a list which will include "parent"
- # information, but not "backing".
- # If false or omitted, the behavior is as before - query all the
- # device backends, recursively including their "parent" and
- # "backing". (Since 2.3)
- #
- # Returns: A list of @BlockStats for each virtual block devices.
- #
- # Since: 0.14.0
- #
- # Example:
- #
- # -> { "execute": "query-blockstats" }
- # <- {
- # "return":[
- # {
- # "device":"ide0-hd0",
- # "parent":{
- # "stats":{
- # "wr_highest_offset":3686448128,
- # "wr_bytes":9786368,
- # "wr_operations":751,
- # "rd_bytes":122567168,
- # "rd_operations":36772
- # "wr_total_times_ns":313253456
- # "rd_total_times_ns":3465673657
- # "flush_total_times_ns":49653
- # "flush_operations":61,
- # "rd_merged":0,
- # "wr_merged":0,
- # "idle_time_ns":2953431879,
- # "account_invalid":true,
- # "account_failed":false
- # }
- # },
- # "stats":{
- # "wr_highest_offset":2821110784,
- # "wr_bytes":9786368,
- # "wr_operations":692,
- # "rd_bytes":122739200,
- # "rd_operations":36604
- # "flush_operations":51,
- # "wr_total_times_ns":313253456
- # "rd_total_times_ns":3465673657
- # "flush_total_times_ns":49653,
- # "rd_merged":0,
- # "wr_merged":0,
- # "idle_time_ns":2953431879,
- # "account_invalid":true,
- # "account_failed":false
- # }
- # },
- # {
- # "device":"ide1-cd0",
- # "stats":{
- # "wr_highest_offset":0,
- # "wr_bytes":0,
- # "wr_operations":0,
- # "rd_bytes":0,
- # "rd_operations":0
- # "flush_operations":0,
- # "wr_total_times_ns":0
- # "rd_total_times_ns":0
- # "flush_total_times_ns":0,
- # "rd_merged":0,
- # "wr_merged":0,
- # "account_invalid":false,
- # "account_failed":false
- # }
- # },
- # {
- # "device":"floppy0",
- # "stats":{
- # "wr_highest_offset":0,
- # "wr_bytes":0,
- # "wr_operations":0,
- # "rd_bytes":0,
- # "rd_operations":0
- # "flush_operations":0,
- # "wr_total_times_ns":0
- # "rd_total_times_ns":0
- # "flush_total_times_ns":0,
- # "rd_merged":0,
- # "wr_merged":0,
- # "account_invalid":false,
- # "account_failed":false
- # }
- # },
- # {
- # "device":"sd0",
- # "stats":{
- # "wr_highest_offset":0,
- # "wr_bytes":0,
- # "wr_operations":0,
- # "rd_bytes":0,
- # "rd_operations":0
- # "flush_operations":0,
- # "wr_total_times_ns":0
- # "rd_total_times_ns":0
- # "flush_total_times_ns":0,
- # "rd_merged":0,
- # "wr_merged":0,
- # "account_invalid":false,
- # "account_failed":false
- # }
- # }
- # ]
- # }
- #
- ##
- { 'command': 'query-blockstats',
- 'data': { '*query-nodes': 'bool' },
- 'returns': ['BlockStats'] }
- ##
- # @BlockdevOnError:
- #
- # An enumeration of possible behaviors for errors on I/O operations.
- # The exact meaning depends on whether the I/O was initiated by a guest
- # or by a block job
- #
- # @report: for guest operations, report the error to the guest;
- # for jobs, cancel the job
- #
- # @ignore: ignore the error, only report a QMP event (BLOCK_IO_ERROR
- # or BLOCK_JOB_ERROR)
- #
- # @enospc: same as @stop on ENOSPC, same as @report otherwise.
- #
- # @stop: for guest operations, stop the virtual machine;
- # for jobs, pause the job
- #
- # @auto: inherit the error handling policy of the backend (since: 2.7)
- #
- # Since: 1.3
- ##
- { 'enum': 'BlockdevOnError',
- 'data': ['report', 'ignore', 'enospc', 'stop', 'auto'] }
- ##
- # @MirrorSyncMode:
- #
- # An enumeration of possible behaviors for the initial synchronization
- # phase of storage mirroring.
- #
- # @top: copies data in the topmost image to the destination
- #
- # @full: copies data from all images to the destination
- #
- # @none: only copy data written from now on
- #
- # @incremental: only copy data described by the dirty bitmap. Since: 2.4
- #
- # Since: 1.3
- ##
- { 'enum': 'MirrorSyncMode',
- 'data': ['top', 'full', 'none', 'incremental'] }
- ##
- # @BlockJobType:
- #
- # Type of a block job.
- #
- # @commit: block commit job type, see "block-commit"
- #
- # @stream: block stream job type, see "block-stream"
- #
- # @mirror: drive mirror job type, see "drive-mirror"
- #
- # @backup: drive backup job type, see "drive-backup"
- #
- # Since: 1.7
- ##
- { 'enum': 'BlockJobType',
- 'data': ['commit', 'stream', 'mirror', 'backup'] }
- ##
- # @BlockJobInfo:
- #
- # Information about a long-running block device operation.
- #
- # @type: the job type ('stream' for image streaming)
- #
- # @device: The job identifier. Originally the device name but other
- # values are allowed since QEMU 2.7
- #
- # @len: the maximum progress value
- #
- # @busy: false if the job is known to be in a quiescent state, with
- # no pending I/O. Since 1.3.
- #
- # @paused: whether the job is paused or, if @busy is true, will
- # pause itself as soon as possible. Since 1.3.
- #
- # @offset: the current progress value
- #
- # @speed: the rate limit, bytes per second
- #
- # @io-status: the status of the job (since 1.3)
- #
- # @ready: true if the job may be completed (since 2.2)
- #
- # Since: 1.1
- ##
- { 'struct': 'BlockJobInfo',
- 'data': {'type': 'str', 'device': 'str', 'len': 'int',
- 'offset': 'int', 'busy': 'bool', 'paused': 'bool', 'speed': 'int',
- 'io-status': 'BlockDeviceIoStatus', 'ready': 'bool'} }
- ##
- # @query-block-jobs:
- #
- # Return information about long-running block device operations.
- #
- # Returns: a list of @BlockJobInfo for each active block job
- #
- # Since: 1.1
- ##
- { 'command': 'query-block-jobs', 'returns': ['BlockJobInfo'] }
- ##
- # @block_passwd:
- #
- # This command sets the password of a block device that has not been open
- # with a password and requires one.
- #
- # The two cases where this can happen are a block device is created through
- # QEMU's initial command line or a block device is changed through the legacy
- # @change interface.
- #
- # In the event that the block device is created through the initial command
- # line, the VM will start in the stopped state regardless of whether '-S' is
- # used. The intention is for a management tool to query the block devices to
- # determine which ones are encrypted, set the passwords with this command, and
- # then start the guest with the @cont command.
- #
- # Either @device or @node-name must be set but not both.
- #
- # @device: the name of the block backend device to set the password on
- #
- # @node-name: graph node name to set the password on (Since 2.0)
- #
- # @password: the password to use for the device
- #
- # Returns: nothing on success
- # If @device is not a valid block device, DeviceNotFound
- # If @device is not encrypted, DeviceNotEncrypted
- #
- # Notes: Not all block formats support encryption and some that do are not
- # able to validate that a password is correct. Disk corruption may
- # occur if an invalid password is specified.
- #
- # Since: 0.14.0
- #
- # Example:
- #
- # -> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
- # "password": "12345" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'block_passwd', 'data': {'*device': 'str',
- '*node-name': 'str', 'password': 'str'} }
- ##
- # @block_resize:
- #
- # Resize a block image while a guest is running.
- #
- # Either @device or @node-name must be set but not both.
- #
- # @device: the name of the device to get the image resized
- #
- # @node-name: graph node name to get the image resized (Since 2.0)
- #
- # @size: new image size in bytes
- #
- # Returns: nothing on success
- # If @device is not a valid block device, DeviceNotFound
- #
- # Since: 0.14.0
- #
- # Example:
- #
- # -> { "execute": "block_resize",
- # "arguments": { "device": "scratch", "size": 1073741824 } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'block_resize', 'data': { '*device': 'str',
- '*node-name': 'str',
- 'size': 'int' }}
- ##
- # @NewImageMode:
- #
- # An enumeration that tells QEMU how to set the backing file path in
- # a new image file.
- #
- # @existing: QEMU should look for an existing image file.
- #
- # @absolute-paths: QEMU should create a new image with absolute paths
- # for the backing file. If there is no backing file available, the new
- # image will not be backed either.
- #
- # Since: 1.1
- ##
- { 'enum': 'NewImageMode',
- 'data': [ 'existing', 'absolute-paths' ] }
- ##
- # @BlockdevSnapshotSync:
- #
- # Either @device or @node-name must be set but not both.
- #
- # @device: the name of the device to generate the snapshot from.
- #
- # @node-name: graph node name to generate the snapshot from (Since 2.0)
- #
- # @snapshot-file: the target of the new image. If the file exists, or
- # if it is a device, the snapshot will be created in the existing
- # file/device. Otherwise, a new file will be created.
- #
- # @snapshot-node-name: the graph node name of the new image (Since 2.0)
- #
- # @format: the format of the snapshot image, default is 'qcow2'.
- #
- # @mode: whether and how QEMU should create a new image, default is
- # 'absolute-paths'.
- ##
- { 'struct': 'BlockdevSnapshotSync',
- 'data': { '*device': 'str', '*node-name': 'str',
- 'snapshot-file': 'str', '*snapshot-node-name': 'str',
- '*format': 'str', '*mode': 'NewImageMode' } }
- ##
- # @BlockdevSnapshot:
- #
- # @node: device or node name that will have a snapshot created.
- #
- # @overlay: reference to the existing block device that will become
- # the overlay of @node, as part of creating the snapshot.
- # It must not have a current backing file (this can be
- # achieved by passing "backing": "" to blockdev-add).
- #
- # Since: 2.5
- ##
- { 'struct': 'BlockdevSnapshot',
- 'data': { 'node': 'str', 'overlay': 'str' } }
- ##
- # @DriveBackup:
- #
- # @job-id: identifier for the newly-created block job. If
- # omitted, the device name will be used. (Since 2.7)
- #
- # @device: the device name or node-name of a root node which should be copied.
- #
- # @target: the target of the new image. If the file exists, or if it
- # is a device, the existing file/device will be used as the new
- # destination. If it does not exist, a new file will be created.
- #
- # @format: the format of the new destination, default is to
- # probe if @mode is 'existing', else the format of the source
- #
- # @sync: what parts of the disk image should be copied to the destination
- # (all the disk, only the sectors allocated in the topmost image, from a
- # dirty bitmap, or only new I/O).
- #
- # @mode: whether and how QEMU should create a new image, default is
- # 'absolute-paths'.
- #
- # @speed: the maximum speed, in bytes per second
- #
- # @bitmap: the name of dirty bitmap if sync is "incremental".
- # Must be present if sync is "incremental", must NOT be present
- # otherwise. (Since 2.4)
- #
- # @compress: true to compress data, if the target format supports it.
- # (default: false) (since 2.8)
- #
- # @on-source-error: the action to take on an error on the source,
- # default 'report'. 'stop' and 'enospc' can only be used
- # if the block device supports io-status (see BlockInfo).
- #
- # @on-target-error: the action to take on an error on the target,
- # default 'report' (no limitations, since this applies to
- # a different block device than @device).
- #
- # Note: @on-source-error and @on-target-error only affect background
- # I/O. If an error occurs during a guest write request, the device's
- # rerror/werror actions will be used.
- #
- # Since: 1.6
- ##
- { 'struct': 'DriveBackup',
- 'data': { '*job-id': 'str', 'device': 'str', 'target': 'str',
- '*format': 'str', 'sync': 'MirrorSyncMode', '*mode': 'NewImageMode',
- '*speed': 'int', '*bitmap': 'str', '*compress': 'bool',
- '*on-source-error': 'BlockdevOnError',
- '*on-target-error': 'BlockdevOnError' } }
- ##
- # @BlockdevBackup:
- #
- # @job-id: identifier for the newly-created block job. If
- # omitted, the device name will be used. (Since 2.7)
- #
- # @device: the device name or node-name of a root node which should be copied.
- #
- # @target: the device name or node-name of the backup target node.
- #
- # @sync: what parts of the disk image should be copied to the destination
- # (all the disk, only the sectors allocated in the topmost image, or
- # only new I/O).
- #
- # @speed: the maximum speed, in bytes per second. The default is 0,
- # for unlimited.
- #
- # @compress: true to compress data, if the target format supports it.
- # (default: false) (since 2.8)
- #
- # @on-source-error: the action to take on an error on the source,
- # default 'report'. 'stop' and 'enospc' can only be used
- # if the block device supports io-status (see BlockInfo).
- #
- # @on-target-error: the action to take on an error on the target,
- # default 'report' (no limitations, since this applies to
- # a different block device than @device).
- #
- # Note: @on-source-error and @on-target-error only affect background
- # I/O. If an error occurs during a guest write request, the device's
- # rerror/werror actions will be used.
- #
- # Since: 2.3
- ##
- { 'struct': 'BlockdevBackup',
- 'data': { '*job-id': 'str', 'device': 'str', 'target': 'str',
- 'sync': 'MirrorSyncMode',
- '*speed': 'int',
- '*compress': 'bool',
- '*on-source-error': 'BlockdevOnError',
- '*on-target-error': 'BlockdevOnError' } }
- ##
- # @blockdev-snapshot-sync:
- #
- # Generates a synchronous snapshot of a block device.
- #
- # For the arguments, see the documentation of BlockdevSnapshotSync.
- #
- # Returns: nothing on success
- # If @device is not a valid block device, DeviceNotFound
- #
- # Since: 0.14.0
- #
- # Example:
- #
- # -> { "execute": "blockdev-snapshot-sync",
- # "arguments": { "device": "ide-hd0",
- # "snapshot-file":
- # "/some/place/my-image",
- # "format": "qcow2" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'blockdev-snapshot-sync',
- 'data': 'BlockdevSnapshotSync' }
- ##
- # @blockdev-snapshot:
- #
- # Generates a snapshot of a block device.
- #
- # Create a snapshot, by installing 'node' as the backing image of
- # 'overlay'. Additionally, if 'node' is associated with a block
- # device, the block device changes to using 'overlay' as its new active
- # image.
- #
- # For the arguments, see the documentation of BlockdevSnapshot.
- #
- # Since: 2.5
- #
- # Example:
- #
- # -> { "execute": "blockdev-add",
- # "arguments": { "driver": "qcow2",
- # "node-name": "node1534",
- # "file": { "driver": "file",
- # "filename": "hd1.qcow2" },
- # "backing": "" } }
- #
- # <- { "return": {} }
- #
- # -> { "execute": "blockdev-snapshot",
- # "arguments": { "node": "ide-hd0",
- # "overlay": "node1534" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'blockdev-snapshot',
- 'data': 'BlockdevSnapshot' }
- ##
- # @change-backing-file:
- #
- # Change the backing file in the image file metadata. This does not
- # cause QEMU to reopen the image file to reparse the backing filename
- # (it may, however, perform a reopen to change permissions from
- # r/o -> r/w -> r/o, if needed). The new backing file string is written
- # into the image file metadata, and the QEMU internal strings are
- # updated.
- #
- # @image-node-name: The name of the block driver state node of the
- # image to modify. The "device" argument is used
- # to verify "image-node-name" is in the chain
- # described by "device".
- #
- # @device: The device name or node-name of the root node that owns
- # image-node-name.
- #
- # @backing-file: The string to write as the backing file. This
- # string is not validated, so care should be taken
- # when specifying the string or the image chain may
- # not be able to be reopened again.
- #
- # Returns: Nothing on success
- #
- # If "device" does not exist or cannot be determined, DeviceNotFound
- #
- # Since: 2.1
- ##
- { 'command': 'change-backing-file',
- 'data': { 'device': 'str', 'image-node-name': 'str',
- 'backing-file': 'str' } }
- ##
- # @block-commit:
- #
- # Live commit of data from overlay image nodes into backing nodes - i.e.,
- # writes data between 'top' and 'base' into 'base'.
- #
- # @job-id: identifier for the newly-created block job. If
- # omitted, the device name will be used. (Since 2.7)
- #
- # @device: the device name or node-name of a root node
- #
- # @base: The file name of the backing image to write data into.
- # If not specified, this is the deepest backing image.
- #
- # @top: The file name of the backing image within the image chain,
- # which contains the topmost data to be committed down. If
- # not specified, this is the active layer.
- #
- # @backing-file: The backing file string to write into the overlay
- # image of 'top'. If 'top' is the active layer,
- # specifying a backing file string is an error. This
- # filename is not validated.
- #
- # If a pathname string is such that it cannot be
- # resolved by QEMU, that means that subsequent QMP or
- # HMP commands must use node-names for the image in
- # question, as filename lookup methods will fail.
- #
- # If not specified, QEMU will automatically determine
- # the backing file string to use, or error out if
- # there is no obvious choice. Care should be taken
- # when specifying the string, to specify a valid
- # filename or protocol.
- # (Since 2.1)
- #
- # If top == base, that is an error.
- # If top == active, the job will not be completed by itself,
- # user needs to complete the job with the block-job-complete
- # command after getting the ready event. (Since 2.0)
- #
- # If the base image is smaller than top, then the base image
- # will be resized to be the same size as top. If top is
- # smaller than the base image, the base will not be
- # truncated. If you want the base image size to match the
- # size of the smaller top, you can safely truncate it
- # yourself once the commit operation successfully completes.
- #
- # @speed: the maximum speed, in bytes per second
- #
- # @filter-node-name: the node name that should be assigned to the
- # filter driver that the commit job inserts into the graph
- # above @top. If this option is not given, a node name is
- # autogenerated. (Since: 2.9)
- #
- # Returns: Nothing on success
- # If commit or stream is already active on this device, DeviceInUse
- # If @device does not exist, DeviceNotFound
- # If image commit is not supported by this device, NotSupported
- # If @base or @top is invalid, a generic error is returned
- # If @speed is invalid, InvalidParameter
- #
- # Since: 1.3
- #
- # Example:
- #
- # -> { "execute": "block-commit",
- # "arguments": { "device": "virtio0",
- # "top": "/tmp/snap1.qcow2" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'block-commit',
- 'data': { '*job-id': 'str', 'device': 'str', '*base': 'str', '*top': 'str',
- '*backing-file': 'str', '*speed': 'int',
- '*filter-node-name': 'str' } }
- ##
- # @drive-backup:
- #
- # Start a point-in-time copy of a block device to a new destination. The
- # status of ongoing drive-backup operations can be checked with
- # query-block-jobs where the BlockJobInfo.type field has the value 'backup'.
- # The operation can be stopped before it has completed using the
- # block-job-cancel command.
- #
- # Returns: nothing on success
- # If @device is not a valid block device, GenericError
- #
- # Since: 1.6
- #
- # Example:
- #
- # -> { "execute": "drive-backup",
- # "arguments": { "device": "drive0",
- # "sync": "full",
- # "target": "backup.img" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'drive-backup', 'boxed': true,
- 'data': 'DriveBackup' }
- ##
- # @blockdev-backup:
- #
- # Start a point-in-time copy of a block device to a new destination. The
- # status of ongoing blockdev-backup operations can be checked with
- # query-block-jobs where the BlockJobInfo.type field has the value 'backup'.
- # The operation can be stopped before it has completed using the
- # block-job-cancel command.
- #
- # Returns: nothing on success
- # If @device is not a valid block device, DeviceNotFound
- #
- # Since: 2.3
- #
- # Example:
- # -> { "execute": "blockdev-backup",
- # "arguments": { "device": "src-id",
- # "sync": "full",
- # "target": "tgt-id" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'blockdev-backup', 'boxed': true,
- 'data': 'BlockdevBackup' }
- ##
- # @query-named-block-nodes:
- #
- # Get the named block driver list
- #
- # Returns: the list of BlockDeviceInfo
- #
- # Since: 2.0
- #
- # Example:
- #
- # -> { "execute": "query-named-block-nodes" }
- # <- { "return": [ { "ro":false,
- # "drv":"qcow2",
- # "encrypted":false,
- # "file":"disks/test.qcow2",
- # "node-name": "my-node",
- # "backing_file_depth":1,
- # "bps":1000000,
- # "bps_rd":0,
- # "bps_wr":0,
- # "iops":1000000,
- # "iops_rd":0,
- # "iops_wr":0,
- # "bps_max": 8000000,
- # "bps_rd_max": 0,
- # "bps_wr_max": 0,
- # "iops_max": 0,
- # "iops_rd_max": 0,
- # "iops_wr_max": 0,
- # "iops_size": 0,
- # "write_threshold": 0,
- # "image":{
- # "filename":"disks/test.qcow2",
- # "format":"qcow2",
- # "virtual-size":2048000,
- # "backing_file":"base.qcow2",
- # "full-backing-filename":"disks/base.qcow2",
- # "backing-filename-format":"qcow2",
- # "snapshots":[
- # {
- # "id": "1",
- # "name": "snapshot1",
- # "vm-state-size": 0,
- # "date-sec": 10000200,
- # "date-nsec": 12,
- # "vm-clock-sec": 206,
- # "vm-clock-nsec": 30
- # }
- # ],
- # "backing-image":{
- # "filename":"disks/base.qcow2",
- # "format":"qcow2",
- # "virtual-size":2048000
- # }
- # } } ] }
- #
- ##
- { 'command': 'query-named-block-nodes', 'returns': [ 'BlockDeviceInfo' ] }
- ##
- # @drive-mirror:
- #
- # Start mirroring a block device's writes to a new destination. target
- # specifies the target of the new image. If the file exists, or if it
- # is a device, it will be used as the new destination for writes. If
- # it does not exist, a new file will be created. format specifies the
- # format of the mirror image, default is to probe if mode='existing',
- # else the format of the source.
- #
- # Returns: nothing on success
- # If @device is not a valid block device, GenericError
- #
- # Since: 1.3
- #
- # Example:
- #
- # -> { "execute": "drive-mirror",
- # "arguments": { "device": "ide-hd0",
- # "target": "/some/place/my-image",
- # "sync": "full",
- # "format": "qcow2" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'drive-mirror', 'boxed': true,
- 'data': 'DriveMirror' }
- ##
- # @DriveMirror:
- #
- # A set of parameters describing drive mirror setup.
- #
- # @job-id: identifier for the newly-created block job. If
- # omitted, the device name will be used. (Since 2.7)
- #
- # @device: the device name or node-name of a root node whose writes should be
- # mirrored.
- #
- # @target: the target of the new image. If the file exists, or if it
- # is a device, the existing file/device will be used as the new
- # destination. If it does not exist, a new file will be created.
- #
- # @format: the format of the new destination, default is to
- # probe if @mode is 'existing', else the format of the source
- #
- # @node-name: the new block driver state node name in the graph
- # (Since 2.1)
- #
- # @replaces: with sync=full graph node name to be replaced by the new
- # image when a whole image copy is done. This can be used to repair
- # broken Quorum files. (Since 2.1)
- #
- # @mode: whether and how QEMU should create a new image, default is
- # 'absolute-paths'.
- #
- # @speed: the maximum speed, in bytes per second
- #
- # @sync: what parts of the disk image should be copied to the destination
- # (all the disk, only the sectors allocated in the topmost image, or
- # only new I/O).
- #
- # @granularity: granularity of the dirty bitmap, default is 64K
- # if the image format doesn't have clusters, 4K if the clusters
- # are smaller than that, else the cluster size. Must be a
- # power of 2 between 512 and 64M (since 1.4).
- #
- # @buf-size: maximum amount of data in flight from source to
- # target (since 1.4).
- #
- # @on-source-error: the action to take on an error on the source,
- # default 'report'. 'stop' and 'enospc' can only be used
- # if the block device supports io-status (see BlockInfo).
- #
- # @on-target-error: the action to take on an error on the target,
- # default 'report' (no limitations, since this applies to
- # a different block device than @device).
- # @unmap: Whether to try to unmap target sectors where source has
- # only zero. If true, and target unallocated sectors will read as zero,
- # target image sectors will be unmapped; otherwise, zeroes will be
- # written. Both will result in identical contents.
- # Default is true. (Since 2.4)
- #
- # Since: 1.3
- ##
- { 'struct': 'DriveMirror',
- 'data': { '*job-id': 'str', 'device': 'str', 'target': 'str',
- '*format': 'str', '*node-name': 'str', '*replaces': 'str',
- 'sync': 'MirrorSyncMode', '*mode': 'NewImageMode',
- '*speed': 'int', '*granularity': 'uint32',
- '*buf-size': 'int', '*on-source-error': 'BlockdevOnError',
- '*on-target-error': 'BlockdevOnError',
- '*unmap': 'bool' } }
- ##
- # @BlockDirtyBitmap:
- #
- # @node: name of device/node which the bitmap is tracking
- #
- # @name: name of the dirty bitmap
- #
- # Since: 2.4
- ##
- { 'struct': 'BlockDirtyBitmap',
- 'data': { 'node': 'str', 'name': 'str' } }
- ##
- # @BlockDirtyBitmapAdd:
- #
- # @node: name of device/node which the bitmap is tracking
- #
- # @name: name of the dirty bitmap
- #
- # @granularity: the bitmap granularity, default is 64k for
- # block-dirty-bitmap-add
- #
- # Since: 2.4
- ##
- { 'struct': 'BlockDirtyBitmapAdd',
- 'data': { 'node': 'str', 'name': 'str', '*granularity': 'uint32' } }
- ##
- # @block-dirty-bitmap-add:
- #
- # Create a dirty bitmap with a name on the node, and start tracking the writes.
- #
- # Returns: nothing on success
- # If @node is not a valid block device or node, DeviceNotFound
- # If @name is already taken, GenericError with an explanation
- #
- # Since: 2.4
- #
- # Example:
- #
- # -> { "execute": "block-dirty-bitmap-add",
- # "arguments": { "node": "drive0", "name": "bitmap0" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'block-dirty-bitmap-add',
- 'data': 'BlockDirtyBitmapAdd' }
- ##
- # @block-dirty-bitmap-remove:
- #
- # Stop write tracking and remove the dirty bitmap that was created
- # with block-dirty-bitmap-add.
- #
- # Returns: nothing on success
- # If @node is not a valid block device or node, DeviceNotFound
- # If @name is not found, GenericError with an explanation
- # if @name is frozen by an operation, GenericError
- #
- # Since: 2.4
- #
- # Example:
- #
- # -> { "execute": "block-dirty-bitmap-remove",
- # "arguments": { "node": "drive0", "name": "bitmap0" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'block-dirty-bitmap-remove',
- 'data': 'BlockDirtyBitmap' }
- ##
- # @block-dirty-bitmap-clear:
- #
- # Clear (reset) a dirty bitmap on the device, so that an incremental
- # backup from this point in time forward will only backup clusters
- # modified after this clear operation.
- #
- # Returns: nothing on success
- # If @node is not a valid block device, DeviceNotFound
- # If @name is not found, GenericError with an explanation
- #
- # Since: 2.4
- #
- # Example:
- #
- # -> { "execute": "block-dirty-bitmap-clear",
- # "arguments": { "node": "drive0", "name": "bitmap0" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'block-dirty-bitmap-clear',
- 'data': 'BlockDirtyBitmap' }
- ##
- # @blockdev-mirror:
- #
- # Start mirroring a block device's writes to a new destination.
- #
- # @job-id: identifier for the newly-created block job. If
- # omitted, the device name will be used. (Since 2.7)
- #
- # @device: The device name or node-name of a root node whose writes should be
- # mirrored.
- #
- # @target: the id or node-name of the block device to mirror to. This mustn't be
- # attached to guest.
- #
- # @replaces: with sync=full graph node name to be replaced by the new
- # image when a whole image copy is done. This can be used to repair
- # broken Quorum files.
- #
- # @speed: the maximum speed, in bytes per second
- #
- # @sync: what parts of the disk image should be copied to the destination
- # (all the disk, only the sectors allocated in the topmost image, or
- # only new I/O).
- #
- # @granularity: granularity of the dirty bitmap, default is 64K
- # if the image format doesn't have clusters, 4K if the clusters
- # are smaller than that, else the cluster size. Must be a
- # power of 2 between 512 and 64M
- #
- # @buf-size: maximum amount of data in flight from source to
- # target
- #
- # @on-source-error: the action to take on an error on the source,
- # default 'report'. 'stop' and 'enospc' can only be used
- # if the block device supports io-status (see BlockInfo).
- #
- # @on-target-error: the action to take on an error on the target,
- # default 'report' (no limitations, since this applies to
- # a different block device than @device).
- #
- # @filter-node-name: the node name that should be assigned to the
- # filter driver that the mirror job inserts into the graph
- # above @device. If this option is not given, a node name is
- # autogenerated. (Since: 2.9)
- #
- # Returns: nothing on success.
- #
- # Since: 2.6
- #
- # Example:
- #
- # -> { "execute": "blockdev-mirror",
- # "arguments": { "device": "ide-hd0",
- # "target": "target0",
- # "sync": "full" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'blockdev-mirror',
- 'data': { '*job-id': 'str', 'device': 'str', 'target': 'str',
- '*replaces': 'str',
- 'sync': 'MirrorSyncMode',
- '*speed': 'int', '*granularity': 'uint32',
- '*buf-size': 'int', '*on-source-error': 'BlockdevOnError',
- '*on-target-error': 'BlockdevOnError',
- '*filter-node-name': 'str' } }
- ##
- # @block_set_io_throttle:
- #
- # Change I/O throttle limits for a block drive.
- #
- # Since QEMU 2.4, each device with I/O limits is member of a throttle
- # group.
- #
- # If two or more devices are members of the same group, the limits
- # will apply to the combined I/O of the whole group in a round-robin
- # fashion. Therefore, setting new I/O limits to a device will affect
- # the whole group.
- #
- # The name of the group can be specified using the 'group' parameter.
- # If the parameter is unset, it is assumed to be the current group of
- # that device. If it's not in any group yet, the name of the device
- # will be used as the name for its group.
- #
- # The 'group' parameter can also be used to move a device to a
- # different group. In this case the limits specified in the parameters
- # will be applied to the new group only.
- #
- # I/O limits can be disabled by setting all of them to 0. In this case
- # the device will be removed from its group and the rest of its
- # members will not be affected. The 'group' parameter is ignored.
- #
- # Returns: Nothing on success
- # If @device is not a valid block device, DeviceNotFound
- #
- # Since: 1.1
- #
- # Example:
- #
- # -> { "execute": "block_set_io_throttle",
- # "arguments": { "id": "ide0-1-0",
- # "bps": 1000000,
- # "bps_rd": 0,
- # "bps_wr": 0,
- # "iops": 0,
- # "iops_rd": 0,
- # "iops_wr": 0,
- # "bps_max": 8000000,
- # "bps_rd_max": 0,
- # "bps_wr_max": 0,
- # "iops_max": 0,
- # "iops_rd_max": 0,
- # "iops_wr_max": 0,
- # "bps_max_length": 60,
- # "iops_size": 0 } }
- # <- { "return": {} }
- ##
- { 'command': 'block_set_io_throttle', 'boxed': true,
- 'data': 'BlockIOThrottle' }
- ##
- # @BlockIOThrottle:
- #
- # A set of parameters describing block throttling.
- #
- # @device: Block device name (deprecated, use @id instead)
- #
- # @id: The name or QOM path of the guest device (since: 2.8)
- #
- # @bps: total throughput limit in bytes per second
- #
- # @bps_rd: read throughput limit in bytes per second
- #
- # @bps_wr: write throughput limit in bytes per second
- #
- # @iops: total I/O operations per second
- #
- # @iops_rd: read I/O operations per second
- #
- # @iops_wr: write I/O operations per second
- #
- # @bps_max: total throughput limit during bursts,
- # in bytes (Since 1.7)
- #
- # @bps_rd_max: read throughput limit during bursts,
- # in bytes (Since 1.7)
- #
- # @bps_wr_max: write throughput limit during bursts,
- # in bytes (Since 1.7)
- #
- # @iops_max: total I/O operations per second during bursts,
- # in bytes (Since 1.7)
- #
- # @iops_rd_max: read I/O operations per second during bursts,
- # in bytes (Since 1.7)
- #
- # @iops_wr_max: write I/O operations per second during bursts,
- # in bytes (Since 1.7)
- #
- # @bps_max_length: maximum length of the @bps_max burst
- # period, in seconds. It must only
- # be set if @bps_max is set as well.
- # Defaults to 1. (Since 2.6)
- #
- # @bps_rd_max_length: maximum length of the @bps_rd_max
- # burst period, in seconds. It must only
- # be set if @bps_rd_max is set as well.
- # Defaults to 1. (Since 2.6)
- #
- # @bps_wr_max_length: maximum length of the @bps_wr_max
- # burst period, in seconds. It must only
- # be set if @bps_wr_max is set as well.
- # Defaults to 1. (Since 2.6)
- #
- # @iops_max_length: maximum length of the @iops burst
- # period, in seconds. It must only
- # be set if @iops_max is set as well.
- # Defaults to 1. (Since 2.6)
- #
- # @iops_rd_max_length: maximum length of the @iops_rd_max
- # burst period, in seconds. It must only
- # be set if @iops_rd_max is set as well.
- # Defaults to 1. (Since 2.6)
- #
- # @iops_wr_max_length: maximum length of the @iops_wr_max
- # burst period, in seconds. It must only
- # be set if @iops_wr_max is set as well.
- # Defaults to 1. (Since 2.6)
- #
- # @iops_size: an I/O size in bytes (Since 1.7)
- #
- # @group: throttle group name (Since 2.4)
- #
- # Since: 1.1
- ##
- { 'struct': 'BlockIOThrottle',
- 'data': { '*device': 'str', '*id': 'str', 'bps': 'int', 'bps_rd': 'int',
- 'bps_wr': 'int', 'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int',
- '*bps_max': 'int', '*bps_rd_max': 'int',
- '*bps_wr_max': 'int', '*iops_max': 'int',
- '*iops_rd_max': 'int', '*iops_wr_max': 'int',
- '*bps_max_length': 'int', '*bps_rd_max_length': 'int',
- '*bps_wr_max_length': 'int', '*iops_max_length': 'int',
- '*iops_rd_max_length': 'int', '*iops_wr_max_length': 'int',
- '*iops_size': 'int', '*group': 'str' } }
- ##
- # @block-stream:
- #
- # Copy data from a backing file into a block device.
- #
- # The block streaming operation is performed in the background until the entire
- # backing file has been copied. This command returns immediately once streaming
- # has started. The status of ongoing block streaming operations can be checked
- # with query-block-jobs. The operation can be stopped before it has completed
- # using the block-job-cancel command.
- #
- # The node that receives the data is called the top image, can be located in
- # any part of the chain (but always above the base image; see below) and can be
- # specified using its device or node name. Earlier qemu versions only allowed
- # 'device' to name the top level node; presence of the 'base-node' parameter
- # during introspection can be used as a witness of the enhanced semantics
- # of 'device'.
- #
- # If a base file is specified then sectors are not copied from that base file and
- # its backing chain. When streaming completes the image file will have the base
- # file as its backing file. This can be used to stream a subset of the backing
- # file chain instead of flattening the entire image.
- #
- # On successful completion the image file is updated to drop the backing file
- # and the BLOCK_JOB_COMPLETED event is emitted.
- #
- # @job-id: identifier for the newly-created block job. If
- # omitted, the device name will be used. (Since 2.7)
- #
- # @device: the device or node name of the top image
- #
- # @base: the common backing file name.
- # It cannot be set if @base-node is also set.
- #
- # @base-node: the node name of the backing file.
- # It cannot be set if @base is also set. (Since 2.8)
- #
- # @backing-file: The backing file string to write into the top
- # image. This filename is not validated.
- #
- # If a pathname string is such that it cannot be
- # resolved by QEMU, that means that subsequent QMP or
- # HMP commands must use node-names for the image in
- # question, as filename lookup methods will fail.
- #
- # If not specified, QEMU will automatically determine
- # the backing file string to use, or error out if there
- # is no obvious choice. Care should be taken when
- # specifying the string, to specify a valid filename or
- # protocol.
- # (Since 2.1)
- #
- # @speed: the maximum speed, in bytes per second
- #
- # @on-error: the action to take on an error (default report).
- # 'stop' and 'enospc' can only be used if the block device
- # supports io-status (see BlockInfo). Since 1.3.
- #
- # Returns: Nothing on success. If @device does not exist, DeviceNotFound.
- #
- # Since: 1.1
- #
- # Example:
- #
- # -> { "execute": "block-stream",
- # "arguments": { "device": "virtio0",
- # "base": "/tmp/master.qcow2" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'block-stream',
- 'data': { '*job-id': 'str', 'device': 'str', '*base': 'str',
- '*base-node': 'str', '*backing-file': 'str', '*speed': 'int',
- '*on-error': 'BlockdevOnError' } }
- ##
- # @block-job-set-speed:
- #
- # Set maximum speed for a background block operation.
- #
- # This command can only be issued when there is an active block job.
- #
- # Throttling can be disabled by setting the speed to 0.
- #
- # @device: The job identifier. This used to be a device name (hence
- # the name of the parameter), but since QEMU 2.7 it can have
- # other values.
- #
- # @speed: the maximum speed, in bytes per second, or 0 for unlimited.
- # Defaults to 0.
- #
- # Returns: Nothing on success
- # If no background operation is active on this device, DeviceNotActive
- #
- # Since: 1.1
- ##
- { 'command': 'block-job-set-speed',
- 'data': { 'device': 'str', 'speed': 'int' } }
- ##
- # @block-job-cancel:
- #
- # Stop an active background block operation.
- #
- # This command returns immediately after marking the active background block
- # operation for cancellation. It is an error to call this command if no
- # operation is in progress.
- #
- # The operation will cancel as soon as possible and then emit the
- # BLOCK_JOB_CANCELLED event. Before that happens the job is still visible when
- # enumerated using query-block-jobs.
- #
- # For streaming, the image file retains its backing file unless the streaming
- # operation happens to complete just as it is being cancelled. A new streaming
- # operation can be started at a later time to finish copying all data from the
- # backing file.
- #
- # @device: The job identifier. This used to be a device name (hence
- # the name of the parameter), but since QEMU 2.7 it can have
- # other values.
- #
- # @force: whether to allow cancellation of a paused job (default
- # false). Since 1.3.
- #
- # Returns: Nothing on success
- # If no background operation is active on this device, DeviceNotActive
- #
- # Since: 1.1
- ##
- { 'command': 'block-job-cancel', 'data': { 'device': 'str', '*force': 'bool' } }
- ##
- # @block-job-pause:
- #
- # Pause an active background block operation.
- #
- # This command returns immediately after marking the active background block
- # operation for pausing. It is an error to call this command if no
- # operation is in progress. Pausing an already paused job has no cumulative
- # effect; a single block-job-resume command will resume the job.
- #
- # The operation will pause as soon as possible. No event is emitted when
- # the operation is actually paused. Cancelling a paused job automatically
- # resumes it.
- #
- # @device: The job identifier. This used to be a device name (hence
- # the name of the parameter), but since QEMU 2.7 it can have
- # other values.
- #
- # Returns: Nothing on success
- # If no background operation is active on this device, DeviceNotActive
- #
- # Since: 1.3
- ##
- { 'command': 'block-job-pause', 'data': { 'device': 'str' } }
- ##
- # @block-job-resume:
- #
- # Resume an active background block operation.
- #
- # This command returns immediately after resuming a paused background block
- # operation. It is an error to call this command if no operation is in
- # progress. Resuming an already running job is not an error.
- #
- # This command also clears the error status of the job.
- #
- # @device: The job identifier. This used to be a device name (hence
- # the name of the parameter), but since QEMU 2.7 it can have
- # other values.
- #
- # Returns: Nothing on success
- # If no background operation is active on this device, DeviceNotActive
- #
- # Since: 1.3
- ##
- { 'command': 'block-job-resume', 'data': { 'device': 'str' } }
- ##
- # @block-job-complete:
- #
- # Manually trigger completion of an active background block operation. This
- # is supported for drive mirroring, where it also switches the device to
- # write to the target path only. The ability to complete is signaled with
- # a BLOCK_JOB_READY event.
- #
- # This command completes an active background block operation synchronously.
- # The ordering of this command's return with the BLOCK_JOB_COMPLETED event
- # is not defined. Note that if an I/O error occurs during the processing of
- # this command: 1) the command itself will fail; 2) the error will be processed
- # according to the rerror/werror arguments that were specified when starting
- # the operation.
- #
- # A cancelled or paused job cannot be completed.
- #
- # @device: The job identifier. This used to be a device name (hence
- # the name of the parameter), but since QEMU 2.7 it can have
- # other values.
- #
- # Returns: Nothing on success
- # If no background operation is active on this device, DeviceNotActive
- #
- # Since: 1.3
- ##
- { 'command': 'block-job-complete', 'data': { 'device': 'str' } }
- ##
- # @BlockdevDiscardOptions:
- #
- # Determines how to handle discard requests.
- #
- # @ignore: Ignore the request
- # @unmap: Forward as an unmap request
- #
- # Since: 2.9
- ##
- { 'enum': 'BlockdevDiscardOptions',
- 'data': [ 'ignore', 'unmap' ] }
- ##
- # @BlockdevDetectZeroesOptions:
- #
- # Describes the operation mode for the automatic conversion of plain
- # zero writes by the OS to driver specific optimized zero write commands.
- #
- # @off: Disabled (default)
- # @on: Enabled
- # @unmap: Enabled and even try to unmap blocks if possible. This requires
- # also that @BlockdevDiscardOptions is set to unmap for this device.
- #
- # Since: 2.1
- ##
- { 'enum': 'BlockdevDetectZeroesOptions',
- 'data': [ 'off', 'on', 'unmap' ] }
- ##
- # @BlockdevAioOptions:
- #
- # Selects the AIO backend to handle I/O requests
- #
- # @threads: Use qemu's thread pool
- # @native: Use native AIO backend (only Linux and Windows)
- #
- # Since: 2.9
- ##
- { 'enum': 'BlockdevAioOptions',
- 'data': [ 'threads', 'native' ] }
- ##
- # @BlockdevCacheOptions:
- #
- # Includes cache-related options for block devices
- #
- # @direct: enables use of O_DIRECT (bypass the host page cache;
- # default: false)
- # @no-flush: ignore any flush requests for the device (default:
- # false)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevCacheOptions',
- 'data': { '*direct': 'bool',
- '*no-flush': 'bool' } }
- ##
- # @BlockdevDriver:
- #
- # Drivers that are supported in block device operations.
- #
- # @vxhs: Since 2.10
- #
- # Since: 2.9
- ##
- { 'enum': 'BlockdevDriver',
- 'data': [ 'blkdebug', 'blkverify', 'bochs', 'cloop',
- 'dmg', 'file', 'ftp', 'ftps', 'gluster', 'host_cdrom',
- 'host_device', 'http', 'https', 'iscsi', 'luks', 'nbd', 'nfs',
- 'null-aio', 'null-co', 'parallels', 'qcow', 'qcow2', 'qed',
- 'quorum', 'raw', 'rbd', 'replication', 'sheepdog', 'ssh',
- 'vdi', 'vhdx', 'vmdk', 'vpc', 'vvfat', 'vxhs' ] }
- ##
- # @BlockdevOptionsFile:
- #
- # Driver specific block device options for the file backend.
- #
- # @filename: path to the image file
- # @aio: AIO backend (default: threads) (since: 2.8)
- # @locking: whether to enable file locking. If set to 'auto', only enable
- # when Open File Descriptor (OFD) locking API is available
- # (default: auto, since 2.10)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsFile',
- 'data': { 'filename': 'str',
- '*locking': 'OnOffAuto',
- '*aio': 'BlockdevAioOptions' } }
- ##
- # @BlockdevOptionsNull:
- #
- # Driver specific block device options for the null backend.
- #
- # @size: size of the device in bytes.
- # @latency-ns: emulated latency (in nanoseconds) in processing
- # requests. Default to zero which completes requests immediately.
- # (Since 2.4)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsNull',
- 'data': { '*size': 'int', '*latency-ns': 'uint64' } }
- ##
- # @BlockdevOptionsVVFAT:
- #
- # Driver specific block device options for the vvfat protocol.
- #
- # @dir: directory to be exported as FAT image
- # @fat-type: FAT type: 12, 16 or 32
- # @floppy: whether to export a floppy image (true) or
- # partitioned hard disk (false; default)
- # @label: set the volume label, limited to 11 bytes. FAT16 and
- # FAT32 traditionally have some restrictions on labels, which are
- # ignored by most operating systems. Defaults to "QEMU VVFAT".
- # (since 2.4)
- # @rw: whether to allow write operations (default: false)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsVVFAT',
- 'data': { 'dir': 'str', '*fat-type': 'int', '*floppy': 'bool',
- '*label': 'str', '*rw': 'bool' } }
- ##
- # @BlockdevOptionsGenericFormat:
- #
- # Driver specific block device options for image format that have no option
- # besides their data source.
- #
- # @file: reference to or definition of the data source block device
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsGenericFormat',
- 'data': { 'file': 'BlockdevRef' } }
- ##
- # @BlockdevOptionsLUKS:
- #
- # Driver specific block device options for LUKS.
- #
- # @key-secret: the ID of a QCryptoSecret object providing
- # the decryption key (since 2.6). Mandatory except when
- # doing a metadata-only probe of the image.
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsLUKS',
- 'base': 'BlockdevOptionsGenericFormat',
- 'data': { '*key-secret': 'str' } }
- ##
- # @BlockdevOptionsGenericCOWFormat:
- #
- # Driver specific block device options for image format that have no option
- # besides their data source and an optional backing file.
- #
- # @backing: reference to or definition of the backing file block
- # device (if missing, taken from the image file content). It is
- # allowed to pass an empty string here in order to disable the
- # default backing file.
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsGenericCOWFormat',
- 'base': 'BlockdevOptionsGenericFormat',
- 'data': { '*backing': 'BlockdevRef' } }
- ##
- # @Qcow2OverlapCheckMode:
- #
- # General overlap check modes.
- #
- # @none: Do not perform any checks
- #
- # @constant: Perform only checks which can be done in constant time and
- # without reading anything from disk
- #
- # @cached: Perform only checks which can be done without reading anything
- # from disk
- #
- # @all: Perform all available overlap checks
- #
- # Since: 2.9
- ##
- { 'enum': 'Qcow2OverlapCheckMode',
- 'data': [ 'none', 'constant', 'cached', 'all' ] }
- ##
- # @Qcow2OverlapCheckFlags:
- #
- # Structure of flags for each metadata structure. Setting a field to 'true'
- # makes qemu guard that structure against unintended overwriting. The default
- # value is chosen according to the template given.
- #
- # @template: Specifies a template mode which can be adjusted using the other
- # flags, defaults to 'cached'
- #
- # Since: 2.9
- ##
- { 'struct': 'Qcow2OverlapCheckFlags',
- 'data': { '*template': 'Qcow2OverlapCheckMode',
- '*main-header': 'bool',
- '*active-l1': 'bool',
- '*active-l2': 'bool',
- '*refcount-table': 'bool',
- '*refcount-block': 'bool',
- '*snapshot-table': 'bool',
- '*inactive-l1': 'bool',
- '*inactive-l2': 'bool' } }
- ##
- # @Qcow2OverlapChecks:
- #
- # Specifies which metadata structures should be guarded against unintended
- # overwriting.
- #
- # @flags: set of flags for separate specification of each metadata structure
- # type
- #
- # @mode: named mode which chooses a specific set of flags
- #
- # Since: 2.9
- ##
- { 'alternate': 'Qcow2OverlapChecks',
- 'data': { 'flags': 'Qcow2OverlapCheckFlags',
- 'mode': 'Qcow2OverlapCheckMode' } }
- ##
- # @BlockdevOptionsQcow2:
- #
- # Driver specific block device options for qcow2.
- #
- # @lazy-refcounts: whether to enable the lazy refcounts
- # feature (default is taken from the image file)
- #
- # @pass-discard-request: whether discard requests to the qcow2
- # device should be forwarded to the data source
- #
- # @pass-discard-snapshot: whether discard requests for the data source
- # should be issued when a snapshot operation (e.g.
- # deleting a snapshot) frees clusters in the qcow2 file
- #
- # @pass-discard-other: whether discard requests for the data source
- # should be issued on other occasions where a cluster
- # gets freed
- #
- # @overlap-check: which overlap checks to perform for writes
- # to the image, defaults to 'cached' (since 2.2)
- #
- # @cache-size: the maximum total size of the L2 table and
- # refcount block caches in bytes (since 2.2)
- #
- # @l2-cache-size: the maximum size of the L2 table cache in
- # bytes (since 2.2)
- #
- # @refcount-cache-size: the maximum size of the refcount block cache
- # in bytes (since 2.2)
- #
- # @cache-clean-interval: clean unused entries in the L2 and refcount
- # caches. The interval is in seconds. The default value
- # is 0 and it disables this feature (since 2.5)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsQcow2',
- 'base': 'BlockdevOptionsGenericCOWFormat',
- 'data': { '*lazy-refcounts': 'bool',
- '*pass-discard-request': 'bool',
- '*pass-discard-snapshot': 'bool',
- '*pass-discard-other': 'bool',
- '*overlap-check': 'Qcow2OverlapChecks',
- '*cache-size': 'int',
- '*l2-cache-size': 'int',
- '*refcount-cache-size': 'int',
- '*cache-clean-interval': 'int' } }
- ##
- # @BlockdevOptionsSsh:
- #
- # @server: host address
- #
- # @path: path to the image on the host
- #
- # @user: user as which to connect, defaults to current
- # local user name
- #
- # TODO: Expose the host_key_check option in QMP
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsSsh',
- 'data': { 'server': 'InetSocketAddress',
- 'path': 'str',
- '*user': 'str' } }
- ##
- # @BlkdebugEvent:
- #
- # Trigger events supported by blkdebug.
- #
- # Since: 2.9
- ##
- { 'enum': 'BlkdebugEvent', 'prefix': 'BLKDBG',
- 'data': [ 'l1_update', 'l1_grow_alloc_table', 'l1_grow_write_table',
- 'l1_grow_activate_table', 'l2_load', 'l2_update',
- 'l2_update_compressed', 'l2_alloc_cow_read', 'l2_alloc_write',
- 'read_aio', 'read_backing_aio', 'read_compressed', 'write_aio',
- 'write_compressed', 'vmstate_load', 'vmstate_save', 'cow_read',
- 'cow_write', 'reftable_load', 'reftable_grow', 'reftable_update',
- 'refblock_load', 'refblock_update', 'refblock_update_part',
- 'refblock_alloc', 'refblock_alloc_hookup', 'refblock_alloc_write',
- 'refblock_alloc_write_blocks', 'refblock_alloc_write_table',
- 'refblock_alloc_switch_table', 'cluster_alloc',
- 'cluster_alloc_bytes', 'cluster_free', 'flush_to_os',
- 'flush_to_disk', 'pwritev_rmw_head', 'pwritev_rmw_after_head',
- 'pwritev_rmw_tail', 'pwritev_rmw_after_tail', 'pwritev',
- 'pwritev_zero', 'pwritev_done', 'empty_image_prepare' ] }
- ##
- # @BlkdebugInjectErrorOptions:
- #
- # Describes a single error injection for blkdebug.
- #
- # @event: trigger event
- #
- # @state: the state identifier blkdebug needs to be in to
- # actually trigger the event; defaults to "any"
- #
- # @errno: error identifier (errno) to be returned; defaults to
- # EIO
- #
- # @sector: specifies the sector index which has to be affected
- # in order to actually trigger the event; defaults to "any
- # sector"
- #
- # @once: disables further events after this one has been
- # triggered; defaults to false
- #
- # @immediately: fail immediately; defaults to false
- #
- # Since: 2.9
- ##
- { 'struct': 'BlkdebugInjectErrorOptions',
- 'data': { 'event': 'BlkdebugEvent',
- '*state': 'int',
- '*errno': 'int',
- '*sector': 'int',
- '*once': 'bool',
- '*immediately': 'bool' } }
- ##
- # @BlkdebugSetStateOptions:
- #
- # Describes a single state-change event for blkdebug.
- #
- # @event: trigger event
- #
- # @state: the current state identifier blkdebug needs to be in;
- # defaults to "any"
- #
- # @new_state: the state identifier blkdebug is supposed to assume if
- # this event is triggered
- #
- # Since: 2.9
- ##
- { 'struct': 'BlkdebugSetStateOptions',
- 'data': { 'event': 'BlkdebugEvent',
- '*state': 'int',
- 'new_state': 'int' } }
- ##
- # @BlockdevOptionsBlkdebug:
- #
- # Driver specific block device options for blkdebug.
- #
- # @image: underlying raw block device (or image file)
- #
- # @config: filename of the configuration file
- #
- # @align: required alignment for requests in bytes, must be
- # positive power of 2, or 0 for default
- #
- # @max-transfer: maximum size for I/O transfers in bytes, must be
- # positive multiple of @align and of the underlying
- # file's request alignment (but need not be a power of
- # 2), or 0 for default (since 2.10)
- #
- # @opt-write-zero: preferred alignment for write zero requests in bytes,
- # must be positive multiple of @align and of the
- # underlying file's request alignment (but need not be a
- # power of 2), or 0 for default (since 2.10)
- #
- # @max-write-zero: maximum size for write zero requests in bytes, must be
- # positive multiple of @align, of @opt-write-zero, and of
- # the underlying file's request alignment (but need not
- # be a power of 2), or 0 for default (since 2.10)
- #
- # @opt-discard: preferred alignment for discard requests in bytes, must
- # be positive multiple of @align and of the underlying
- # file's request alignment (but need not be a power of
- # 2), or 0 for default (since 2.10)
- #
- # @max-discard: maximum size for discard requests in bytes, must be
- # positive multiple of @align, of @opt-discard, and of
- # the underlying file's request alignment (but need not
- # be a power of 2), or 0 for default (since 2.10)
- #
- # @inject-error: array of error injection descriptions
- #
- # @set-state: array of state-change descriptions
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsBlkdebug',
- 'data': { 'image': 'BlockdevRef',
- '*config': 'str',
- '*align': 'int', '*max-transfer': 'int32',
- '*opt-write-zero': 'int32', '*max-write-zero': 'int32',
- '*opt-discard': 'int32', '*max-discard': 'int32',
- '*inject-error': ['BlkdebugInjectErrorOptions'],
- '*set-state': ['BlkdebugSetStateOptions'] } }
- ##
- # @BlockdevOptionsBlkverify:
- #
- # Driver specific block device options for blkverify.
- #
- # @test: block device to be tested
- #
- # @raw: raw image used for verification
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsBlkverify',
- 'data': { 'test': 'BlockdevRef',
- 'raw': 'BlockdevRef' } }
- ##
- # @QuorumReadPattern:
- #
- # An enumeration of quorum read patterns.
- #
- # @quorum: read all the children and do a quorum vote on reads
- #
- # @fifo: read only from the first child that has not failed
- #
- # Since: 2.9
- ##
- { 'enum': 'QuorumReadPattern', 'data': [ 'quorum', 'fifo' ] }
- ##
- # @BlockdevOptionsQuorum:
- #
- # Driver specific block device options for Quorum
- #
- # @blkverify: true if the driver must print content mismatch
- # set to false by default
- #
- # @children: the children block devices to use
- #
- # @vote-threshold: the vote limit under which a read will fail
- #
- # @rewrite-corrupted: rewrite corrupted data when quorum is reached
- # (Since 2.1)
- #
- # @read-pattern: choose read pattern and set to quorum by default
- # (Since 2.2)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsQuorum',
- 'data': { '*blkverify': 'bool',
- 'children': [ 'BlockdevRef' ],
- 'vote-threshold': 'int',
- '*rewrite-corrupted': 'bool',
- '*read-pattern': 'QuorumReadPattern' } }
- ##
- # @BlockdevOptionsGluster:
- #
- # Driver specific block device options for Gluster
- #
- # @volume: name of gluster volume where VM image resides
- #
- # @path: absolute path to image file in gluster volume
- #
- # @server: gluster servers description
- #
- # @debug: libgfapi log level (default '4' which is Error)
- # (Since 2.8)
- #
- # @logfile: libgfapi log file (default /dev/stderr) (Since 2.8)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsGluster',
- 'data': { 'volume': 'str',
- 'path': 'str',
- 'server': ['SocketAddress'],
- '*debug': 'int',
- '*logfile': 'str' } }
- ##
- # @IscsiTransport:
- #
- # An enumeration of libiscsi transport types
- #
- # Since: 2.9
- ##
- { 'enum': 'IscsiTransport',
- 'data': [ 'tcp', 'iser' ] }
- ##
- # @IscsiHeaderDigest:
- #
- # An enumeration of header digests supported by libiscsi
- #
- # Since: 2.9
- ##
- { 'enum': 'IscsiHeaderDigest',
- 'prefix': 'QAPI_ISCSI_HEADER_DIGEST',
- 'data': [ 'crc32c', 'none', 'crc32c-none', 'none-crc32c' ] }
- ##
- # @BlockdevOptionsIscsi:
- #
- # @transport: The iscsi transport type
- #
- # @portal: The address of the iscsi portal
- #
- # @target: The target iqn name
- #
- # @lun: LUN to connect to. Defaults to 0.
- #
- # @user: User name to log in with. If omitted, no CHAP
- # authentication is performed.
- #
- # @password-secret: The ID of a QCryptoSecret object providing
- # the password for the login. This option is required if
- # @user is specified.
- #
- # @initiator-name: The iqn name we want to identify to the target
- # as. If this option is not specified, an initiator name is
- # generated automatically.
- #
- # @header-digest: The desired header digest. Defaults to
- # none-crc32c.
- #
- # @timeout: Timeout in seconds after which a request will
- # timeout. 0 means no timeout and is the default.
- #
- # Driver specific block device options for iscsi
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsIscsi',
- 'data': { 'transport': 'IscsiTransport',
- 'portal': 'str',
- 'target': 'str',
- '*lun': 'int',
- '*user': 'str',
- '*password-secret': 'str',
- '*initiator-name': 'str',
- '*header-digest': 'IscsiHeaderDigest',
- '*timeout': 'int' } }
- ##
- # @BlockdevOptionsRbd:
- #
- # @pool: Ceph pool name.
- #
- # @image: Image name in the Ceph pool.
- #
- # @conf: path to Ceph configuration file. Values
- # in the configuration file will be overridden by
- # options specified via QAPI.
- #
- # @snapshot: Ceph snapshot name.
- #
- # @user: Ceph id name.
- #
- # @server: Monitor host address and port. This maps
- # to the "mon_host" Ceph option.
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsRbd',
- 'data': { 'pool': 'str',
- 'image': 'str',
- '*conf': 'str',
- '*snapshot': 'str',
- '*user': 'str',
- '*server': ['InetSocketAddressBase'] } }
- ##
- # @BlockdevOptionsSheepdog:
- #
- # Driver specific block device options for sheepdog
- #
- # @vdi: Virtual disk image name
- # @server: The Sheepdog server to connect to
- # @snap-id: Snapshot ID
- # @tag: Snapshot tag name
- #
- # Only one of @snap-id and @tag may be present.
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsSheepdog',
- 'data': { 'server': 'SocketAddress',
- 'vdi': 'str',
- '*snap-id': 'uint32',
- '*tag': 'str' } }
- ##
- # @ReplicationMode:
- #
- # An enumeration of replication modes.
- #
- # @primary: Primary mode, the vm's state will be sent to secondary QEMU.
- #
- # @secondary: Secondary mode, receive the vm's state from primary QEMU.
- #
- # Since: 2.9
- ##
- { 'enum' : 'ReplicationMode', 'data' : [ 'primary', 'secondary' ] }
- ##
- # @BlockdevOptionsReplication:
- #
- # Driver specific block device options for replication
- #
- # @mode: the replication mode
- #
- # @top-id: In secondary mode, node name or device ID of the root
- # node who owns the replication node chain. Must not be given in
- # primary mode.
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsReplication',
- 'base': 'BlockdevOptionsGenericFormat',
- 'data': { 'mode': 'ReplicationMode',
- '*top-id': 'str' } }
- ##
- # @NFSTransport:
- #
- # An enumeration of NFS transport types
- #
- # @inet: TCP transport
- #
- # Since: 2.9
- ##
- { 'enum': 'NFSTransport',
- 'data': [ 'inet' ] }
- ##
- # @NFSServer:
- #
- # Captures the address of the socket
- #
- # @type: transport type used for NFS (only TCP supported)
- #
- # @host: host address for NFS server
- #
- # Since: 2.9
- ##
- { 'struct': 'NFSServer',
- 'data': { 'type': 'NFSTransport',
- 'host': 'str' } }
- ##
- # @BlockdevOptionsNfs:
- #
- # Driver specific block device option for NFS
- #
- # @server: host address
- #
- # @path: path of the image on the host
- #
- # @user: UID value to use when talking to the
- # server (defaults to 65534 on Windows and getuid()
- # on unix)
- #
- # @group: GID value to use when talking to the
- # server (defaults to 65534 on Windows and getgid()
- # in unix)
- #
- # @tcp-syn-count: number of SYNs during the session
- # establishment (defaults to libnfs default)
- #
- # @readahead-size: set the readahead size in bytes (defaults
- # to libnfs default)
- #
- # @page-cache-size: set the pagecache size in bytes (defaults
- # to libnfs default)
- #
- # @debug: set the NFS debug level (max 2) (defaults
- # to libnfs default)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsNfs',
- 'data': { 'server': 'NFSServer',
- 'path': 'str',
- '*user': 'int',
- '*group': 'int',
- '*tcp-syn-count': 'int',
- '*readahead-size': 'int',
- '*page-cache-size': 'int',
- '*debug': 'int' } }
- ##
- # @BlockdevOptionsCurlBase:
- #
- # Driver specific block device options shared by all protocols supported by the
- # curl backend.
- #
- # @url: URL of the image file
- #
- # @readahead: Size of the read-ahead cache; must be a multiple of
- # 512 (defaults to 256 kB)
- #
- # @timeout: Timeout for connections, in seconds (defaults to 5)
- #
- # @username: Username for authentication (defaults to none)
- #
- # @password-secret: ID of a QCryptoSecret object providing a password
- # for authentication (defaults to no password)
- #
- # @proxy-username: Username for proxy authentication (defaults to none)
- #
- # @proxy-password-secret: ID of a QCryptoSecret object providing a password
- # for proxy authentication (defaults to no password)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsCurlBase',
- 'data': { 'url': 'str',
- '*readahead': 'int',
- '*timeout': 'int',
- '*username': 'str',
- '*password-secret': 'str',
- '*proxy-username': 'str',
- '*proxy-password-secret': 'str' } }
- ##
- # @BlockdevOptionsCurlHttp:
- #
- # Driver specific block device options for HTTP connections over the curl
- # backend. URLs must start with "http://".
- #
- # @cookie: List of cookies to set; format is
- # "name1=content1; name2=content2;" as explained by
- # CURLOPT_COOKIE(3). Defaults to no cookies.
- #
- # @cookie-secret: ID of a QCryptoSecret object providing the cookie data in a
- # secure way. See @cookie for the format. (since 2.10)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsCurlHttp',
- 'base': 'BlockdevOptionsCurlBase',
- 'data': { '*cookie': 'str',
- '*cookie-secret': 'str'} }
- ##
- # @BlockdevOptionsCurlHttps:
- #
- # Driver specific block device options for HTTPS connections over the curl
- # backend. URLs must start with "https://".
- #
- # @cookie: List of cookies to set; format is
- # "name1=content1; name2=content2;" as explained by
- # CURLOPT_COOKIE(3). Defaults to no cookies.
- #
- # @sslverify: Whether to verify the SSL certificate's validity (defaults to
- # true)
- #
- # @cookie-secret: ID of a QCryptoSecret object providing the cookie data in a
- # secure way. See @cookie for the format. (since 2.10)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsCurlHttps',
- 'base': 'BlockdevOptionsCurlBase',
- 'data': { '*cookie': 'str',
- '*sslverify': 'bool',
- '*cookie-secret': 'str'} }
- ##
- # @BlockdevOptionsCurlFtp:
- #
- # Driver specific block device options for FTP connections over the curl
- # backend. URLs must start with "ftp://".
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsCurlFtp',
- 'base': 'BlockdevOptionsCurlBase',
- 'data': { } }
- ##
- # @BlockdevOptionsCurlFtps:
- #
- # Driver specific block device options for FTPS connections over the curl
- # backend. URLs must start with "ftps://".
- #
- # @sslverify: Whether to verify the SSL certificate's validity (defaults to
- # true)
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsCurlFtps',
- 'base': 'BlockdevOptionsCurlBase',
- 'data': { '*sslverify': 'bool' } }
- ##
- # @BlockdevOptionsNbd:
- #
- # Driver specific block device options for NBD.
- #
- # @server: NBD server address
- #
- # @export: export name
- #
- # @tls-creds: TLS credentials ID
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsNbd',
- 'data': { 'server': 'SocketAddress',
- '*export': 'str',
- '*tls-creds': 'str' } }
- ##
- # @BlockdevOptionsRaw:
- #
- # Driver specific block device options for the raw driver.
- #
- # @offset: position where the block device starts
- # @size: the assumed size of the device
- #
- # Since: 2.9
- ##
- { 'struct': 'BlockdevOptionsRaw',
- 'base': 'BlockdevOptionsGenericFormat',
- 'data': { '*offset': 'int', '*size': 'int' } }
- ##
- # @BlockdevOptionsVxHS:
- #
- # Driver specific block device options for VxHS
- #
- # @vdisk-id: UUID of VxHS volume
- # @server: vxhs server IP, port
- # @tls-creds: TLS credentials ID
- #
- # Since: 2.10
- ##
- { 'struct': 'BlockdevOptionsVxHS',
- 'data': { 'vdisk-id': 'str',
- 'server': 'InetSocketAddressBase',
- '*tls-creds': 'str' } }
- ##
- # @BlockdevOptions:
- #
- # Options for creating a block device. Many options are available for all
- # block devices, independent of the block driver:
- #
- # @driver: block driver name
- # @node-name: the node name of the new node (Since 2.0).
- # This option is required on the top level of blockdev-add.
- # @discard: discard-related options (default: ignore)
- # @cache: cache-related options
- # @read-only: whether the block device should be read-only
- # (default: false)
- # @detect-zeroes: detect and optimize zero writes (Since 2.1)
- # (default: off)
- # @force-share: force share all permission on added nodes.
- # Requires read-only=true. (Since 2.10)
- #
- # Remaining options are determined by the block driver.
- #
- # Since: 2.9
- ##
- { 'union': 'BlockdevOptions',
- 'base': { 'driver': 'BlockdevDriver',
- '*node-name': 'str',
- '*discard': 'BlockdevDiscardOptions',
- '*cache': 'BlockdevCacheOptions',
- '*read-only': 'bool',
- '*force-share': 'bool',
- '*detect-zeroes': 'BlockdevDetectZeroesOptions' },
- 'discriminator': 'driver',
- 'data': {
- 'blkdebug': 'BlockdevOptionsBlkdebug',
- 'blkverify': 'BlockdevOptionsBlkverify',
- 'bochs': 'BlockdevOptionsGenericFormat',
- 'cloop': 'BlockdevOptionsGenericFormat',
- 'dmg': 'BlockdevOptionsGenericFormat',
- 'file': 'BlockdevOptionsFile',
- 'ftp': 'BlockdevOptionsCurlFtp',
- 'ftps': 'BlockdevOptionsCurlFtps',
- 'gluster': 'BlockdevOptionsGluster',
- 'host_cdrom': 'BlockdevOptionsFile',
- 'host_device':'BlockdevOptionsFile',
- 'http': 'BlockdevOptionsCurlHttp',
- 'https': 'BlockdevOptionsCurlHttps',
- 'iscsi': 'BlockdevOptionsIscsi',
- 'luks': 'BlockdevOptionsLUKS',
- 'nbd': 'BlockdevOptionsNbd',
- 'nfs': 'BlockdevOptionsNfs',
- 'null-aio': 'BlockdevOptionsNull',
- 'null-co': 'BlockdevOptionsNull',
- 'parallels': 'BlockdevOptionsGenericFormat',
- 'qcow2': 'BlockdevOptionsQcow2',
- 'qcow': 'BlockdevOptionsGenericCOWFormat',
- 'qed': 'BlockdevOptionsGenericCOWFormat',
- 'quorum': 'BlockdevOptionsQuorum',
- 'raw': 'BlockdevOptionsRaw',
- 'rbd': 'BlockdevOptionsRbd',
- 'replication':'BlockdevOptionsReplication',
- 'sheepdog': 'BlockdevOptionsSheepdog',
- 'ssh': 'BlockdevOptionsSsh',
- 'vdi': 'BlockdevOptionsGenericFormat',
- 'vhdx': 'BlockdevOptionsGenericFormat',
- 'vmdk': 'BlockdevOptionsGenericCOWFormat',
- 'vpc': 'BlockdevOptionsGenericFormat',
- 'vvfat': 'BlockdevOptionsVVFAT',
- 'vxhs': 'BlockdevOptionsVxHS'
- } }
- ##
- # @BlockdevRef:
- #
- # Reference to a block device.
- #
- # @definition: defines a new block device inline
- # @reference: references the ID of an existing block device. An
- # empty string means that no block device should be
- # referenced.
- #
- # Since: 2.9
- ##
- { 'alternate': 'BlockdevRef',
- 'data': { 'definition': 'BlockdevOptions',
- 'reference': 'str' } }
- ##
- # @blockdev-add:
- #
- # Creates a new block device. If the @id option is given at the top level, a
- # BlockBackend will be created; otherwise, @node-name is mandatory at the top
- # level and no BlockBackend will be created.
- #
- # Since: 2.9
- #
- # Example:
- #
- # 1.
- # -> { "execute": "blockdev-add",
- # "arguments": {
- # "driver": "qcow2",
- # "node-name": "test1",
- # "file": {
- # "driver": "file",
- # "filename": "test.qcow2"
- # }
- # }
- # }
- # <- { "return": {} }
- #
- # 2.
- # -> { "execute": "blockdev-add",
- # "arguments": {
- # "driver": "qcow2",
- # "node-name": "node0",
- # "discard": "unmap",
- # "cache": {
- # "direct": true
- # },
- # "file": {
- # "driver": "file",
- # "filename": "/tmp/test.qcow2"
- # },
- # "backing": {
- # "driver": "raw",
- # "file": {
- # "driver": "file",
- # "filename": "/dev/fdset/4"
- # }
- # }
- # }
- # }
- #
- # <- { "return": {} }
- #
- ##
- { 'command': 'blockdev-add', 'data': 'BlockdevOptions', 'boxed': true }
- ##
- # @blockdev-del:
- #
- # Deletes a block device that has been added using blockdev-add.
- # The command will fail if the node is attached to a device or is
- # otherwise being used.
- #
- # @node-name: Name of the graph node to delete.
- #
- # Since: 2.9
- #
- # Example:
- #
- # -> { "execute": "blockdev-add",
- # "arguments": {
- # "driver": "qcow2",
- # "node-name": "node0",
- # "file": {
- # "driver": "file",
- # "filename": "test.qcow2"
- # }
- # }
- # }
- # <- { "return": {} }
- #
- # -> { "execute": "blockdev-del",
- # "arguments": { "node-name": "node0" }
- # }
- # <- { "return": {} }
- #
- ##
- { 'command': 'blockdev-del', 'data': { 'node-name': 'str' } }
- ##
- # @blockdev-open-tray:
- #
- # Opens a block device's tray. If there is a block driver state tree inserted as
- # a medium, it will become inaccessible to the guest (but it will remain
- # associated to the block device, so closing the tray will make it accessible
- # again).
- #
- # If the tray was already open before, this will be a no-op.
- #
- # Once the tray opens, a DEVICE_TRAY_MOVED event is emitted. There are cases in
- # which no such event will be generated, these include:
- # - if the guest has locked the tray, @force is false and the guest does not
- # respond to the eject request
- # - if the BlockBackend denoted by @device does not have a guest device attached
- # to it
- # - if the guest device does not have an actual tray
- #
- # @device: Block device name (deprecated, use @id instead)
- #
- # @id: The name or QOM path of the guest device (since: 2.8)
- #
- # @force: if false (the default), an eject request will be sent to
- # the guest if it has locked the tray (and the tray will not be opened
- # immediately); if true, the tray will be opened regardless of whether
- # it is locked
- #
- # Since: 2.5
- #
- # Example:
- #
- # -> { "execute": "blockdev-open-tray",
- # "arguments": { "id": "ide0-1-0" } }
- #
- # <- { "timestamp": { "seconds": 1418751016,
- # "microseconds": 716996 },
- # "event": "DEVICE_TRAY_MOVED",
- # "data": { "device": "ide1-cd0",
- # "id": "ide0-1-0",
- # "tray-open": true } }
- #
- # <- { "return": {} }
- #
- ##
- { 'command': 'blockdev-open-tray',
- 'data': { '*device': 'str',
- '*id': 'str',
- '*force': 'bool' } }
- ##
- # @blockdev-close-tray:
- #
- # Closes a block device's tray. If there is a block driver state tree associated
- # with the block device (which is currently ejected), that tree will be loaded
- # as the medium.
- #
- # If the tray was already closed before, this will be a no-op.
- #
- # @device: Block device name (deprecated, use @id instead)
- #
- # @id: The name or QOM path of the guest device (since: 2.8)
- #
- # Since: 2.5
- #
- # Example:
- #
- # -> { "execute": "blockdev-close-tray",
- # "arguments": { "id": "ide0-1-0" } }
- #
- # <- { "timestamp": { "seconds": 1418751345,
- # "microseconds": 272147 },
- # "event": "DEVICE_TRAY_MOVED",
- # "data": { "device": "ide1-cd0",
- # "id": "ide0-1-0",
- # "tray-open": false } }
- #
- # <- { "return": {} }
- #
- ##
- { 'command': 'blockdev-close-tray',
- 'data': { '*device': 'str',
- '*id': 'str' } }
- ##
- # @x-blockdev-remove-medium:
- #
- # Removes a medium (a block driver state tree) from a block device. That block
- # device's tray must currently be open (unless there is no attached guest
- # device).
- #
- # If the tray is open and there is no medium inserted, this will be a no-op.
- #
- # @device: Block device name (deprecated, use @id instead)
- #
- # @id: The name or QOM path of the guest device (since: 2.8)
- #
- # Note: This command is still a work in progress and is considered experimental.
- # Stay away from it unless you want to help with its development.
- #
- # Since: 2.5
- #
- # Example:
- #
- # -> { "execute": "x-blockdev-remove-medium",
- # "arguments": { "id": "ide0-1-0" } }
- #
- # <- { "error": { "class": "GenericError",
- # "desc": "Tray of device 'ide0-1-0' is not open" } }
- #
- # -> { "execute": "blockdev-open-tray",
- # "arguments": { "id": "ide0-1-0" } }
- #
- # <- { "timestamp": { "seconds": 1418751627,
- # "microseconds": 549958 },
- # "event": "DEVICE_TRAY_MOVED",
- # "data": { "device": "ide1-cd0",
- # "id": "ide0-1-0",
- # "tray-open": true } }
- #
- # <- { "return": {} }
- #
- # -> { "execute": "x-blockdev-remove-medium",
- # "arguments": { "id": "ide0-1-0" } }
- #
- # <- { "return": {} }
- #
- ##
- { 'command': 'x-blockdev-remove-medium',
- 'data': { '*device': 'str',
- '*id': 'str' } }
- ##
- # @x-blockdev-insert-medium:
- #
- # Inserts a medium (a block driver state tree) into a block device. That block
- # device's tray must currently be open (unless there is no attached guest
- # device) and there must be no medium inserted already.
- #
- # @device: Block device name (deprecated, use @id instead)
- #
- # @id: The name or QOM path of the guest device (since: 2.8)
- #
- # @node-name: name of a node in the block driver state graph
- #
- # Note: This command is still a work in progress and is considered experimental.
- # Stay away from it unless you want to help with its development.
- #
- # Since: 2.5
- #
- # Example:
- #
- # -> { "execute": "blockdev-add",
- # "arguments": {
- # "node-name": "node0",
- # "driver": "raw",
- # "file": { "driver": "file",
- # "filename": "fedora.iso" } } }
- # <- { "return": {} }
- #
- # -> { "execute": "x-blockdev-insert-medium",
- # "arguments": { "id": "ide0-1-0",
- # "node-name": "node0" } }
- #
- # <- { "return": {} }
- #
- ##
- { 'command': 'x-blockdev-insert-medium',
- 'data': { '*device': 'str',
- '*id': 'str',
- 'node-name': 'str'} }
- ##
- # @BlockdevChangeReadOnlyMode:
- #
- # Specifies the new read-only mode of a block device subject to the
- # @blockdev-change-medium command.
- #
- # @retain: Retains the current read-only mode
- #
- # @read-only: Makes the device read-only
- #
- # @read-write: Makes the device writable
- #
- # Since: 2.3
- #
- ##
- { 'enum': 'BlockdevChangeReadOnlyMode',
- 'data': ['retain', 'read-only', 'read-write'] }
- ##
- # @blockdev-change-medium:
- #
- # Changes the medium inserted into a block device by ejecting the current medium
- # and loading a new image file which is inserted as the new medium (this command
- # combines blockdev-open-tray, x-blockdev-remove-medium,
- # x-blockdev-insert-medium and blockdev-close-tray).
- #
- # @device: Block device name (deprecated, use @id instead)
- #
- # @id: The name or QOM path of the guest device
- # (since: 2.8)
- #
- # @filename: filename of the new image to be loaded
- #
- # @format: format to open the new image with (defaults to
- # the probed format)
- #
- # @read-only-mode: change the read-only mode of the device; defaults
- # to 'retain'
- #
- # Since: 2.5
- #
- # Examples:
- #
- # 1. Change a removable medium
- #
- # -> { "execute": "blockdev-change-medium",
- # "arguments": { "id": "ide0-1-0",
- # "filename": "/srv/images/Fedora-12-x86_64-DVD.iso",
- # "format": "raw" } }
- # <- { "return": {} }
- #
- # 2. Load a read-only medium into a writable drive
- #
- # -> { "execute": "blockdev-change-medium",
- # "arguments": { "id": "floppyA",
- # "filename": "/srv/images/ro.img",
- # "format": "raw",
- # "read-only-mode": "retain" } }
- #
- # <- { "error":
- # { "class": "GenericError",
- # "desc": "Could not open '/srv/images/ro.img': Permission denied" } }
- #
- # -> { "execute": "blockdev-change-medium",
- # "arguments": { "id": "floppyA",
- # "filename": "/srv/images/ro.img",
- # "format": "raw",
- # "read-only-mode": "read-only" } }
- #
- # <- { "return": {} }
- #
- ##
- { 'command': 'blockdev-change-medium',
- 'data': { '*device': 'str',
- '*id': 'str',
- 'filename': 'str',
- '*format': 'str',
- '*read-only-mode': 'BlockdevChangeReadOnlyMode' } }
- ##
- # @BlockErrorAction:
- #
- # An enumeration of action that has been taken when a DISK I/O occurs
- #
- # @ignore: error has been ignored
- #
- # @report: error has been reported to the device
- #
- # @stop: error caused VM to be stopped
- #
- # Since: 2.1
- ##
- { 'enum': 'BlockErrorAction',
- 'data': [ 'ignore', 'report', 'stop' ] }
- ##
- # @BLOCK_IMAGE_CORRUPTED:
- #
- # Emitted when a disk image is being marked corrupt. The image can be
- # identified by its device or node name. The 'device' field is always
- # present for compatibility reasons, but it can be empty ("") if the
- # image does not have a device name associated.
- #
- # @device: device name. This is always present for compatibility
- # reasons, but it can be empty ("") if the image does not
- # have a device name associated.
- #
- # @node-name: node name (Since: 2.4)
- #
- # @msg: informative message for human consumption, such as the kind of
- # corruption being detected. It should not be parsed by machine as it is
- # not guaranteed to be stable
- #
- # @offset: if the corruption resulted from an image access, this is
- # the host's access offset into the image
- #
- # @size: if the corruption resulted from an image access, this is
- # the access size
- #
- # @fatal: if set, the image is marked corrupt and therefore unusable after this
- # event and must be repaired (Since 2.2; before, every
- # BLOCK_IMAGE_CORRUPTED event was fatal)
- #
- # Note: If action is "stop", a STOP event will eventually follow the
- # BLOCK_IO_ERROR event.
- #
- # Example:
- #
- # <- { "event": "BLOCK_IMAGE_CORRUPTED",
- # "data": { "device": "ide0-hd0", "node-name": "node0",
- # "msg": "Prevented active L1 table overwrite", "offset": 196608,
- # "size": 65536 },
- # "timestamp": { "seconds": 1378126126, "microseconds": 966463 } }
- #
- # Since: 1.7
- ##
- { 'event': 'BLOCK_IMAGE_CORRUPTED',
- 'data': { 'device' : 'str',
- '*node-name' : 'str',
- 'msg' : 'str',
- '*offset' : 'int',
- '*size' : 'int',
- 'fatal' : 'bool' } }
- ##
- # @BLOCK_IO_ERROR:
- #
- # Emitted when a disk I/O error occurs
- #
- # @device: device name. This is always present for compatibility
- # reasons, but it can be empty ("") if the image does not
- # have a device name associated.
- #
- # @node-name: node name. Note that errors may be reported for the root node
- # that is directly attached to a guest device rather than for the
- # node where the error occurred. (Since: 2.8)
- #
- # @operation: I/O operation
- #
- # @action: action that has been taken
- #
- # @nospace: true if I/O error was caused due to a no-space
- # condition. This key is only present if query-block's
- # io-status is present, please see query-block documentation
- # for more information (since: 2.2)
- #
- # @reason: human readable string describing the error cause.
- # (This field is a debugging aid for humans, it should not
- # be parsed by applications) (since: 2.2)
- #
- # Note: If action is "stop", a STOP event will eventually follow the
- # BLOCK_IO_ERROR event
- #
- # Since: 0.13.0
- #
- # Example:
- #
- # <- { "event": "BLOCK_IO_ERROR",
- # "data": { "device": "ide0-hd1",
- # "node-name": "#block212",
- # "operation": "write",
- # "action": "stop" },
- # "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
- #
- ##
- { 'event': 'BLOCK_IO_ERROR',
- 'data': { 'device': 'str', 'node-name': 'str', 'operation': 'IoOperationType',
- 'action': 'BlockErrorAction', '*nospace': 'bool',
- 'reason': 'str' } }
- ##
- # @BLOCK_JOB_COMPLETED:
- #
- # Emitted when a block job has completed
- #
- # @type: job type
- #
- # @device: The job identifier. Originally the device name but other
- # values are allowed since QEMU 2.7
- #
- # @len: maximum progress value
- #
- # @offset: current progress value. On success this is equal to len.
- # On failure this is less than len
- #
- # @speed: rate limit, bytes per second
- #
- # @error: error message. Only present on failure. This field
- # contains a human-readable error message. There are no semantics
- # other than that streaming has failed and clients should not try to
- # interpret the error string
- #
- # Since: 1.1
- #
- # Example:
- #
- # <- { "event": "BLOCK_JOB_COMPLETED",
- # "data": { "type": "stream", "device": "virtio-disk0",
- # "len": 10737418240, "offset": 10737418240,
- # "speed": 0 },
- # "timestamp": { "seconds": 1267061043, "microseconds": 959568 } }
- #
- ##
- { 'event': 'BLOCK_JOB_COMPLETED',
- 'data': { 'type' : 'BlockJobType',
- 'device': 'str',
- 'len' : 'int',
- 'offset': 'int',
- 'speed' : 'int',
- '*error': 'str' } }
- ##
- # @BLOCK_JOB_CANCELLED:
- #
- # Emitted when a block job has been cancelled
- #
- # @type: job type
- #
- # @device: The job identifier. Originally the device name but other
- # values are allowed since QEMU 2.7
- #
- # @len: maximum progress value
- #
- # @offset: current progress value. On success this is equal to len.
- # On failure this is less than len
- #
- # @speed: rate limit, bytes per second
- #
- # Since: 1.1
- #
- # Example:
- #
- # <- { "event": "BLOCK_JOB_CANCELLED",
- # "data": { "type": "stream", "device": "virtio-disk0",
- # "len": 10737418240, "offset": 134217728,
- # "speed": 0 },
- # "timestamp": { "seconds": 1267061043, "microseconds": 959568 } }
- #
- ##
- { 'event': 'BLOCK_JOB_CANCELLED',
- 'data': { 'type' : 'BlockJobType',
- 'device': 'str',
- 'len' : 'int',
- 'offset': 'int',
- 'speed' : 'int' } }
- ##
- # @BLOCK_JOB_ERROR:
- #
- # Emitted when a block job encounters an error
- #
- # @device: The job identifier. Originally the device name but other
- # values are allowed since QEMU 2.7
- #
- # @operation: I/O operation
- #
- # @action: action that has been taken
- #
- # Since: 1.3
- #
- # Example:
- #
- # <- { "event": "BLOCK_JOB_ERROR",
- # "data": { "device": "ide0-hd1",
- # "operation": "write",
- # "action": "stop" },
- # "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
- #
- ##
- { 'event': 'BLOCK_JOB_ERROR',
- 'data': { 'device' : 'str',
- 'operation': 'IoOperationType',
- 'action' : 'BlockErrorAction' } }
- ##
- # @BLOCK_JOB_READY:
- #
- # Emitted when a block job is ready to complete
- #
- # @type: job type
- #
- # @device: The job identifier. Originally the device name but other
- # values are allowed since QEMU 2.7
- #
- # @len: maximum progress value
- #
- # @offset: current progress value. On success this is equal to len.
- # On failure this is less than len
- #
- # @speed: rate limit, bytes per second
- #
- # Note: The "ready to complete" status is always reset by a @BLOCK_JOB_ERROR
- # event
- #
- # Since: 1.3
- #
- # Example:
- #
- # <- { "event": "BLOCK_JOB_READY",
- # "data": { "device": "drive0", "type": "mirror", "speed": 0,
- # "len": 2097152, "offset": 2097152 }
- # "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
- #
- ##
- { 'event': 'BLOCK_JOB_READY',
- 'data': { 'type' : 'BlockJobType',
- 'device': 'str',
- 'len' : 'int',
- 'offset': 'int',
- 'speed' : 'int' } }
- ##
- # @PreallocMode:
- #
- # Preallocation mode of QEMU image file
- #
- # @off: no preallocation
- # @metadata: preallocate only for metadata
- # @falloc: like @full preallocation but allocate disk space by
- # posix_fallocate() rather than writing zeros.
- # @full: preallocate all data by writing zeros to device to ensure disk
- # space is really available. @full preallocation also sets up
- # metadata correctly.
- #
- # Since: 2.2
- ##
- { 'enum': 'PreallocMode',
- 'data': [ 'off', 'metadata', 'falloc', 'full' ] }
- ##
- # @BLOCK_WRITE_THRESHOLD:
- #
- # Emitted when writes on block device reaches or exceeds the
- # configured write threshold. For thin-provisioned devices, this
- # means the device should be extended to avoid pausing for
- # disk exhaustion.
- # The event is one shot. Once triggered, it needs to be
- # re-registered with another block-set-write-threshold command.
- #
- # @node-name: graph node name on which the threshold was exceeded.
- #
- # @amount-exceeded: amount of data which exceeded the threshold, in bytes.
- #
- # @write-threshold: last configured threshold, in bytes.
- #
- # Since: 2.3
- ##
- { 'event': 'BLOCK_WRITE_THRESHOLD',
- 'data': { 'node-name': 'str',
- 'amount-exceeded': 'uint64',
- 'write-threshold': 'uint64' } }
- ##
- # @block-set-write-threshold:
- #
- # Change the write threshold for a block drive. An event will be
- # delivered if a write to this block drive crosses the configured
- # threshold. The threshold is an offset, thus must be
- # non-negative. Default is no write threshold. Setting the threshold
- # to zero disables it.
- #
- # This is useful to transparently resize thin-provisioned drives without
- # the guest OS noticing.
- #
- # @node-name: graph node name on which the threshold must be set.
- #
- # @write-threshold: configured threshold for the block device, bytes.
- # Use 0 to disable the threshold.
- #
- # Since: 2.3
- #
- # Example:
- #
- # -> { "execute": "block-set-write-threshold",
- # "arguments": { "node-name": "mydev",
- # "write-threshold": 17179869184 } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'block-set-write-threshold',
- 'data': { 'node-name': 'str', 'write-threshold': 'uint64' } }
- ##
- # @x-blockdev-change:
- #
- # Dynamically reconfigure the block driver state graph. It can be used
- # to add, remove, insert or replace a graph node. Currently only the
- # Quorum driver implements this feature to add or remove its child. This
- # is useful to fix a broken quorum child.
- #
- # If @node is specified, it will be inserted under @parent. @child
- # may not be specified in this case. If both @parent and @child are
- # specified but @node is not, @child will be detached from @parent.
- #
- # @parent: the id or name of the parent node.
- #
- # @child: the name of a child under the given parent node.
- #
- # @node: the name of the node that will be added.
- #
- # Note: this command is experimental, and its API is not stable. It
- # does not support all kinds of operations, all kinds of children, nor
- # all block drivers.
- #
- # Warning: The data in a new quorum child MUST be consistent with that of
- # the rest of the array.
- #
- # Since: 2.7
- #
- # Example:
- #
- # 1. Add a new node to a quorum
- # -> { "execute": "blockdev-add",
- # "arguments": {
- # "driver": "raw",
- # "node-name": "new_node",
- # "file": { "driver": "file",
- # "filename": "test.raw" } } }
- # <- { "return": {} }
- # -> { "execute": "x-blockdev-change",
- # "arguments": { "parent": "disk1",
- # "node": "new_node" } }
- # <- { "return": {} }
- #
- # 2. Delete a quorum's node
- # -> { "execute": "x-blockdev-change",
- # "arguments": { "parent": "disk1",
- # "child": "children.1" } }
- # <- { "return": {} }
- #
- ##
- { 'command': 'x-blockdev-change',
- 'data' : { 'parent': 'str',
- '*child': 'str',
- '*node': 'str' } }
|