.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2017, Oracle. All rights reserved. .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ioctl_getfsmap 2 "3 мая 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ ioctl_getfsmap \- возвращает физическую планировку файловой системы .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP/* Definition of \fBFS_IOC_GETFSMAP\fP, \fB FM?_OF_*\fP, and \fB*FMR_OWN_*\fP constants */ \fB#include \fP .PP \fBint ioctl(int \fP\fIfd\fP\fB, FS_IOC_GETFSMAP, struct fsmap_head * \fP\fIarg\fP\fB);\fP .fi .SH ОПИСАНИЕ Операция \fBioctl\fP(2) возвращает отображение физических зон для файловой системы. Эта информация может использоваться для понимания какие файлы отображены на физический блок, обследования свободного пространства, поиска известных плохих блоков и для других вещей. .PP Основным аргументом данной операции является указатель на единственную структуру \fIstruct fsmap_head\fP: .PP .in +4n .EX struct fsmap { __u32 fmr_device; /* Device ID */ __u32 fmr_flags; /* Mapping flags */ __u64 fmr_physical; /* Device offset of segment */ __u64 fmr_owner; /* Owner ID */ __u64 fmr_offset; /* File offset of segment */ __u64 fmr_length; /* Length of segment */ __u64 fmr_reserved[3]; /* Must be zero */ }; \& struct fsmap_head { __u32 fmh_iflags; /* Control flags */ __u32 fmh_oflags; /* Output flags */ __u32 fmh_count; /* # of entries in array incl. input */ __u32 fmh_entries; /* # of entries filled in (output) */ __u64 fmh_reserved[6]; /* Must be zero */ \& struct fsmap fmh_keys[2]; /* Low and high keys for the mapping search */ struct fsmap fmh_recs[]; /* Returned records */ }; .EE .in .PP В двух массивах элементов \fIfmh_keys\fP задаются низший и высший обратные отображающие ключи, по которым приложение хотело бы получить информацию о физическом отображении. Обратный отображающий ключ состоит из кортежа (устройство, блок, владелец, смещение). Поля владельца и смещения являются частью ключа, так как в реализации некоторых файловых систем используются общие физические блоки для нескольких файлов и поэтому может возвращаться несколько отображений для заданного физического блока. .PP .\" Отображения файловых систем копируются в массив \fIfmh_recs\fP, следующий сразу за данными заголовка. .SS "Поля struct fsmap_head" Поле \fIfmh_iflags\fP представляет собой битовую маску, передаваемую ядру для изменения результата. В настоящее время ни одного флага не определено, поэтому вызывающий должен присвоить этому значению ноль. .PP Поле \fIfmh_oflags\fP представляет собой битовую маску, устанавливаемую ядром в соответствии с возвращаемыми отображениями. Если установлен \fBFMH_OF_DEV_T\fP, то поле \fIfmr_device\fP представляет структуру \fIdev_t\fP, содержащую основной и вспомогательный номера блочного устройства. .PP Поле \fIfmh_count\fP содержит количество элементов массива, передаваемого ядру. Если поле равно нулю, то \fIfmh_entries\fP будет присвоено количество записей, которые были бы возвращены, если бы массив был бы достаточного размера; информация об отображении не возвращается. .PP В поле \fIfmh_entries\fP содержится количество элементов в массиве \fIfmh_recs\fP, содержащем полезную информацию. .PP .\" Поля \fIfmh_reserved\fP должны быть равны нулю. .SS Ключи Две записи ключей в \fIfsmap_head.fmh_keys\fP задают низший и высший записи зон в пространстве ключе, которые вызывающий хочет получить. Для файловой системы, использующей общие блоки между файлами, вероятно, потребуется кортеж (\fIустройство\fP, \fIфизический_блок\fP, \fIвладелец\fP, \fIсмещение\fP, \fIфлаги\fP) в качестве уникального индекса отображающей записи файловой системы. Для классических файловых систем без общих блоков для указания записи может быть достаточно только (\fIустройство\fP, \fIфизический_блок\fP, \fIфлаги\fP). Например, если низший ключ равен (8:0, 36864, 0, 0, 0), то файловая система вернёт только записи для зон, начинающихся диске с 36\ КиБ или выше. Если высший ключ равен (8:0, 1048576, 0, 0, 0), то возвратятся только записи до 1\ МиБ. Формат \fIfmr_device\fP в ключах должен совпадать с форматом того же поля в возвращаемых записях (описано далее). По соглашению при запросе поле \fIfsmap_head.fmh_keys[0]\fP должно содержать низший ключ, а \fIfsmap_head.fmh_keys[1]\fP должно содержать высший ключ. .PP .\" По соглашению, если \fIfmr_length\fP задано в низшем ключе, то, при необходимости, оно будет добавлено к \fIfmr_block\fP или \fIfmr_offset\fP. Вызывающий может использовать эту тонкость для настройки последующих вызовов копируя \fIfsmap_head.fmh_recs[fsmap_head.fmh_entries \- 1]\fP в низший ключ. Эту возможность предоставляет функция \fIfsmap_advance\fP (определена в \fIlinux/fsmap.h\fP). .SS "Поля struct fsmap" Поле \fIfmr_device\fP уникально определяет нижележащее устройство хранения. Если в заголовке поля \fIfmh_oflags\fP установлен флаг \fBFMH_OF_DEV_T\fP, то это поле содержит \fIdev_t\fP, из которого можно извлечь основной и вспомогательный номера. Если флаг не установлен, то это поле содержит значение, которое должно быть уникально для каждого уникального устройства хранения. .PP Поле \fIfmr_physical\fP содержит дисковый адрес зоны в байтах. .PP Поле \fIfmr_owner\fP содержит владельца зоны (extent). Оно равно номеру иноды, если в поле \fIfmr_flags\fP не установлен флаг \fBFMR_OF_SPECIAL_OWNER\fP, иначе значение определяется файловой системой. Подробней о значениях владельца смотрите в разделе ниже. .PP Поле \fIfmr_offset\fP содержит логический адрес (в байтах) в записи отображения. Оно не имеет смысла, если в \fIfmr_flags\fP указан \fBFMR_OF_SPECIAL_OWNER\fP или \fBFMR_OF_EXTENT_MAP\fP. .PP Поле \fIfmr_length\fP содержит длину зоны в байтах. .PP Поле \fIfmr_flags\fP является битовой маской флагов состояния зоны. Описание бит: .RS 0.4i .TP \fBFMR_OF_PREALLOC\fP Зона выделена, но пока не записана. .TP \fBFMR_OF_ATTR_FORK\fP Зона содержит расширенные атрибуты данных. .TP \fBFMR_OF_EXTENT_MAP\fP Зона содержит карту отображения зоны владельца. .TP \fBFMR_OF_SHARED\fP Части зоны можно использовать совместно. .TP \fBFMR_OF_SPECIAL_OWNER\fP Поле \fIfmr_owner\fP содержит специальное значение, а не номер иноды. .TP \fBFMR_OF_LAST\fP Это последняя запись в наборе данных. .RE .PP .\" Полю \fIfmr_reserved\fP будет присвоен ноль. .SS "Значения владельца" В принципе, значение поля \fIfmr_owner\fP для зона не метаданных должно быть равно номеру иноды. Однако файловые системы не обязаны сообщать номера инод; вместо них они могут выдавать \fBFMR_OWN_UNKNOWN\fP, если: номер иноды нельзя получить простым образом, вызывающий не имеет достаточно прав, файловая система не поддерживает стабильные номера инод или по другим причинам. Если файловая система хочет ограничить выдачу номеров инод определёнными мандатами процесса, то для этой цели настоятельно рекомендуется использовать мандат \fBCAP_SYS_ADMIN\fP. .TP Для всех файловых систем имеются следующие специальные значения владельца: .RS 0.4i .TP \fBFMR_OWN_FREE\fP Свободное место. .TP \fBFMR_OWN_UNKNOWN\fP Данная зона используется, но её владелец не известен или его нельзя легко возвратить. .TP \fBFMR_OWN_METADATA\fP Данная зона является метаданными файловой системы. .RE .PP У XFS имеются следующие специальные значения владельца: .RS 0.4i .TP \fBXFS_FMR_OWN_FREE\fP Свободное место. .TP \fBXFS_FMR_OWN_UNKNOWN\fP Данная зона используется, но её владелец не известен или его нельзя легко возвратить. .TP \fBXFS_FMR_OWN_FS\fP Статические метаданные файловой системы, находящиеся по постоянному адресу. К ним относятся: суперблок AG, заголовки AGF, AGFL и AGI. .TP \fBXFS_FMR_OWN_LOG\fP Журнал файловой системы. .TP \fBXFS_FMR_OWN_AG\fP Выделение группы метаданных, например B\-деревья свободного места и B\-деревья отображения. .TP \fBXFS_FMR_OWN_INOBT\fP B\-деревья инод и свободных инод. .TP \fBXFS_FMR_OWN_INODES\fP Записи инод. .TP \fBXFS_FMR_OWN_REFC\fP Информация о счётчике ссылок. .TP \fBXFS_FMR_OWN_COW\fP Эта зона используется для организации копирования при записи. .TP \fBXFS_FMR_OWN_DEFECTIVE:\fP Данная зона помечена как испорченная или файловой системой или самим устройством. .RE .PP У ext4 имеются следующие специальные значения владельца: .RS 0.4i .TP \fBEXT4_FMR_OWN_FREE\fP Свободное место. .TP \fBEXT4_FMR_OWN_UNKNOWN\fP Данная зона используется, но её владелец не известен или его нельзя легко возвратить. .TP \fBEXT4_FMR_OWN_FS\fP Статические метаданные файловой системы, находящиеся по постоянному адресу. К ним относятся суперблок и групповые дескрипторы. .TP \fBEXT4_FMR_OWN_LOG\fP Журнал файловой системы. .TP \fBEXT4_FMR_OWN_INODES\fP Записи инод. .TP \fBEXT4_FMR_OWN_BLKBM\fP Битовая карта блоков. .TP \fBEXT4_FMR_OWN_INOBM\fP Битовая карта инод. .RE .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" В случае ошибки возвращается \-1, а \fIerrno\fP устанавливается в значение ошибки. .SH ОШИБКИ Значениями \fIerrno\fP могут быть (и не только эти): .TP \fBEBADF\fP Дескриптор \fIfd\fP не открыт на чтение. .TP \fBEBADMSG\fP Файловая система обнаружила ошибку контрольной суммы в метаданных. .TP \fBEFAULT\fP Переданный указатель отображает недопустимый адрес памяти. .TP \fBEINVAL\fP Недостаточный размер массива, ключи не указывают на корректную часть файловой системы, низший ключ указывает на более высокое место в адресном пространстве физического хранилища файловой системы чем высший ключ или передано ненулевое значение в одном из полей, где должен быть ноль. .TP \fBENOMEM\fP Недостаточно памяти для выполнения запроса. .TP \fBEOPNOTSUPP\fP Файловая система не поддерживает данную команду. .TP \fBEUCLEAN\fP Метаданные файловой системы повреждены и требуют починки. .SH СТАНДАРТЫ Linux. .PP Not all filesystems support it. .SH ИСТОРИЯ Linux 4.12. .SH ПРИМЕРЫ Пример программы смотрите в \fIio/fsmap.c\fP из дистрибутива \fIxfsprogs\fP. .SH "СМ. ТАКЖЕ" \fBioctl\fP(2) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitriy S. Seregin , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .