€•÷r Œ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”hhhubh)”}”(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”ˆuh1hhhubh)”}”(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”ˆuh1hhhubh)”}”(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”ˆuh1hhhubh)”}”(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”ˆuh1hhhubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/pt_BR/admin-guide/blockdev/zoned_loop”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(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”ˆuh1hhhubeh}”(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ý)”}”(hX Using 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]”hX Using 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.”…””}”(hj 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.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Khhëh²hubhý)”}”(hX The 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]”hX The 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.”…””}”(hj( h²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.”…””}”(hj6 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”…””}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjL h²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:”…””}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K1hjL h²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”…””}”hjm sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jk h³hÇh´K6hjL h²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:”…””}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K=hjL h²hubjl )”}”(hŒí$ cat /dev/zloop-control
add id=%d,capacity_mb=%u,zone_size_mb=%u,zone_capacity_mb=%u,conv_zones=%u,max_open_zones=%u,base_dir=%s,nr_queues=%u,queue_depth=%u,buffered_io,zone_append=%u,ordered_zone_append,discard_write_cache
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,max_open_zones=%u,base_dir=%s,nr_queues=%u,queue_depth=%u,buffered_io,zone_append=%u,ordered_zone_append,discard_write_cache
remove id=%d”…””}”hj‰ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jk h³hÇh´K@hjL h²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´KDhjL h²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).”…””}”(hj" h²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”…””}”(hjB 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.”…””}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KMhjV ubah}”(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”…””}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KNhjv ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjs 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´KNhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjs 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ŒDTotal number of conventioanl zones starting from
sector 0
Default: 8”h]”hŒDTotal 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Œmax_open_zones”h]”hŒmax_open_zones”…””}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KShjä ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjá ubjÐ )”}”(hhh]”hý)”}”(hŒSMaximum number of open sequential write required zones
(0 for no limit).
Default: 0”h]”hŒSMaximum number of open sequential write required zones
(0 for no limit).
Default: 0”…””}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KShjû 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´KVhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hj ubjÐ )”}”(hhh]”hý)”}”(hX Path to the base directory 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]”hX Path to the base directory 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.”…””}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KVhj2 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”…””}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K\hjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjO ubjÐ )”}”(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”…””}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K\hji ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjO ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÊ hjÇ ubjË )”}”(hhh]”(jÐ )”}”(hhh]”hý)”}”(hŒqueue_depth”h]”hŒqueue_depth”…””}”(hjŒ h²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”…””}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K_hj ubah}”(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”…””}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KahjÀ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hj½ ubjÐ )”}”(hhh]”hý)”}”(hŒ6Do buffered IOs instead of direct IOs (default: false)”h]”hŒ6Do buffered IOs instead of direct IOs (default: false)”…””}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Kahj× ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hj½ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÊ hjÇ ubjË )”}”(hhh]”(jÐ )”}”(hhh]”hý)”}”(hŒzone_append”h]”hŒzone_append”…””}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Kbhj÷ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjô ubjÐ )”}”(hhh]”hý)”}”(hŒÉEnable or disable a zloop device native zone append
support.
Default: 1 (enabled).
If native zone append support is disabled, the block layer
will emulate this operation using regular write
operations.”h]”hŒÉEnable or disable a zloop device native zone append
support.
Default: 1 (enabled).
If native zone append support is disabled, the block layer
will emulate this operation using regular write
operations.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Kbhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjô ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÊ hjÇ ubjË )”}”(hhh]”(jÐ )”}”(hhh]”hý)”}”(hŒordered_zone_append”h]”hŒordered_zone_append”…””}”(hj1 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Œ÷Enable zloop mitigation of zone append reordering.
Default: disabled.
This is useful for testing file systems file data mapping
(extents), as when enabled, this can significantly reduce
the number of data extents needed to for a file data
mapping.”h]”hŒ÷Enable zloop mitigation of zone append reordering.
Default: disabled.
This is useful for testing file systems file data mapping
(extents), as when enabled, this can significantly reduce
the number of data extents needed to for a file data
mapping.”…””}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KhhjE ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hj+ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÊ hjÇ ubjË )”}”(hhh]”(jÐ )”}”(hhh]”hý)”}”(hŒdiscard_write_cache”h]”hŒdiscard_write_cache”…””}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Knhje ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjb ubjÐ )”}”(hhh]”hý)”}”(hŒùDiscard all data that was not explicitly persisted using a
flush operation when the device is removed by truncating
each zone file to the size recorded during the last flush
operation. This simulates power fail events where
uncommitted data is lost.”h]”hŒùDiscard all data that was not explicitly persisted using a
flush operation when the device is removed by truncating
each zone file to the size recorded during the last flush
operation. This simulates power fail events where
uncommitted data is lost.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Knhj| ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjb ubeh}”(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¥ hjL h²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´Kvubhý)”}”(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´Kxhj´ h²hubjl )”}”(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Æuh1jk h³hÇh´K{hj´ 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´K}hj´ 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´Khj´ 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´K†hj´ h²hubeh}”(h]”Œdeleting-a-zoned-device”ah ]”h"]”Œ3) deleting a zoned device”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KvubhÉ)”}”(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´KŠubhý)”}”(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:”…””}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KŒhj h²hubjl )”}”(hŒ…$ modprobe zloop
$ mkdir -p /var/local/zloop/0
$ echo "add capacity_mb=2048,zone_size_mb=64,zone_capacity_mb=63" > /dev/zloop-control”h]”hŒ…$ modprobe zloop
$ mkdir -p /var/local/zloop/0
$ echo "add capacity_mb=2048,zone_size_mb=64,zone_capacity_mb=63" > /dev/zloop-control”…””}”hj2 sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jk h³hÇh´Khj 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):”…””}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K“hj h²hubjl )”}”(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
...”…””}”hjN sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jk h³hÇh´K–hj 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:”…””}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K¤hj h²hubjl )”}”(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)]
...”…””}”hjj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jk h³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:”…””}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K¶hj h²hubjl )”}”(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Æuh1jk h³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²hubjl )”}”(hŒ$ rm -r /var/local/zloop/0”h]”hŒ$ rm -r /var/local/zloop/0”…””}”hj¢ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jk h³hÇh´K¾hj h²hubeh}”(h]”Œexample”ah ]”h"]”Œ
4) example”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KŠubeh}”(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º jI jF j± j® j j
jµ j² uŒ nametypes”}”(j½ ‰jI ‰j± ‰j ‰jµ ‰uh}”(jº hÊjF hëj® jL j
j´ 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.