block: Drop the sheepdog block driver

It was deprecated in commit e1c4269763, v5.2.0.  See that commit
message for rationale.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20210501075747.3293186-1-armbru@redhat.com>
ACKed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
Markus Armbruster 2021-05-01 09:57:47 +02:00
parent 875bb7e35b
commit 09ec85176e
17 changed files with 14 additions and 3593 deletions

View File

@ -342,7 +342,6 @@ build-disabled:
--disable-replication --disable-replication
--disable-sdl --disable-sdl
--disable-seccomp --disable-seccomp
--disable-sheepdog
--disable-slirp --disable-slirp
--disable-smartcard --disable-smartcard
--disable-snappy --disable-snappy

View File

@ -3072,12 +3072,6 @@ L: qemu-block@nongnu.org
S: Supported S: Supported
F: block/rbd.c F: block/rbd.c
Sheepdog
M: Liu Yuan <namei.unix@gmail.com>
L: qemu-block@nongnu.org
S: Odd Fixes
F: block/sheepdog.c
VHDX VHDX
M: Jeff Cody <codyprime@gmail.com> M: Jeff Cody <codyprime@gmail.com>
L: qemu-block@nongnu.org L: qemu-block@nongnu.org

View File

@ -64,7 +64,6 @@ block_ss.add(when: 'CONFIG_POSIX', if_true: [files('file-posix.c'), coref, iokit
block_ss.add(when: libiscsi, if_true: files('iscsi-opts.c')) block_ss.add(when: libiscsi, if_true: files('iscsi-opts.c'))
block_ss.add(when: 'CONFIG_LINUX', if_true: files('nvme.c')) block_ss.add(when: 'CONFIG_LINUX', if_true: files('nvme.c'))
block_ss.add(when: 'CONFIG_REPLICATION', if_true: files('replication.c')) block_ss.add(when: 'CONFIG_REPLICATION', if_true: files('replication.c'))
block_ss.add(when: 'CONFIG_SHEEPDOG', if_true: files('sheepdog.c'))
block_ss.add(when: ['CONFIG_LINUX_AIO', libaio], if_true: files('linux-aio.c')) block_ss.add(when: ['CONFIG_LINUX_AIO', libaio], if_true: files('linux-aio.c'))
block_ss.add(when: ['CONFIG_LINUX_IO_URING', linux_io_uring], if_true: files('io_uring.c')) block_ss.add(when: ['CONFIG_LINUX_IO_URING', linux_io_uring], if_true: files('io_uring.c'))

File diff suppressed because it is too large Load Diff

View File

@ -207,19 +207,5 @@ file_FindEjectableOpticalMedia(const char *media) "Matching using %s"
file_setup_cdrom(const char *partition) "Using %s as optical disc" file_setup_cdrom(const char *partition) "Using %s as optical disc"
file_hdev_is_sg(int type, int version) "SG device found: type=%d, version=%d" file_hdev_is_sg(int type, int version) "SG device found: type=%d, version=%d"
# sheepdog.c
sheepdog_reconnect_to_sdog(void) "Wait for connection to be established"
sheepdog_aio_read_response(void) "disable cache since the server doesn't support it"
sheepdog_open(uint32_t vid) "0x%" PRIx32 " snapshot inode was open"
sheepdog_close(const char *name) "%s"
sheepdog_create_branch_snapshot(uint32_t vdi) "0x%" PRIx32 " is snapshot"
sheepdog_create_branch_created(uint32_t vdi) "0x%" PRIx32 " is created"
sheepdog_create_branch_new(uint32_t vdi) "0x%" PRIx32 " was newly created"
sheepdog_co_rw_vector_update(uint32_t vdi, uint64_t oid, uint64_t data, long idx) "update ino (%" PRIu32 ") %" PRIu64 " %" PRIu64 " %ld"
sheepdog_co_rw_vector_new(uint64_t oid) "new oid 0x%" PRIx64
sheepdog_snapshot_create_info(const char *sn_name, const char *id, const char *name, int64_t size, int is_snapshot) "sn_info: name %s id_str %s s: name %s vm_state_size %" PRId64 " " "is_snapshot %d"
sheepdog_snapshot_create(const char *sn_name, const char *id) "%s %s"
sheepdog_snapshot_create_inode(const char *name, uint32_t snap, uint32_t vdi) "s->inode: name %s snap_id 0x%" PRIx32 " vdi 0x%" PRIx32
# ssh.c # ssh.c
sftp_error(const char *op, const char *ssh_err, int ssh_err_code, int sftp_err_code) "%s failed: %s (libssh error code: %d, sftp error code: %d)" sftp_error(const char *op, const char *ssh_err, int ssh_err_code, int sftp_err_code) "%s failed: %s (libssh error code: %d, sftp error code: %d)"

10
configure vendored
View File

@ -447,7 +447,6 @@ vdi=${default_feature:-yes}
vvfat=${default_feature:-yes} vvfat=${default_feature:-yes}
qed=${default_feature:-yes} qed=${default_feature:-yes}
parallels=${default_feature:-yes} parallels=${default_feature:-yes}
sheepdog="no"
libxml2="$default_feature" libxml2="$default_feature"
debug_mutex="no" debug_mutex="no"
libpmem="$default_feature" libpmem="$default_feature"
@ -1478,10 +1477,6 @@ for opt do
;; ;;
--enable-parallels) parallels="yes" --enable-parallels) parallels="yes"
;; ;;
--disable-sheepdog) sheepdog="no"
;;
--enable-sheepdog) sheepdog="yes"
;;
--disable-vhost-user) vhost_user="no" --disable-vhost-user) vhost_user="no"
;; ;;
--enable-vhost-user) vhost_user="yes" --enable-vhost-user) vhost_user="yes"
@ -1916,7 +1911,6 @@ disabled with --disable-FEATURE, default is enabled if available
vvfat vvfat image format support vvfat vvfat image format support
qed qed image format support qed qed image format support
parallels parallels image format support parallels parallels image format support
sheepdog sheepdog block driver support (deprecated)
crypto-afalg Linux AF_ALG crypto backend driver crypto-afalg Linux AF_ALG crypto backend driver
capstone capstone disassembler support capstone capstone disassembler support
debug-mutex mutex debugging support debug-mutex mutex debugging support
@ -6106,10 +6100,6 @@ fi
if test "$parallels" = "yes" ; then if test "$parallels" = "yes" ; then
echo "CONFIG_PARALLELS=y" >> $config_host_mak echo "CONFIG_PARALLELS=y" >> $config_host_mak
fi fi
if test "$sheepdog" = "yes" ; then
add_to deprecated_features "sheepdog"
echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
fi
if test "$have_mlockall" = "yes" ; then if test "$have_mlockall" = "yes" ; then
echo "HAVE_MLOCKALL=y" >> $config_host_mak echo "HAVE_MLOCKALL=y" >> $config_host_mak
fi fi

