€•eŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ3/translations/zh_CN/admin-guide/blockdev/zoned_loop”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/zh_TW/admin-guide/blockdev/zoned_loop”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/it_IT/admin-guide/blockdev/zoned_loop”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/ja_JP/admin-guide/blockdev/zoned_loop”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/ko_KR/admin-guide/blockdev/zoned_loop”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/sp_SP/admin-guide/blockdev/zoned_loop”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh£sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1h¡hhhžhhŸŒM/var/lib/git/docbuild/linux/Documentation/admin-guide/blockdev/zoned_loop.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒZoned Loop Block Device”h]”hŒZoned Loop Block Device”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh¶hžhhŸh³h Kubh¢)”}”(hŒWContents: 1) Overview 2) Creating a Zoned Device 3) Deleting a Zoned Device 4) Example”h]”hŒWContents: 1) Overview 2) Creating a Zoned Device 3) Deleting a Zoned Device 4) Example”…””}”hhÉsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1h¡hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ 1) Overview”h]”hŒ 1) Overview”…””}”(hhÚhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh×hžhhŸh³h KubhŒ paragraph”“”)”}”(hX.The zoned loop block device driver (zloop) allows a user to create a zoned block device using one regular file per zone as backing storage. This driver does not directly control any hardware and uses read, write and truncate operations to regular files of a file system to emulate a zoned block device.”h]”hX.The zoned loop block device driver (zloop) allows a user to create a zoned block device using one regular file per zone as backing storage. This driver does not directly control any hardware and uses read, write and truncate operations to regular files of a file system to emulate a zoned block device.”…””}”(hhêhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h Khh×hžhubhé)”}”(hXUsing zloop, zoned block devices with a configurable capacity, zone size and number of conventional zones can be created. The storage for each zone of the device is implemented using a regular file with a maximum size equal to the zone size. The size of a file backing a conventional zone is always equal to the zone size. The size of a file backing a sequential zone indicates the amount of data sequentially written to the file, that is, the size of the file directly indicates the position of the write pointer of the zone.”h]”hXUsing zloop, zoned block devices with a configurable capacity, zone size and number of conventional zones can be created. The storage for each zone of the device is implemented using a regular file with a maximum size equal to the zone size. The size of a file backing a conventional zone is always equal to the zone size. The size of a file backing a sequential zone indicates the amount of data sequentially written to the file, that is, the size of the file directly indicates the position of the write pointer of the zone.”…””}”(hhøhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h Khh×hžhubhé)”}”(hXÝWhen resetting a sequential zone, its backing file size is truncated to zero. Conversely, for a zone finish operation, the backing file is truncated to the zone size. With this, the maximum capacity of a zloop zoned block device created can be larger configured to be larger than the storage space available on the backing file system. Of course, for such configuration, writing more data than the storage space available on the backing file system will result in write errors.”h]”hXÝWhen resetting a sequential zone, its backing file size is truncated to zero. Conversely, for a zone finish operation, the backing file is truncated to the zone size. With this, the maximum capacity of a zloop zoned block device created can be larger configured to be larger than the storage space available on the backing file system. Of course, for such configuration, writing more data than the storage space available on the backing file system will result in write errors.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h Khh×hžhubhé)”}”(hXThe zoned loop block device driver implements a complete zone transition state machine. That is, zones can be empty, implicitly opened, explicitly opened, closed or full. The current implementation does not support any limits on the maximum number of open and active zones.”h]”hXThe zoned loop block device driver implements a complete zone transition state machine. That is, zones can be empty, implicitly opened, explicitly opened, closed or full. The current implementation does not support any limits on the maximum number of open and active zones.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K'hh×hžhubhé)”}”(hŒ?No user tools are necessary to create and delete zloop devices.”h]”hŒ?No user tools are necessary to create and delete zloop devices.”…””}”(hj"hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K,hh×hžhubeh}”(h]”Œoverview”ah ]”h"]”Œ 1) overview”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ2) Creating a Zoned Device”h]”hŒ2) Creating a Zoned Device”…””}”(hj;hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj8hžhhŸh³h K/ubhé)”}”(hŒíOnce the zloop module is loaded (or if zloop is compiled in the kernel), the character device file /dev/zloop-control can be used to add a zloop device. This is done by writing an "add" command directly to the /dev/zloop-control device::”h]”hŒðOnce the zloop module is loaded (or if zloop is compiled in the kernel), the character device file /dev/zloop-control can be used to add a zloop device. This is done by writing an “add†command directly to the /dev/zloop-control device:”…””}”(hjIhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K1hj8hžhubhŒ literal_block”“”)”}”(hŒ¸$ modprobe zloop $ ls -l /dev/zloop* crw-------. 1 root root 10, 123 Jan 6 19:18 /dev/zloop-control $ mkdir -p $ echo "add [options]" > /dev/zloop-control”h]”hŒ¸$ modprobe zloop $ ls -l /dev/zloop* crw-------. 1 root root 10, 123 Jan 6 19:18 /dev/zloop-control $ mkdir -p $ echo "add [options]" > /dev/zloop-control”…””}”hjYsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jWhŸh³h K6hj8hžhubhé)”}”(hŒbThe options available for the add command can be listed by reading the /dev/zloop-control device::”h]”hŒaThe options available for the add command can be listed by reading the /dev/zloop-control device:”…””}”(hjghžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K=hj8hžhubjX)”}”(hŒ¤$ cat /dev/zloop-control add id=%d,capacity_mb=%u,zone_size_mb=%u,zone_capacity_mb=%u,conv_zones=%u,base_dir=%s,nr_queues=%u,queue_depth=%u,buffered_io remove id=%d”h]”hŒ¤$ cat /dev/zloop-control add id=%d,capacity_mb=%u,zone_size_mb=%u,zone_capacity_mb=%u,conv_zones=%u,base_dir=%s,nr_queues=%u,queue_depth=%u,buffered_io remove id=%d”…””}”hjusbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jWhŸh³h K@hj8hžhubhé)”}”(hŒTIn more details, the options that can be used with the "add" command are as follows.”h]”hŒXIn more details, the options that can be used with the “add†command are as follows.”…””}”(hjƒhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KDhj8hžhubhŒtable”“”)”}”(hhh]”hŒtgroup”“”)”}”(hhh]”(hŒcolspec”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j›hj˜ubjœ)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K=uh1j›hj˜ubhŒtbody”“”)”}”(hhh]”(hŒrow”“”)”}”(hhh]”(hŒentry”“”)”}”(hhh]”hé)”}”(hŒid”h]”hŒid”…””}”(hjÀhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KHhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj¸ubj¼)”}”(hhh]”hé)”}”(hŒFDevice number (the X in /dev/zloopX). Default: automatically assigned.”h]”hŒFDevice number (the X in /dev/zloopX). Default: automatically assigned.”…””}”(hj×hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KHhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj³ubj·)”}”(hhh]”(j¼)”}”(hhh]”hé)”}”(hŒ capacity_mb”h]”hŒ capacity_mb”…””}”(hj÷hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KJhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjñubj¼)”}”(hhh]”hé)”}”(hŒ…Device total capacity in MiB. This is always rounded up to the nearest higher multiple of the zone size. Default: 16384 MiB (16 GiB).”h]”hŒ…Device total capacity in MiB. This is always rounded up to the nearest higher multiple of the zone size. Default: 16384 MiB (16 GiB).”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KJhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj³ubj·)”}”(hhh]”(j¼)”}”(hhh]”hé)”}”(hŒ zone_size_mb”h]”hŒ zone_size_mb”…””}”(hj.hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KMhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj(ubj¼)”}”(hhh]”hé)”}”(hŒ*Device zone size in MiB. Default: 256 MiB.”h]”hŒ*Device zone size in MiB. Default: 256 MiB.”…””}”(hjEhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KMhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj³ubj·)”}”(hhh]”(j¼)”}”(hhh]”hé)”}”(hŒzone_capacity_mb”h]”hŒzone_capacity_mb”…””}”(hjehžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KNhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj_ubj¼)”}”(hhh]”hé)”}”(hŒ^Device zone capacity (must always be equal to or lower than the zone size. Default: zone size.”h]”hŒ^Device zone capacity (must always be equal to or lower than the zone size. Default: zone size.”…””}”(hj|hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KNhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj³ubj·)”}”(hhh]”(j¼)”}”(hhh]”hé)”}”(hŒ conv_zones”h]”hŒ conv_zones”…””}”(hjœhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KPhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj–ubj¼)”}”(hhh]”hé)”}”(hŒFTotal number of conventioanl zones starting from sector 0. Default: 8.”h]”hŒFTotal number of conventioanl zones starting from sector 0. Default: 8.”…””}”(hj³hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KPhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj³ubj·)”}”(hhh]”(j¼)”}”(hhh]”hé)”}”(hŒbase_dir”h]”hŒbase_dir”…””}”(hjÓhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KRhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjÍubj¼)”}”(hhh]”hé)”}”(hXPath to the base directoy where to create the directory containing the zone files of the device. Default=/var/local/zloop. The device directory containing the zone files is always named with the device ID. E.g. the default zone file directory for /dev/zloop0 is /var/local/zloop/0.”h]”hXPath to the base directoy where to create the directory containing the zone files of the device. Default=/var/local/zloop. The device directory containing the zone files is always named with the device ID. E.g. the default zone file directory for /dev/zloop0 is /var/local/zloop/0.”…””}”(hjêhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KRhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj³ubj·)”}”(hhh]”(j¼)”}”(hhh]”hé)”}”(hŒ nr_queues”h]”hŒ nr_queues”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KXhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjubj¼)”}”(hhh]”hé)”}”(hŒsNumber of I/O queues of the zoned block device. This value is always capped by the number of online CPUs Default: 1”h]”hŒsNumber of I/O queues of the zoned block device. This value is always capped by the number of online CPUs Default: 1”…””}”(hj!hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KXhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj³ubj·)”}”(hhh]”(j¼)”}”(hhh]”hé)”}”(hŒ queue_depth”h]”hŒ queue_depth”…””}”(hjAhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K[hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj;ubj¼)”}”(hhh]”hé)”}”(hŒ2Maximum I/O queue depth per I/O queue. Default: 64”h]”hŒ2Maximum I/O queue depth per I/O queue. Default: 64”…””}”(hjXhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K[hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj³ubj·)”}”(hhh]”(j¼)”}”(hhh]”hé)”}”(hŒ buffered_io”h]”hŒ buffered_io”…””}”(hjxhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K]hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjrubj¼)”}”(hhh]”hé)”}”(hŒ6Do buffered IOs instead of direct IOs (default: false)”h]”hŒ6Do buffered IOs instead of direct IOs (default: false)”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K]hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j–hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hj8hžhhŸh³h Nubeh}”(h]”Œcreating-a-zoned-device”ah ]”h"]”Œ2) creating a zoned device”ah$]”h&]”uh1h´hh¶hžhhŸh³h K/ubhµ)”}”(hhh]”(hº)”}”(hŒ3) Deleting a Zoned Device”h]”hŒ3) Deleting a Zoned Device”…””}”(hjÇhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjÄhžhhŸh³h Kaubhé)”}”(hŒ•Deleting an unused zoned loop block device is done by issuing the "remove" command to /dev/zloop-control, specifying the ID of the device to remove::”h]”hŒ˜Deleting an unused zoned loop block device is done by issuing the “remove†command to /dev/zloop-control, specifying the ID of the device to remove:”…””}”(hjÕhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KchjÄhžhubjX)”}”(hŒ)$ echo "remove id=X" > /dev/zloop-control”h]”hŒ)$ echo "remove id=X" > /dev/zloop-control”…””}”hjãsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jWhŸh³h KfhjÄhžhubhé)”}”(hŒ,The remove command does not have any option.”h]”hŒ,The remove command does not have any option.”…””}”(hjñhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KhhjÄhžhubhé)”}”(hX±A zoned device that was removed can be re-added again without any change to the state of the device zones: the device zones are restored to their last state before the device was removed. Adding again a zoned device after it was removed must always be done using the same configuration as when the device was first added. If a zone configuration change is detected, an error will be returned and the zoned device will not be created.”h]”hX±A zoned device that was removed can be re-added again without any change to the state of the device zones: the device zones are restored to their last state before the device was removed. Adding again a zoned device after it was removed must always be done using the same configuration as when the device was first added. If a zone configuration change is detected, an error will be returned and the zoned device will not be created.”…””}”(hjÿhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KjhjÄhžhubhé)”}”(hŒ¡To fully delete a zoned device, after executing the remove operation, the device base directory containing the backing files of the device zones must be deleted.”h]”hŒ¡To fully delete a zoned device, after executing the remove operation, the device base directory containing the backing files of the device zones must be deleted.”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KqhjÄhžhubeh}”(h]”Œdeleting-a-zoned-device”ah ]”h"]”Œ3) deleting a zoned device”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kaubhµ)”}”(hhh]”(hº)”}”(hŒ 4) Example”h]”hŒ 4) Example”…””}”(hj&hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj#hžhhŸh³h Kuubhé)”}”(hŒpThe following sequence of commands creates a 2GB zoned device with zones of 64 MB and a zone capacity of 63 MB::”h]”hŒoThe following sequence of commands creates a 2GB zoned device with zones of 64 MB and a zone capacity of 63 MB:”…””}”(hj4hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h Kwhj#hžhubjX)”}”(hŒ„$ modprobe zloop $ mkdir -p /var/local/zloop/0 $ echo "add capacity_mb=2048,zone_size_mb=64,zone_capacity=63MB" > /dev/zloop-control”h]”hŒ„$ modprobe zloop $ mkdir -p /var/local/zloop/0 $ echo "add capacity_mb=2048,zone_size_mb=64,zone_capacity=63MB" > /dev/zloop-control”…””}”hjBsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jWhŸh³h Kzhj#hžhubhé)”}”(hŒ‚For the device created (/dev/zloop0), the zone backing files are all created under the default base directory (/var/local/zloop)::”h]”hŒFor the device created (/dev/zloop0), the zone backing files are all created under the default base directory (/var/local/zloop):”…””}”(hjPhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K~hj#hžhubjX)”}”(hX`$ ls -l /var/local/zloop/0 total 0 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000000 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000001 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000002 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000003 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000004 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000005 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000006 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000007 -rw-------. 1 root root 0 Jan 6 22:23 seq-000008 -rw-------. 1 root root 0 Jan 6 22:23 seq-000009 ...”h]”hX`$ ls -l /var/local/zloop/0 total 0 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000000 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000001 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000002 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000003 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000004 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000005 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000006 -rw-------. 1 root root 67108864 Jan 6 22:23 cnv-000007 -rw-------. 1 root root 0 Jan 6 22:23 seq-000008 -rw-------. 1 root root 0 Jan 6 22:23 seq-000009 ...”…””}”hj^sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jWhŸh³h Khj#hžhubhé)”}”(hŒBThe zoned device created (/dev/zloop0) can then be used normally::”h]”hŒAThe zoned device created (/dev/zloop0) can then be used normally:”…””}”(hjlhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h Khj#hžhubjX)”}”(hX$ lsblk -z NAME ZONED ZONE-SZ ZONE-NR ZONE-AMAX ZONE-OMAX ZONE-APP ZONE-WGRAN zloop0 host-managed 64M 32 0 0 1M 4K $ blkzone report /dev/zloop0 start: 0x000000000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x000020000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x000040000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x000060000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x000080000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x0000a0000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x0000c0000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x0000e0000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x000100000, len 0x020000, cap 0x01f800, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)] start: 0x000120000, len 0x020000, cap 0x01f800, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)] ...”h]”hX$ lsblk -z NAME ZONED ZONE-SZ ZONE-NR ZONE-AMAX ZONE-OMAX ZONE-APP ZONE-WGRAN zloop0 host-managed 64M 32 0 0 1M 4K $ blkzone report /dev/zloop0 start: 0x000000000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x000020000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x000040000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x000060000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x000080000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x0000a0000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x0000c0000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x0000e0000, len 0x020000, cap 0x020000, wptr 0x000000 reset:0 non-seq:0, zcond: 0(nw) [type: 1(CONVENTIONAL)] start: 0x000100000, len 0x020000, cap 0x01f800, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)] start: 0x000120000, len 0x020000, cap 0x01f800, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)] ...”…””}”hjzsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jWhŸh³h K‘hj#hžhubhé)”}”(hŒ0Deleting this device is done using the command::”h]”hŒ/Deleting this device is done using the command:”…””}”(hjˆhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K¡hj#hžhubjX)”}”(hŒ)$ echo "remove id=0" > /dev/zloop-control”h]”hŒ)$ echo "remove id=0" > /dev/zloop-control”…””}”hj–sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jWhŸh³h K£hj#hžhubhé)”}”(hŒÙThe removed device can be re-added again using the same "add" command as when the device was first created. To fully delete a zoned device, its backing files should also be deleted after executing the remove command::”h]”hŒÜThe removed device can be re-added again using the same “add†command as when the device was first created. To fully delete a zoned device, its backing files should also be deleted after executing the remove command:”…””}”(hj¤hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K¥hj#hžhubjX)”}”(hŒ$ rm -r /var/local/zloop/0”h]”hŒ$ rm -r /var/local/zloop/0”…””}”hj²sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jWhŸh³h K©hj#hžhubeh}”(h]”Œexample”ah ]”h"]”Œ 4) example”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kuubeh}”(h]”Œzoned-loop-block-device”ah ]”h"]”Œzoned loop block device”ah$]”h&]”uh1h´hhhžhhŸh³h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h³uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¹NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”j»Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jòŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h³Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jÍjÊj5j2jÁj¾j jjÅjÂuŒ nametypes”}”(j͉j5‰jÁ‰j ‰jʼnuh}”(jÊh¶j2h×j¾j8jjÄjÂj#uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.