SG_REP_ZONES(8) SG3_UTILS SG_REP_ZONES(8)

sg_rep_zones - ارسال دستورات SCSI REPORT ZONES، REALMS یا ZONE DOMAINS

sg_rep_zones [--brief] [--domain] [--find=ZT] [--force] [--help] [--hex] [--inhex=FN] [--json[=JO]] [--js-file=JFN] [--locator=LBA] [--maxlen=LEN] [--num=NUM] [--partial] [--raw] [--readonly] [--realm] [--report=OPT] [--start=LBA] [--statistics] [--verbose] [--version] [--wp] DEVICE

دستور SCSI REPORT ZONES، REPORT REALMS یا REPORT ZONE DOMAINS را به DEVICE ارسال کرده و داده‌های بازگردانده‌شده را رمزگشایی (یا صرفاً خروجی) می‌کند. این دستورات در پیش‌نویس استاندارد ZBC-2، ویرایش ۱۲ (zbc2r12.pdf) یافت می‌شوند. تنها دستور REPORT ZONES در استاندارد اولیه ZBC (INCITS 536-2017) تعریف شده است و پیش‌فرض این ابزار است.

دستور REPORT ZONE DOMAINS هنگامی ارسال (و رمزگشایی) خواهد شد که گزینه --domain داده شود. دستور REPORT REALMS زمانی ارسال (و رمزگشایی) می‌شود که گزینه --realm داده شود.

به‌جای ارسال یک دستور SCSI به DEVICE، اگر گزینه --inhex=FN داده شود، محتوای پرونده با نام FN به‌صورت هگزادسیمال ASCII (یا در صورت ارائه --raw به‌صورت باینری) رمزگشایی شده و سپس طوری پردازش می‌شود که گویی پاسخ دستور بوده است. به‌طور پیش‌فرض فرض می‌شود پاسخ دستور REPORT ZONES است؛ اگر گزینه --domain یا --realm داده شود، پاسخ دستور متناظر با آن فرض می‌گردد.

آرگومان‌های گزینه‌های بلند برای گزینه‌های کوتاه نیز الزامی هستند.

