On Wed, Dec 30, 2020 at 5:24 AM Ryan Gahagan <rgaha...@cs.utexas.edu> wrote:
> Per Issue 90, Libvirt does not support attaching an NFS disk even though > QEMU has added support for it. This series of patches seeks to implement > this support in Libvirt and begins by adding in flags for an NFS disk. > It is hard to know what the issue 90 actual means. Please add a ref link for it. For example: Per issue 90[1], .... .... Reference: [1]: https://gitlab.com/libvirt/libvirt/-/issues/90 > > Signed-off-by: Ryan Gahagan <rgaha...@cs.utexas.edu> > --- > src/libxl/libxl_conf.c | 1 + > src/libxl/xen_xl.c | 1 + > src/qemu/qemu_block.c | 3 +++ > src/qemu/qemu_command.c | 1 + > src/qemu/qemu_domain.c | 2 ++ > src/qemu/qemu_snapshot.c | 3 +++ > src/util/virstoragefile.c | 6 ++++++ > src/util/virstoragefile.h | 1 + > 8 files changed, 18 insertions(+) > > diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c > index 00748e21e8..6a8ae27f54 100644 > --- a/src/libxl/libxl_conf.c > +++ b/src/libxl/libxl_conf.c > @@ -941,6 +941,7 @@ libxlMakeNetworkDiskSrcStr(virStorageSourcePtr src, > case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG: > case VIR_STORAGE_NET_PROTOCOL_SSH: > case VIR_STORAGE_NET_PROTOCOL_VXHS: > + case VIR_STORAGE_NET_PROTOCOL_NFS: > case VIR_STORAGE_NET_PROTOCOL_LAST: > case VIR_STORAGE_NET_PROTOCOL_NONE: > virReportError(VIR_ERR_NO_SUPPORT, > diff --git a/src/libxl/xen_xl.c b/src/libxl/xen_xl.c > index ba0942601f..17b93d0f5c 100644 > --- a/src/libxl/xen_xl.c > +++ b/src/libxl/xen_xl.c > @@ -1600,6 +1600,7 @@ xenFormatXLDiskSrcNet(virStorageSourcePtr src) > case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG: > case VIR_STORAGE_NET_PROTOCOL_SSH: > case VIR_STORAGE_NET_PROTOCOL_VXHS: > + case VIR_STORAGE_NET_PROTOCOL_NFS: > case VIR_STORAGE_NET_PROTOCOL_LAST: > case VIR_STORAGE_NET_PROTOCOL_NONE: > virReportError(VIR_ERR_NO_SUPPORT, > diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c > index 4640e339c0..b224a550f3 100644 > --- a/src/qemu/qemu_block.c > +++ b/src/qemu/qemu_block.c > @@ -1180,6 +1180,7 @@ > qemuBlockStorageSourceGetBackendProps(virStorageSourcePtr src, > return NULL; > break; > > + case VIR_STORAGE_NET_PROTOCOL_NFS: > case VIR_STORAGE_NET_PROTOCOL_NONE: > case VIR_STORAGE_NET_PROTOCOL_LAST: > virReportEnumRangeError(virStorageNetProtocol, src->protocol); > @@ -2111,6 +2112,7 @@ qemuBlockGetBackingStoreString(virStorageSourcePtr > src, > case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG: > case VIR_STORAGE_NET_PROTOCOL_RBD: > case VIR_STORAGE_NET_PROTOCOL_VXHS: > + case VIR_STORAGE_NET_PROTOCOL_NFS: > case VIR_STORAGE_NET_PROTOCOL_SSH: > case VIR_STORAGE_NET_PROTOCOL_LAST: > case VIR_STORAGE_NET_PROTOCOL_NONE: > @@ -2502,6 +2504,7 @@ > qemuBlockStorageSourceCreateGetStorageProps(virStorageSourcePtr src, > case VIR_STORAGE_NET_PROTOCOL_NBD: > case VIR_STORAGE_NET_PROTOCOL_ISCSI: > case VIR_STORAGE_NET_PROTOCOL_VXHS: > + case VIR_STORAGE_NET_PROTOCOL_NFS: > case VIR_STORAGE_NET_PROTOCOL_HTTP: > case VIR_STORAGE_NET_PROTOCOL_HTTPS: > case VIR_STORAGE_NET_PROTOCOL_FTP: > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > index b06a086e18..c58f39ebf1 100644 > --- a/src/qemu/qemu_command.c > +++ b/src/qemu/qemu_command.c > @@ -1044,6 +1044,7 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, > _("'ssh' protocol is not yet supported")); > return NULL; > > + case VIR_STORAGE_NET_PROTOCOL_NFS: > case VIR_STORAGE_NET_PROTOCOL_LAST: > case VIR_STORAGE_NET_PROTOCOL_NONE: > virReportError(VIR_ERR_INTERNAL_ERROR, > diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c > index bfb6e23942..d91c32b2c5 100644 > --- a/src/qemu/qemu_domain.c > +++ b/src/qemu/qemu_domain.c > @@ -9630,6 +9630,8 @@ > qemuDomainPrepareStorageSourceTLS(virStorageSourcePtr src, > case VIR_STORAGE_NET_PROTOCOL_FTP: > case VIR_STORAGE_NET_PROTOCOL_FTPS: > case VIR_STORAGE_NET_PROTOCOL_TFTP: > + case VIR_STORAGE_NET_PROTOCOL_NFS: > + /* Assumed NFS doesn't support TLS (needs Kerberos) */ > case VIR_STORAGE_NET_PROTOCOL_SSH: > if (src->haveTLS == VIR_TRISTATE_BOOL_YES) { > virReportError(VIR_ERR_CONFIG_UNSUPPORTED, > diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c > index 15494c3415..7e89a8839b 100644 > --- a/src/qemu/qemu_snapshot.c > +++ b/src/qemu/qemu_snapshot.c > @@ -413,6 +413,7 @@ > qemuSnapshotPrepareDiskExternalInactive(virDomainSnapshotDiskDefPtr > snapdisk, > case VIR_STORAGE_NET_PROTOCOL_TFTP: > case VIR_STORAGE_NET_PROTOCOL_SSH: > case VIR_STORAGE_NET_PROTOCOL_VXHS: > + case VIR_STORAGE_NET_PROTOCOL_NFS: > case VIR_STORAGE_NET_PROTOCOL_LAST: > virReportError(VIR_ERR_INTERNAL_ERROR, > _("external inactive snapshots are not > supported on " > @@ -501,6 +502,7 @@ qemuSnapshotPrepareDiskExternalActive(virDomainObjPtr > vm, > case VIR_STORAGE_NET_PROTOCOL_TFTP: > case VIR_STORAGE_NET_PROTOCOL_SSH: > case VIR_STORAGE_NET_PROTOCOL_VXHS: > + case VIR_STORAGE_NET_PROTOCOL_NFS: > case VIR_STORAGE_NET_PROTOCOL_LAST: > virReportError(VIR_ERR_INTERNAL_ERROR, > _("external active snapshots are not supported > on " > @@ -631,6 +633,7 @@ qemuSnapshotPrepareDiskInternal(virDomainDiskDefPtr > disk, > case VIR_STORAGE_NET_PROTOCOL_TFTP: > case VIR_STORAGE_NET_PROTOCOL_SSH: > case VIR_STORAGE_NET_PROTOCOL_VXHS: > + case VIR_STORAGE_NET_PROTOCOL_NFS: > case VIR_STORAGE_NET_PROTOCOL_LAST: > virReportError(VIR_ERR_INTERNAL_ERROR, > _("internal inactive snapshots are not > supported on " > diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c > index fac93118fd..103dade0e7 100644 > --- a/src/util/virstoragefile.c > +++ b/src/util/virstoragefile.c > @@ -90,6 +90,7 @@ VIR_ENUM_IMPL(virStorageNetProtocol, > "tftp", > "ssh", > "vxhs", > + "nfs", > ); > > VIR_ENUM_IMPL(virStorageNetHostTransport, > @@ -3152,6 +3153,7 @@ > virStorageSourceParseBackingColon(virStorageSourcePtr src, > case VIR_STORAGE_NET_PROTOCOL_GLUSTER: > case VIR_STORAGE_NET_PROTOCOL_SSH: > case VIR_STORAGE_NET_PROTOCOL_VXHS: > + case VIR_STORAGE_NET_PROTOCOL_NFS: > virReportError(VIR_ERR_INTERNAL_ERROR, > _("malformed backing store path for protocol %s"), > protocol); > @@ -4627,6 +4629,10 @@ > virStorageSourceNetworkDefaultPort(virStorageNetProtocol protocol) > case VIR_STORAGE_NET_PROTOCOL_VXHS: > return 9999; > > + case VIR_STORAGE_NET_PROTOCOL_NFS: > + /* Per > https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/4/html/reference_guide/ch-nfs > */ > + return 2049; > + > case VIR_STORAGE_NET_PROTOCOL_LAST: > case VIR_STORAGE_NET_PROTOCOL_NONE: > return 0; > diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h > index 87763cf389..c5d5f0233a 100644 > --- a/src/util/virstoragefile.h > +++ b/src/util/virstoragefile.h > @@ -135,6 +135,7 @@ typedef enum { > VIR_STORAGE_NET_PROTOCOL_TFTP, > VIR_STORAGE_NET_PROTOCOL_SSH, > VIR_STORAGE_NET_PROTOCOL_VXHS, > + VIR_STORAGE_NET_PROTOCOL_NFS, > > VIR_STORAGE_NET_PROTOCOL_LAST > } virStorageNetProtocol; > -- > 2.29.2 > >