View File

@ -285,15 +285,6 @@ The above, converted to the current supported format::
json:{"file.driver":"rbd", "file.pool":"rbd", "file.image":"name"} json:{"file.driver":"rbd", "file.pool":"rbd", "file.image":"name"}
``sheepdog`` driver (since 5.2.0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``sheepdog`` block device driver is deprecated. The corresponding upstream
server project is no longer actively maintained. Users are recommended to switch
to an alternative distributed block device driver such as RBD. The
``qemu-img convert`` command can be used to liberate existing data by moving
it out of sheepdog volumes into an alternative storage backend.
linux-user mode CPUs linux-user mode CPUs
-------------------- --------------------

View File

@ -85,24 +85,6 @@ These are specified using a special URL syntax.
Currently authentication must be done using ssh-agent. Other Currently authentication must be done using ssh-agent. Other
authentication methods may be supported in future. authentication methods may be supported in future.
``Sheepdog``
Sheepdog is a distributed storage system for QEMU. QEMU supports
using either local sheepdog devices or remote networked devices.
Syntax for specifying a sheepdog device
::
sheepdog[+tcp|+unix]://[host:port]/vdiname[?socket=path][#snapid|#tag]
Example
.. parsed-literal::
|qemu_system| --drive file=sheepdog://192.0.2.1:30000/MyVirtualMachine
See also https://sheepdog.github.io/sheepdog/.
``GlusterFS`` ``GlusterFS``
GlusterFS is a user space distributed file system. QEMU supports the GlusterFS is a user space distributed file system. QEMU supports the
use of GlusterFS volumes for hosting VM disk images using TCP, Unix use of GlusterFS volumes for hosting VM disk images using TCP, Unix

View File

@ -547,75 +547,6 @@ also available. Here are some example of the older syntax:
|qemu_system| linux2.img -hdb nbd:unix:/tmp/my_socket |qemu_system| linux2.img -hdb nbd:unix:/tmp/my_socket
|qemu_system| -cdrom nbd:localhost:10809:exportname=debian-500-ppc-netinst |qemu_system| -cdrom nbd:localhost:10809:exportname=debian-500-ppc-netinst
Sheepdog disk images
~~~~~~~~~~~~~~~~~~~~
Sheepdog is a distributed storage system for QEMU. It provides highly
available block level storage volumes that can be attached to
QEMU-based virtual machines.
You can create a Sheepdog disk image with the command:
.. parsed-literal::
qemu-img create sheepdog:///IMAGE SIZE
where *IMAGE* is the Sheepdog image name and *SIZE* is its
size.
To import the existing *FILENAME* to Sheepdog, you can use a
convert command.
.. parsed-literal::
qemu-img convert FILENAME sheepdog:///IMAGE
You can boot from the Sheepdog disk image with the command:
.. parsed-literal::
|qemu_system| sheepdog:///IMAGE
You can also create a snapshot of the Sheepdog image like qcow2.
.. parsed-literal::
qemu-img snapshot -c TAG sheepdog:///IMAGE
where *TAG* is a tag name of the newly created snapshot.
To boot from the Sheepdog snapshot, specify the tag name of the
snapshot.
.. parsed-literal::
|qemu_system| sheepdog:///IMAGE#TAG
You can create a cloned image from the existing snapshot.
.. parsed-literal::
qemu-img create -b sheepdog:///BASE#TAG sheepdog:///IMAGE
where *BASE* is an image name of the source snapshot and *TAG*
is its tag name.
You can use an unix socket instead of an inet socket:
.. parsed-literal::
|qemu_system| sheepdog+unix:///IMAGE?socket=PATH
If the Sheepdog daemon doesn't run on the local host, you need to
specify one of the Sheepdog servers to connect to.
.. parsed-literal::
qemu-img create sheepdog://HOSTNAME:PORT/IMAGE SIZE
|qemu_system| sheepdog://HOSTNAME:PORT/IMAGE
iSCSI LUNs iSCSI LUNs
~~~~~~~~~~ ~~~~~~~~~~

View File

@ -474,3 +474,10 @@ VXHS backend (removed in 5.1)
''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''
The VXHS code did not compile since v2.12.0. It was removed in 5.1. The VXHS code did not compile since v2.12.0. It was removed in 5.1.
``sheepdog`` driver (removed in 6.0)
''''''''''''''''''''''''''''''''''''
The corresponding upstream server project is no longer maintained.
Users are recommended to switch to an alternative distributed block
device driver such as RBD.

View File

@ -2634,7 +2634,6 @@ if have_block
summary_info += {'vvfat support': config_host.has_key('CONFIG_VVFAT')} summary_info += {'vvfat support': config_host.has_key('CONFIG_VVFAT')}
summary_info += {'qed support': config_host.has_key('CONFIG_QED')} summary_info += {'qed support': config_host.has_key('CONFIG_QED')}
summary_info += {'parallels support': config_host.has_key('CONFIG_PARALLELS')} summary_info += {'parallels support': config_host.has_key('CONFIG_PARALLELS')}
summary_info += {'sheepdog support': config_host.has_key('CONFIG_SHEEPDOG')}
summary_info += {'FUSE exports': fuse.found()} summary_info += {'FUSE exports': fuse.found()}
endif endif
summary(summary_info, bool_yn: true, section: 'Block layer support') summary(summary_info, bool_yn: true, section: 'Block layer support')

View File

@ -2818,7 +2818,6 @@
'luks', 'nbd', 'nfs', 'null-aio', 'null-co', 'nvme', 'parallels', 'luks', 'nbd', 'nfs', 'null-aio', 'null-co', 'nvme', 'parallels',
'preallocate', 'qcow', 'qcow2', 'qed', 'quorum', 'raw', 'rbd', 'preallocate', 'qcow', 'qcow2', 'qed', 'quorum', 'raw', 'rbd',
{ 'name': 'replication', 'if': 'defined(CONFIG_REPLICATION)' }, { 'name': 'replication', 'if': 'defined(CONFIG_REPLICATION)' },
'sheepdog',
'ssh', 'throttle', 'vdi', 'vhdx', 'vmdk', 'vpc', 'vvfat' ] } 'ssh', 'throttle', 'vdi', 'vhdx', 'vmdk', 'vpc', 'vvfat' ] }
## ##
@ -3651,26 +3650,6 @@
'*key-secret': 'str', '*key-secret': 'str',
'*server': ['InetSocketAddressBase'] } } '*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: # @ReplicationMode:
# #
@ -4037,7 +4016,6 @@
'rbd': 'BlockdevOptionsRbd', 'rbd': 'BlockdevOptionsRbd',
'replication': { 'type': 'BlockdevOptionsReplication', 'replication': { 'type': 'BlockdevOptionsReplication',
'if': 'defined(CONFIG_REPLICATION)' }, 'if': 'defined(CONFIG_REPLICATION)' },
'sheepdog': 'BlockdevOptionsSheepdog',
'ssh': 'BlockdevOptionsSsh', 'ssh': 'BlockdevOptionsSsh',
'throttle': 'BlockdevOptionsThrottle', 'throttle': 'BlockdevOptionsThrottle',
'vdi': 'BlockdevOptionsGenericFormat', 'vdi': 'BlockdevOptionsGenericFormat',
@ -4496,74 +4474,6 @@
'*zeroed-grain': 'bool' } } '*zeroed-grain': 'bool' } }
##
# @SheepdogRedundancyType:
#
# @full: Create a fully replicated vdi with x copies
# @erasure-coded: Create an erasure coded vdi with x data strips and
# y parity strips
#
# Since: 2.12
##
{ 'enum': 'SheepdogRedundancyType',
'data': [ 'full', 'erasure-coded' ] }
##
# @SheepdogRedundancyFull:
#
# @copies: Number of copies to use (between 1 and 31)
#
# Since: 2.12
##
{ 'struct': 'SheepdogRedundancyFull',
'data': { 'copies': 'int' }}
##
# @SheepdogRedundancyErasureCoded:
#
# @data-strips: Number of data strips to use (one of {2,4,8,16})
# @parity-strips: Number of parity strips to use (between 1 and 15)
#
# Since: 2.12
##
{ 'struct': 'SheepdogRedundancyErasureCoded',
'data': { 'data-strips': 'int',
'parity-strips': 'int' }}
##
# @SheepdogRedundancy:
#
# Since: 2.12
##
{ 'union': 'SheepdogRedundancy',
'base': { 'type': 'SheepdogRedundancyType' },
'discriminator': 'type',
'data': { 'full': 'SheepdogRedundancyFull',
'erasure-coded': 'SheepdogRedundancyErasureCoded' } }
##
# @BlockdevCreateOptionsSheepdog:
#
# Driver specific image creation options for Sheepdog.
#
# @location: Where to store the new image file
# @size: Size of the virtual disk in bytes
# @backing-file: File name of a base image
# @preallocation: Preallocation mode for the new image (default: off;
# allowed values: off, full)
# @redundancy: Redundancy of the image
# @object-size: Object size of the image
#
# Since: 2.12
##
{ 'struct': 'BlockdevCreateOptionsSheepdog',
'data': { 'location': 'BlockdevOptionsSheepdog',
'size': 'size',
'*backing-file': 'str',
'*preallocation': 'PreallocMode',
'*redundancy': 'SheepdogRedundancy',
'*object-size': 'size' } }
## ##
# @BlockdevCreateOptionsSsh: # @BlockdevCreateOptionsSsh:
# #
@ -4687,7 +4597,6 @@
'qcow2': 'BlockdevCreateOptionsQcow2', 'qcow2': 'BlockdevCreateOptionsQcow2',
'qed': 'BlockdevCreateOptionsQed', 'qed': 'BlockdevCreateOptionsQed',
'rbd': 'BlockdevCreateOptionsRbd', 'rbd': 'BlockdevCreateOptionsRbd',
'sheepdog': 'BlockdevCreateOptionsSheepdog',
'ssh': 'BlockdevCreateOptionsSsh', 'ssh': 'BlockdevCreateOptionsSsh',
'vdi': 'BlockdevCreateOptionsVdi', 'vdi': 'BlockdevCreateOptionsVdi',
'vhdx': 'BlockdevCreateOptionsVhdx', 'vhdx': 'BlockdevCreateOptionsVhdx',
@ -5322,7 +5231,7 @@
# #
# Notes: In transaction, if @name is empty, or any snapshot matching @name # Notes: In transaction, if @name is empty, or any snapshot matching @name
# exists, the operation will fail. Only some image formats support it, # exists, the operation will fail. Only some image formats support it,
# for example, qcow2, rbd, and sheepdog. # for example, qcow2, and rbd.
# #
# Since: 1.7 # Since: 1.7
## ##