اگرچه یک دیسک ZBC معمولاً اندازه پاسخ به دستور REPORT ZONES را محدود می‌کند (مثلاً به دلیل فیلد «allocation length»)، این خروجی همچنان می‌تواند حجم بالایی داشته باشد. این گزینه تنها فیلدهای موجود در هدر پاسخ به‌علاوه فیلدهای آخرین توصیف‌گر در پاسخ فعلی را رمزگشایی و خروجی می‌دهد.
ارسال یا رمزگشایی دستور SCSI REPORT ZONE DOMAINS.
که در آن ZT شماره نوع ناحیه یا نام اختصاری آن است. اگر پیش از ZT علامت '-' یا '!' بیاید، بررسی برابری معکوس شده و نابرابری بررسی می‌شود؛ به عبارت دیگر: یافتن نخستین موردی که نوع ناحیه داده‌شده نیست انجام می‌شود.
الگوریتم مورد استفاده این گزینه، گزینه‌های --hex، --maxlen=LEN، --num=NUM، --report=OPT و --start=LBA را (در صورت ارائه) در نظر می‌گیرد و سایر گزینه‌ها را نادیده می‌گیرد. این قابلیت در حال حاضر فقط برای دستور Report zones پیاده‌سازی شده است. الگوریتم ممکن است دستور Report zones را مکرراً با بیت PARTIAL فعال و فیلد Zone start LBA افزایشی فراخوانی کند. این کار تا زمانی که شرط ZT مطابقت یابد، تعداد --num=NUM تمام شود یا تعداد نواحی پایان یابد، ادامه می‌یابد.
شماره‌ها و اختصارات ZT هنگامی که گزینه --help دو بار داده شود فهرست می‌شوند. هشدار: استفاده از '!' برای معکوس کردن شرط ممکن است چندان عملی نباشد زیرا پوسته (مانند bash) ممکن است برای '!' معنای خاصی در نظر بگیرد. قرار دادن نقل‌قول تکی در اطراف ZT این مشکل را برای پوسته bash حل می‌کند (مثلاً ‎--find='!c'‎ به معنای یافتن اولین ناحیه‌ای که نوع آن متعارف نیست).
هنگام رمزگشایی پاسخ این دستور، برخی بررسی‌های صحت‌سنجی انجام می‌شود و اگر شکست بخورند پیامی به stderr ارسال شده و وضعیت خروج غیرصفر تنظیم می‌شود. در صورت ارائه این گزینه، از این بررسی‌های صحت‌سنجی صرف‌نظر می‌شود.
نمایش پیام راهنمای نحوه استفاده و سپس خروج. در صورت ارائه دو بار، اطلاعات راهنمای بیشتری خروجی داده می‌شود.
خروجی دادن پاسخ به‌صورت هگزادسیمال در stdout. با یک بار استفاده، تمام پاسخ به‌صورت هگزادسیمال ASCII همراه با آدرس ابتدایی (شروع از ۰) در هر سطر خروجی داده می‌شود. با دو بار استفاده، هر توصیف‌گر ناحیه در پاسخ به‌طور جداگانه در قالب هگزادسیمال خروجی داده می‌شود. با سه بار استفاده، کل پاسخ در قالب هگزادسیمال بدون آدرس ابتدایی (در هر سطر) خروجی داده می‌شود.
وقتی این گزینه دو بار استفاده شود، می‌تواند همراه با گزینه --brief یا --find=ZT مفید باشد تا فقط هدر و توصیف‌گر ناحیه‌ای را به‌صورت هگز خروجی دهد که در صورت نبود گزینه --hex به‌صورت ASCII چاپ می‌شدند.
قالب خروجی هنگام ارائه سه باره این گزینه، برای فراخوانی بعدی با گزینه --inhex=FN مناسب است.
که در آن FN نام پرونده‌ای است که محتوای آن هگزادسیمال ASCII فرض می‌شود. اگر DEVICE نیز ارائه شود، DEVICE نادیده گرفته شده، یک هشدار صادر می‌شود و ابزار به کار خود با رمزگشایی پرونده FN ادامه می‌دهد. برای اطلاعات بیشتر بخش «HEX, BINARY AND JSON FORMATS» را در صفحه راهنمای sg3_utils ببینید. اگر گزینه --raw نیز داده شود، محتوای FN به‌صورت باینری در نظر گرفته می‌شود.
توجه داشته باشید که این ابزار به‌طور پیش‌فرض محتوا را پاسخ دستور REPORT ZONES فرض می‌کند. برای رمزگشایی دو دستور دیگر از گزینه --domain یا --realm استفاده کنید.
خروجی به‌جای متن ساده در قالب JSON خواهد بود. توجه داشته باشید که آرگومان‌های شکل کوتاه و بلند اختیاری هستند و در صورت وجود با «=» شروع می‌شوند و هیچ فاصله‌ای در اطراف «=» مجاز نیست.
صفحه راهنمای sg3_utils_json را ببینید یا از '?' برای JO استفاده کنید تا خلاصه‌ای دریافت نمایید.
خروجی در قالب JSON بوده و به پرونده‌ای با نام JFN ارسال می‌شود. اگر پرونده وجود داشته باشد، محتوای قبلی پاک می‌شود. به‌طور پیش‌فرض، خروجی JSON به stdout ارسال می‌شود.
با ارائه این گزینه، گزینه --json[=JO] ضمنی است و نیازی به ذکر آن نیست. ممکن است برای تنظیم پارامتر JO به مقادیر غیرپیش‌فرض همچنان به گزینه --json[=JO] نیاز باشد.
که در آن LBA نقشی مشابه آنچه در --start=LBA دارد ایفا می‌کند. این نام فیلدی است که در دستورات REPORT REALMS و REPORT ZONE DOMAINS استفاده می‌شود.
که در آن LEN (حداکثر) طول پاسخ برحسب بایت است. این مقدار در فیلد «allocation length» در cdb قرار می‌گیرد. در صورت عدم ارائه (یا صفر بودن LEN)، مقدار 16384 استفاده می‌شود. حداکثر مقدار مجاز برای LEN برابر 2097152 است.
که در آن NUM (حداکثر) تعداد توصیف‌گرهای ناحیه برای چاپ است. مقدار پیش‌فرض صفر است که به معنای چاپ تمامی توصیف‌گرهای ناحیه بازگردانده‌شده توسط دستور REPORT ZONES می‌باشد.
تنظیم بیت PARTIAL در cdb. بدون تنظیم بیت PARTIAL، یک دیسک ZBC تلاش می‌کند پاسخی شامل تمام نواحی از LBA تا انتهای دیسک تشکیل دهد. اگر تعداد زیادی ناحیه وجود داشته باشد (مثلاً بیش از ۱۰٬۰۰۰)، این پاسخ حجیم بریده می‌شود تا از فیلد «allocation length» در cdb فراتر نرود (--maxlen=LEN را ببینید). مزیت این کار این است که تعداد نواحی (باقی‌مانده) روی دیسک قابل محاسبه است. عیب آن مدت زمانی است که ممکن است طول بکشد.
با تنظیم بیت PARTIAL در cdb، تنها تعداد نواحی که فیلد «allocation length» ایجاب می‌کند دریافت می‌شوند. این کار می‌تواند بسیار سریع‌تر از همان دستور بدون تنظیم بیت PARTIAL باشد.
هنگام پیمایش در میان نواحی یک دیسک ZBC، این فرآیند با تنظیم بیت PARTIAL سریع‌تر خواهد بود. معمولاً --start=LBA روی صفر یا مقدار [LBA + zone_length] مربوط به آخرین ناحیه گزارش‌شده در تکرار قبلی تنظیم می‌شود.
خروجی دادن پاسخ به‌صورت باینری (در stdout)، مگر اینکه گزینه --inhex=FN نیز داده شده باشد. در آن صورت نام پرونده ورودی (FN) به‌صورت باینری رمزگشایی می‌شود (و خروجی باینری نخواهد بود، اما ممکن است هگز باشد).
باز کردن DEVICE در حالت فقط‌خواندنی (مثلاً در یونیکس با فلگ O_RDONLY). حالت پیش‌فرض، باز کردن آن در حالت خواندن-نوشتن است.
ارسال یا رمزگشایی دستور SCSI REPORT REALMS.
که در آن OPT در فیلد REPORTING OPTION در cdb قرار می‌گیرد. گزینه‌های گزارش‌دهی میان REPORT ZONES، REPORT ZONE DOMAINS و REPORT REALMS متفاوت است. اگر گزینه --help دو بار داده شود (یا معادل آن فهرستی از گزینه‌های گزارش‌دهی موجود برای هر دستور خروجی داده می‌شود.
مقدار پیش‌فرض برای REPORT ZONES عدد ۰ است که به معنای گزارش فهرستی از تمامی نواحی است. برخی مقادیر دیگر عبارتند از: ۱ برای فهرست نواحی با وضعیت خالی؛ ۲ برای وضعیت بازشده به‌طور ضمنی؛ ۳ برای وضعیت بازشده به‌طور صریح؛ ۴ برای وضعیت بسته؛ ۵ برای وضعیت پر؛ ۶ برای وضعیت فقط‌خواندنی؛ ۷ برای وضعیت آفلاین. مقادیر دیگر عبارتند از: 0x10 برای فهرست نواحی با فعال بودن 'RWP recommended'؛ 0x11 برای فهرست نواحی با منبع نوشتن غیرمتوالی فعال؛ 0x3e برای فهرست نواحی به‌جز نواحی GAP، و 0x3f برای فهرست نواحی با وضعیت 'not write pointer'.
که در آن LBA در ابتدا یا درون نخستین ناحیه مورد گزارش قرار دارد. مقدار پیش‌فرض ۰ است. اگر LBA یک LBA شروع ناحیه نباشد، LBA شروع ناحیه قبلی برای گزارش‌دهی استفاده می‌شود. فرض بر ده‌دهی بودن است مگر اینکه با '0x' شروع شده یا پسوند 'h' داشته باشد که نشان‌دهنده هگزادسیمال است.
فیلد LBA شروع ناحیه مورد استفاده در دستور REPORT ZONES برای دو دستور جدیدتر ZBC-2 به فیلد مکان‌یاب domain/realm تغییر یافت. برای این ابزار --locator=LBA و --start=LBA قابل تعویض هستند.
تمام یا تعداد محدودی از نواحی گزارش‌شده را بررسی کرده، آمار را جمع‌آوری نموده و چاپ می‌کند (در stdout). تعداد نواحی بررسی‌شده ممکن است توسط هر ترکیبی از گزینه‌های --num=NUM، --report=OPT و --start=LBA محدود شود. نام گزینه بلند را می‌توان به --stats خلاصه کرد.
افزایش سطح پرگویی (یعنی خروجی اشکال‌زدایی).
چاپ رشته نگارش و سپس خروج.
چاپ اشاره‌گر نوشتن (write pointer) فقط به‌صورت هگز. در نبود خطا، یک LBA هگز در هر سطر چاپ خواهد شد، یک سطر برای هر ناحیه. می‌تواند به‌طور مفیدی با گزینه‌های --num=NUM و --start=LBA ترکیب شود.

وضعیت خروج sg_rep_zones در صورت موفقیت ۰ است. در غیر این صورت صفحه راهنمای sg3_utils(8) را ببینید.

نوشته شده توسط Douglas Gilbert.

گزارش باگ‌ها به <dgilbert at interlog dot com>.

حق نشر © 2014-2023 Douglas Gilbert
این نرم‌افزار تحت مجوز BSD-2-Clause توزیع می‌شود. هیچ ضمانتی وجود ندارد؛ حتی برای قابلیت فروش یا تناسب برای یک هدف خاص.

sg_reset_wp,sg_zone,sg3_utils_json(sg3_utils), zbd(libzbd), blkzone(util-linux)

June 2023 sg3_utils-1.48