| SG_STREAM_CTL(8) | SG3_UTILS | SG_STREAM_CTL(8) |
نام (NAME)
sg_stream_ctl - ارسال دستور SCSI GET STREAM STATUS یا STREAM CONTROL
خلاصه دستور (SYNOPSIS)
sg_stream_ctl [--brief] [--close] [--ctl=CTL] [--get] [--help] [--hex] [--id=SID] [--inhex=FN] [--json[=JO]] [--js-file=JFN] [--maxlen=LEN] [--open] [--raw] [--readonly] [--verbose] [--version] DEVICE
توضیحات (DESCRIPTION)
یک دستور SCSI GET STREAM STATUS یا STREAM CONTROL را به DEVICE ارسال میکند. این دستورات، همراه با WRITE STREAM (۱۶ و ۳۲) و چندین فیلد در صفحه VPD توسعه محدودیتهای بلوک (Block Limits Extension) [0xb7]، از مفهوم جریانها (streams) پشتیبانی میکنند. همچنین صفحه حالت گروهبندی نکات راهنمای ورودی/خروجی (IO advice hints grouping mode page) [0xa,0x4] وجود دارد. در میان موارد دیگر، آن صفحه حالت مشخص میکند که آیا یک شناسه جریان میتواند وظیفه مضاعفی به عنوان شماره گروه موجود در بیشتر دستورات دسترسی به رسانه SCSI (مانند READ، WRITE و VERIFY) داشته باشد یا خیر.
دستورات جریان در پیشنویس ۸ استاندارد SBC-4 (سپتامبر ۲۰۱۵) اضافه شدند. این دستورات در پیشنویس ۵ استاندارد SBC-5 (اکتبر ۲۰۲۳) گسترش یافتند.
هر دو دستور GET STREAM STATUS و STREAM CONTROL انتظار دریافت داده از DEVICE را دارند (که به عنوان 'data-in' یا داده ورودی شناخته میشود). در مورد STREAM CONTROL، تنها حالت 'open' (STR_CTL<--0x1) در عمل به data-in نیاز دارد زیرا در صورت باز شدن موفقیتآمیز، حاوی "Assigned stream id" (شناسه جریان تخصیصیافته) است. شناسه جریان تخصیصیافته باید توسط دستورات بعدی WRITE STREAM و در نهایت توسط بستن STREAM CONTROL (STR_CTL<--0x2) استفاده شود. شناسههای معتبر جریان بین ۱ تا ۶۵۵۳۵ (شامل هر دو) هستند.
گزینهها (OPTIONS)
آرگومانهای گزینههای طولانی برای گزینههای کوتاه نیز اجباری هستند.
- -b, --brief
- این گزینه خروجی دستور GET STREAM STATUS را تنها به یک عدد (در مبنای دهدهی) در هر خط ارسالی به خروجی استاندارد (stdout) کاهش میدهد. این اعداد، شناسههای جریانهایی هستند که در حال حاضر باز میباشند. در صورت بروز خطا، مقدار -1 به خروجی استاندارد ارسال شده و پیامهای مربوط به خطا به خطای استاندارد (stderr) ارسال میشوند. حالت پیشفرض این است که کلمات (و فیلدهای) بیشتری از پاسخ GET STREAM STATUS چاپ شود.
- -c, --close
- دستور STREAM CONTROL را انتخاب کرده و STR_CTL<--0x2 (یعنی 'close') را تنظیم میکند. گزینه --id=SID نیز باید مشخص شود زیرا مقدار پیشفرض آن 0 است که یک شناسه جریان معتبر نیست.
- -C, --ctl=CTL
- CTL مقداری است که در فیلد STR_CTL از دستور STREAM CONTROL (cdb) قرار میگیرد. این یک فیلد دو بیتی است، بنابراین ۴ حالت مختلف دارد: ۰ و ۳ رزرو شدهاند؛ ۱ یک جریان جدید را باز میکند و ۲ شناسه جریان دادهشده را میبندد. '--ctl=1' معادل '--open' و '--ctl=2' معادل '--close' است.
- -g, --get
- دستور GET STREAM STATUS را انتخاب میکند. اگر گزینه --id=SID نیز داده شده باشد، پاسخ با فهرست کردن شناسههای جریان باز از SID و شامل آن آغاز میشود. اگر گزینه --id=SID داده نشود (یا SID برابر با 0 باشد)، تا زمانی که طول تخصیص (allocation length) به اندازه کافی بزرگ باشد، تمام شناسههای جریان باز در پاسخ (data-in) بازگردانده خواهند شد. طول تخصیص به طور پیشفرض ۲۴۸ بایت است که میتوان آن را با گزینه --maxlen=LEN بازنویسی کرد.
- معمولاً نیازی به مشخص کردن این گزینه نیست، زیرا فراخوانی دستور GET STREAM STATUS در صورت نبود هر گزینه "انتخابکننده" دیگر، اقدام پیشفرض این ابزار است.
- -h, --help
- چاپ پیام راهنمای استفاده و سپس خروج.
- -H, --hex
- -H, --hex
- خروجی پاسخ این دستور را به صورت هگزادسیمال اسکی (ASCII hex) چاپ میکند. هر خط ۱۶ بایتی با یک آدرس یا نمایه که از ۰ شروع میشود پیشوند میگیرد و این آدرس نیز در مبنای شانزده (hex) است. اگر دو بار داده شود، نمایش اسکی هر بایت به انتهای خروجی خط اضافه میشود. اگر سه بار یا بیشتر داده شود، تنها مقدار هگزادسیمال اسکی هر بایت، ۱۶ بایت در هر خط چاپ میشود (یعنی بدون آدرس ابتدایی یا نمایش اسکی انتهایی). این شکل اخیر برای قرار دادن در یک فایل و استفاده با گزینه --inhex=FN در فراخوانیهای بعدی مناسب است.
- -i, --id=SID
- SID یک شناسه جریان است، مقداری بین ۱ تا ۶۵۵۳۵. این مقدار توسط STREAM CONTROL (close) برای مشخص کردن جریانی که باید بسته شود استفاده میشود. همچنین توسط دستور GET STREAM STATUS به عنوان شناسه جریان شروع (از و شامل آن) به کار میرود؛ بنابراین شناسههای جریانی که کمتر از SID باشند در پاسخ ظاهر نخواهند شد.
- -I, --inhex=FN
- که در آن FN
نام فایلی
است که فرض
میشود
محتویات آن
هگزادسیمال
اسکی (ASCII hex) است.
اگر DEVICE نیز
داده شده
باشد، DEVICE
نادیده
گرفته
میشود، یک
هشدار صادر
شده و ابزار
به کار خود
با
رمزگشایی
فایل
نامبردهشده
با FN ادامه
میدهد.
برای
اطلاعات
بیشتر، بخش
"HEX, BINARY AND JSON FORMATS" را در
صفحه
راهنمای sg3_utils
ببینید. اگر
گزینه --raw
نیز داده
شود، با
محتویات FN
به عنوان
باینری
رفتار
میشود.
FN ممکن است حاوی دادههایی باشد که بیانگر پاسخ به یک دستور SCSI GET STREAM STATUS یا STREAM CONTROL هستند. پیشفرض این ابزار انتظار برای مورد اول است. هنگامی که FN شامل دادههای پاسخ یک دستور STREAM CONTROL باشد، باید یک گزینه اضافی (به جز این گزینه) مشخص شود: یکی از گزینههای --close، --ctl=CTL یا --open. - -j[=JO], --json[=JO]
- خروجی به
جای متن
ساده در
قالب JSON
ارائه
میشود.
توجه داشته
باشید که
آرگومانهای
شکل کوتاه و
بلند به
خودی خود
اختیاری
هستند و در
صورت وجود
با "=" شروع
میشوند و
هیچ فاصله
خالی در
اطراف آن "="
مجاز نیست.
صفحه راهنمای sg3_utils_json را ببینید یا برای دریافت خلاصه، از '?' برای JO استفاده کنید. - -J, --js-file=JFN
- خروجی در
قالب JSON است و
به فایلی به
نام JFN
فرستاده
میشود. اگر
آن فایل از
قبل وجود
داشته
باشد،
محتوای آن
پاک (truncate)
میشود. به
طور
پیشفرض،
خروجی JSON به stdout
فرستاده
میشود.
هنگامی که این گزینه داده شود، گزینه --json[=JO] به صورت ضمنی در نظر گرفته میشود و نیازی به مشخص کردن آن نیست. گزینه --json[=JO] ممکن است همچنان برای تنظیم پارامتر JO به مقادیر غیرپیشفرض نیاز باشد. - -m, --maxlen=LEN
- LEN حداکثر طولی است که پاسخ میتواند داشته باشد. این مقدار به فیلد ALLOCATION LENGTH (طول تخصیص) در هر دو دستور تبدیل میشود. مقدار پیشفرض (در صورت نبود این گزینه) برای STREAM CONTROL برابر با ۸ بایت و برای GET STREAM STATUS برابر با ۲۴۸ بایت است.
- -o, --open
- دستور STREAM CONTROL را انتخاب کرده و STR_CTL<--0x1 (یعنی 'open') را تنظیم میکند. اگر گزینه --id=SID داده شود، نادیده گرفته خواهد شد. کاربر باید پاسخ را مشاهده کند زیرا در صورت موفقیتآمیز بودن باز کردن، "Assigned stream id" روی stdout چاپ میشود؛ در غیر این صورت '-1' به stdout فرستاده شده و پیامهای خطا به stderr فرستاده میشوند. اگر گزینه --brief نیز داده شود، تنها چیزی که به stdout فرستاده میشود عدد شناسه جریان تخصیصیافته (۱ تا ۶۵۵۳۵ شامل هر دو) یا '-1' در صورت بروز خطا خواهد بود.
- -r, --readonly
- این گزینه هنگام باز کردن DEVICE دادهشده توسط سیستمعامل زیربنایی، پرچم 'read-only' (فقطخواندنی) را تنظیم میکند. این ممکن است کار نکند زیرا سیستمعاملها نمیتوانند به راحتی تشخیص دهند که آیا یک دستور عبوری (pass-through)، یک عملیات خواندن منطقی است یا نوشتن بر روی رسانه (یا فرادادههای آن)، بنابراین رویکردی محتاطانه در پیش گرفته و بدون توجه به آنچه توسط دستور عبوری انجام میشود، هنگام باز کردن DEVICE به مجوزهای از نوع خواندن-نوشتن نیاز دارند.
- -R, --raw
- پاسخ را به
صورت
باینری (به stdout)
چاپ
میکند،
مگر اینکه
گزینه --inhex=FN
نیز داده
شده باشد.
در آن صورت،
نام فایل
ورودی (FN) به
صورت
باینری
رمزگشایی
میشود (و
خروجی به
صورت
باینری
_نخواهد_
بود).
برای تعدیل این محدودیت نهایی، این گزینه میتواند چندین بار داده شود. اگر این گزینه یک یا سه بار مشخص شود، FN باینری فرض میشود. اگر این گزینه دو یا سه بار مشخص شود، خروجی (رمزگشایینشده) به صورت باینری خواهد بود. این اقدامات تنها زمانی اعمال میشوند که گزینه --inhex=FN داده شده باشد. - -v, --verbose
- افزایش سطح پرگویی (یعنی خروجی اشکالزدایی).
- -V, --version
- چاپ رشته نسخه و سپس خروج.
نکات (NOTES)
هیچ دستور خواندن خاصی برای جریانها وجود ندارد. این بدان معناست که میتوان از خواندنهای "عادی" (۶، ۱۰، ۱۲، ۱۶ یا ۳۲) استفاده کرد. توجه داشته باشید هنگامی که یک جریان بسته میشود، تمامی منابع مرتبط با آن شناسه جریان، به جز دادههای موجود در LBAهای نوشتهشده، آزاد (حذف) میشوند. برای اطمینان از اینکه بازخوانی دادهها به دلیل بازیابی خطا (در صورت بروز خطاهای رسانه) بیش از حد به تاخیر نیفتد، کاربر میتواند فیلد RECOVERY TIME LIMIT (محدودیت زمان بازیابی یا RTL، با واحد میلیثانیه برای مقادیر غیرصفر) را در صفحه حالت 'Read-write error recovery' تنظیم کند. این کار را میتوان با ابزار sdparm انجام داد.
دستورات SCSI WRITE STREAM (۱۶ و ۳۲) را میتوان در ابزار sg_write_x در همین بسته یافت.
وضعیت خروج (EXIT STATUS)
وضعیت خروج sg_stream_ctl در صورت موفقیت ۰ است. در غیر این صورت صفحه راهنمای sg3_utils(8) را ببینید.
نویسندگان (AUTHORS)
نوشتهشده توسط Douglas Gilbert.
گزارش باگها (REPORTING BUGS)
گزارش باگها به <dgilbert at interlog dot com>.
حق نشر (COPYRIGHT)
حق نشر © 2018-2023
Douglas Gilbert
این
نرمافزار
تحت مجوز BSD-2-Clause
توزیع
میشود. هیچ
ضمانتی
وجود
ندارد؛ حتی
برای
قابلیت
فروش یا
تناسب با یک
هدف خاص.
همچنین ببینید (SEE ALSO)
sg_vpd,sg_write_x(sg3_utils); sdparm(sdparm)
| December 2023 | sg3_utils-1.49 |