View File

@ -112,10 +112,10 @@
# #
# On failure, the original disks pre-snapshot attempt will be used. # On failure, the original disks pre-snapshot attempt will be used.
# #
# For internal snapshots, the dictionary contains the device and the snapshot's # For internal snapshots, the dictionary contains the device and the
# name. If an internal snapshot matching name already exists, the request will # snapshot's name. If an internal snapshot matching name already exists,
# be rejected. Only some image formats support it, for example, qcow2, rbd, # the request will be rejected. Only some image formats support it, for
# and sheepdog. # example, qcow2, and rbd,
# #
# On failure, qemu will try delete the newly created internal snapshot in the # On failure, qemu will try delete the newly created internal snapshot in the
# transaction. When an I/O error occurs during deletion, the user needs to fix # transaction. When an I/O error occurs during deletion, the user needs to fix

View File

@ -52,11 +52,6 @@ if [ "$IMGFMT" = "vpc" ]; then
_notrun "image format $IMGFMT does not support large image sizes" _notrun "image format $IMGFMT does not support large image sizes"
fi fi
# sheepdog image is limited to 4TB, so we can't test it here
if [ "$IMGPROTO" = "sheepdog" ]; then
_notrun "image protocol $IMGPROTO does not support large image sizes"
fi
# Sanity check: For raw, we require a file system that permits the creation # Sanity check: For raw, we require a file system that permits the creation
# of a HUGE (but very sparse) file. Check we can create it before continuing. # of a HUGE (but very sparse) file. Check we can create it before continuing.
if [ "$IMGFMT" = "raw" ]; then if [ "$IMGFMT" = "raw" ]; then

