Message ID | 1477674570-25927-3-git-send-email-ashijeetacharya@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 10/28/2016 12:09 PM, Ashijeet Acharya wrote: > Introduce new object 'BlockdevOptionsNFS' in qapi/block-core.json to > support blockdev-add for NFS network protocol driver. Also make a new > struct NFSServer to support tcp connection. > > Signed-off-by: Ashijeet Acharya <ashijeetacharya@gmail.com> > --- > qapi/block-core.json | 74 +++++++++++++++++++++++++++++++++++++++++++++++++--- > 1 file changed, 71 insertions(+), 3 deletions(-) > > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 3592a9d..c0c9b48 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -1714,14 +1714,14 @@ > # > # @host_device, @host_cdrom: Since 2.1 > # @gluster: Since 2.7 > -# @nbd, @ssh: Since 2.8 > +# @nbd, @ssh, @nfs: Since 2.8 Might be nice to keep the list alphabetical per release (nfs before ssh). Also minor conflict with a patch to mention 'replication' in this list. > > ## > +# @NFSTransport > +# > +# An enumeration of NFS transport types > +# > +# @inet: TCP transport > +# > +# Since 2.8 > +## > +{ 'enum': 'NFSTransport', > + 'data': [ 'inet' ] } > + > +## > +# @NFSServer > +# > +# Captures the address of the socket Might be worth a mention that this type is explicitly modeled to be a subset of SocketAddress and/or GlusterServer (except see below - I'm not sure it is a subset of either). > +# > +# @type: transport type used for NFS (only TCP supported) > +# > +# @host: host address for NFS server > +# > +# Since 2.8 > +## > +{ 'struct': 'NFSServer', > + 'data': { 'type': 'NFSTransport', > + 'host': 'str' } } Uggh. We used 'type':'inet' in SocketAddress, but 'type':'tcp' for GlusterServer. Compared to SocketAddress (the 'inet' branch), we have no 'port' or 'to' parameter, and no optional 'ipv4' or 'ipv6' bools. Do we NEED to be able to distinguish between ipv4 and ipv6 addresses? Did we really botch GlusterServer in the 2.7 release? > + > +## > +# @BlockdevOptionsNfs > +# > +# Driver specific block device option for NFS > +# > +# @server: host address > +# > +# @path: path of the image on the host > +# > +# @user: #optional UID value to use when talking to the > +# server (defaults to 65534 on Windows and getuid() > +# on unix) > +# > +# @group: #optional GID value to use when talking to the > +# server (defaults to 65534 on Windows and getgid() > +# in unix) > +# > +# @tcp-syn-count: #optional number of SYNs during the session > +# establishment (defaults to libnfs default) > +# > +# @readahead-size: #optional set the readahead size in bytes (defaults > +# to libnfs default) > +# > +# @page-cache-size: #optional set the pagecache size in bytes (defaults > +# to libnfs default) > +# > +# @debug-level: #optional set the NFS debug level (max 2) (defaults > +# to libnfs default) > +# > +# Since 2.8 > +## > +{ 'struct': 'BlockdevOptionsNfs', > + 'data': { 'server': 'NFSServer', > + 'path': 'str', > + '*user': 'int', > + '*group': 'int', > + '*tcp-syn-count': 'int', > + '*readahead-size': 'int', > + '*page-cache-size': 'int', > + '*debug-level': 'int' } } This looks good. > + > +## > # @BlockdevOptionsCurl > # > # Driver specific block device options for the curl backend. > @@ -2315,7 +2383,7 @@ > # TODO iscsi: Wait for structured options > 'luks': 'BlockdevOptionsLUKS', > 'nbd': 'BlockdevOptionsNbd', > -# TODO nfs: Wait for structured options > + 'nfs': 'BlockdevOptionsNfs', > 'null-aio': 'BlockdevOptionsNull', > 'null-co': 'BlockdevOptionsNull', > 'parallels': 'BlockdevOptionsGenericFormat', >
diff --git a/qapi/block-core.json b/qapi/block-core.json index 3592a9d..c0c9b48 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -1714,14 +1714,14 @@ # # @host_device, @host_cdrom: Since 2.1 # @gluster: Since 2.7 -# @nbd, @ssh: Since 2.8 +# @nbd, @ssh, @nfs: Since 2.8 # # Since: 2.0 ## { 'enum': 'BlockdevDriver', 'data': [ 'archipelago', 'blkdebug', 'blkverify', 'bochs', 'cloop', 'dmg', 'file', 'ftp', 'ftps', 'gluster', 'host_cdrom', - 'host_device', 'http', 'https', 'luks', 'nbd', 'null-aio', + 'host_device', 'http', 'https', 'luks', 'nbd', 'nfs', 'null-aio', 'null-co', 'parallels', 'qcow', 'qcow2', 'qed', 'quorum', 'raw', 'replication', 'ssh', 'tftp', 'vdi', 'vhdx', 'vmdk', 'vpc', 'vvfat' ] } @@ -2240,6 +2240,74 @@ '*top-id': 'str' } } ## +# @NFSTransport +# +# An enumeration of NFS transport types +# +# @inet: TCP transport +# +# Since 2.8 +## +{ '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.8 +## +{ '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: #optional UID value to use when talking to the +# server (defaults to 65534 on Windows and getuid() +# on unix) +# +# @group: #optional GID value to use when talking to the +# server (defaults to 65534 on Windows and getgid() +# in unix) +# +# @tcp-syn-count: #optional number of SYNs during the session +# establishment (defaults to libnfs default) +# +# @readahead-size: #optional set the readahead size in bytes (defaults +# to libnfs default) +# +# @page-cache-size: #optional set the pagecache size in bytes (defaults +# to libnfs default) +# +# @debug-level: #optional set the NFS debug level (max 2) (defaults +# to libnfs default) +# +# Since 2.8 +## +{ 'struct': 'BlockdevOptionsNfs', + 'data': { 'server': 'NFSServer', + 'path': 'str', + '*user': 'int', + '*group': 'int', + '*tcp-syn-count': 'int', + '*readahead-size': 'int', + '*page-cache-size': 'int', + '*debug-level': 'int' } } + +## # @BlockdevOptionsCurl # # Driver specific block device options for the curl backend. @@ -2315,7 +2383,7 @@ # TODO iscsi: Wait for structured options 'luks': 'BlockdevOptionsLUKS', 'nbd': 'BlockdevOptionsNbd', -# TODO nfs: Wait for structured options + 'nfs': 'BlockdevOptionsNfs', 'null-aio': 'BlockdevOptionsNull', 'null-co': 'BlockdevOptionsNull', 'parallels': 'BlockdevOptionsGenericFormat',
Introduce new object 'BlockdevOptionsNFS' in qapi/block-core.json to support blockdev-add for NFS network protocol driver. Also make a new struct NFSServer to support tcp connection. Signed-off-by: Ashijeet Acharya <ashijeetacharya@gmail.com> --- qapi/block-core.json | 74 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 71 insertions(+), 3 deletions(-)