View File

@ -39,7 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.pattern . ./common.pattern
_supported_fmt raw qcow2 qed luks _supported_fmt raw qcow2 qed luks
_supported_proto file sheepdog rbd nfs fuse _supported_proto file rbd nfs fuse
echo "=== Creating image" echo "=== Creating image"
echo echo

View File

@ -65,8 +65,7 @@ def make_argparser() -> argparse.ArgumentParser:
mg.add_argument('-' + fmt, dest='imgfmt', action='store_const', mg.add_argument('-' + fmt, dest='imgfmt', action='store_const',
const=fmt, help=f'test {fmt}') const=fmt, help=f'test {fmt}')
protocol_list = ['file', 'rbd', 'sheepdog', 'nbd', 'ssh', 'nfs', protocol_list = ['file', 'rbd', 'nbd', 'ssh', 'nfs', 'fuse']
'fuse']
g_prt = p.add_argument_group( g_prt = p.add_argument_group(
' image protocol options', ' image protocol options',
'The following options set the IMGPROTO environment variable. ' 'The following options set the IMGPROTO environment variable. '

View File

@ -641,10 +641,6 @@ _cleanup_test_img()
rbd --no-progress rm "$TEST_DIR/t.$IMGFMT" > /dev/null rbd --no-progress rm "$TEST_DIR/t.$IMGFMT" > /dev/null
;; ;;
sheepdog)
collie vdi delete "$TEST_DIR/t.$IMGFMT"
;;
esac esac
} }