| libnbd-release-notes-1.18(1) | LIBNBD | libnbd-release-notes-1.18(1) |
نام (NAME)
libnbd-release-notes-1.18 - یادداشتهای انتشار برای libnbd نسخه 1.18
توضیحات (DESCRIPTION)
اینها یادداشتهای انتشار برای نسخه پایدار 1.18 از libnbd هستند. این سند تغییرات عمده را از نسخه 1.16 شرح میدهد.
بسته libnbd 1.18.0 در ۲۷ سپتامبر ۲۰۲۳ منتشر شد.
امنیت (Security)
Eric Blake موردی را یافت که در آن یک سرور میتوانست باعث از کار افتادن (crash) کتابخانه libnbd شود، اگرچه نه در پیکربندی معمول libnbd. برای اطلاعات بیشتر اعلان زیر را مشاهده کنید: https://listman.redhat.com/archives/libguestfs/2023-July/032035.html
Eric Blake مشکلی در nbd_get_size(3) پیدا کرد که در آن سروری که اندازهای بزرگتر از (uint64_t)INT64_MAX و کوچکتر از (uint64_t)-1 را برمیگرداند، باعث میشد nbd_get_size یک عدد منفی برگرداند (عددی که -1 نیست و بنابراین فراخوانها ممکن است آن را به عنوان خطا در نظر بگیرند یا نگیرند). اگرچه هیچ کد کلاینتی در خود libnbd تحت تأثیر این موضوع قرار نمیگیرد، اما این مشکل میتوانست کلاینتهای خارجی را تحت تأثیر قرار دهد. اکنون libnbd ≥ 1.16.5 در این حالت یک خطا (-1) برمیگرداند و nbd_get_errno را بر روی "EOVERFLOW" تنظیم میکند. برای این مورد شناسه CVE-2023-5215 (با شدت کم) اختصاص داده شد. اعلان مربوطه را در اینجا ببینید: https://listman.redhat.com/archives/libguestfs/2023-September/032711.html
در حین آزمون فازینگ (fuzzing) معمول، چندین مشکل امنیتی پیدا کردیم که در طول این چرخه توسعه ایجاد شده بودند و متعاقباً برطرف شدند. نسخههای پایدار (با شماره زوج) libnbd نباید آسیبپذیر باشند؛ از نسخههای توسعه (با شماره فرد) در محیطهای عملیاتی استفاده نکنید.
اگر مشکل امنیتی پیدا کردید، لطفاً فایل SECURITY را در سورسکد مطالعه کنید (به صورت برخط در اینجا: https://gitlab.com/nbdkit/libnbd/blob/master/SECURITY). برای اطلاع از مشکلات امنیتی پیشین در libnbd، به libnbd-security(3) مراجعه کنید.
رابطهای برنامهنویسی جدید (New APIs)
- nbd_block_status_64(3)
- nbd_aio_block_status_64(3)
- ارسال یک درخواست وضعیت بلوک (block status) ۶۴ بیتی؛ بخش «پروتکل» را در زیر ببینید (Eric Blake).
- nbd_block_status_filter(3)
- nbd_aio_block_status_filter(3)
- ارسال دستور وضعیت بلوکِ فیلترشده؛ بخش «پروتکل» را در زیر ببینید (Eric Blake).
- nbd_can_block_status_payload(3)
- بررسی اینکه آیا سرور از دستور وضعیت بلوک فیلترشده پشتیبانی میکند یا خیر (Eric Blake).
- nbd_set_request_extended_headers(3)
- nbd_get_request_extended_headers(3)
- nbd_get_extended_headers_negotiated(3)
- nbd_opt_extended_headers(3)
- nbd_aio_opt_extended_headers(3)
- تنظیم/دریافت وضعیت درخواست هدرهای گسترشیافته از سرور، و بررسی اینکه آیا بر سر هدرهای گسترشیافته مذاکره شده است یا خیر؛ بخش «پروتکل» را در زیر ببینید (Eric Blake).
بهبودهای رابطهای برنامهنویسی موجود (Enhancements to existing APIs)
ثابتهای فرازمینهای (meta-context) با پیشوند "qemu:" (مانند "qemu:dirty-bitmap" به صورت "LIBNBD_CONTEXT_QEMU_DIRTY_BITMAP") اکنون از طریق اتصالات زبانهای C، Golang، OCaml و Python در دسترس هستند (Eric Blake).
تابع nbd_shutdown(3) اکنون در حالت opt mode به درستی کار میکند (Eric Blake).
تابع nbd_set_strict_mode(3) ثابت "LIBNBD_STRICT_AUTO_FLAG" را اضافه میکند که به کلاینت اجازه میدهد نحوه رفتار سرورها را هنگام تنظیم پرچم طول بار داده بیازماید (Eric Blake).
پروتکل (Protocol)
کتابخانه libnbd اکنون از «هدرهای گسترشیافته» (extended headers) ۶۴ بیتی NBD و اندازههای extent پشتیبانی میکند. در عمل این قابلیت به درخواستهای خاصی مانند صفر کردن بخشهای بسیار بزرگی از دیسک اجازه میدهد تا در سرورهایی که از این ویژگی پشتیبانی میکنند، بسیار کارآمدتر پیادهسازی شوند (Eric Blake).
کتابخانه libnbd اکنون از درخواستهای وضعیت بلوکِ فیلترشده پشتیبانی میکند (Eric Blake).
ابزارها (Tools)
ابزارهای nbdcopy(1)، nbdinfo(1) و nbddump(1) گسترش یافتهاند تا در صورت پشتیبانی سرور، از هدر گسترشیافته / ۶۴ بیتی NBD استفاده کرده و آن را گزارش دهند (Eric Blake).
در nbdinfo میتوان از --has به عنوان نام مستعاری برای --can استفاده کرد، برای مثال: "nbdinfo --has structured-reply URI" (Eric Blake).
دستور nbdinfo خروجی اندازه export را برای سرورهایی که اندازهای بیش از حد بزرگ ارسال میکنند، اختیاری میکند (Eric Blake).
ابزار nbdcopy اکنون از «اندازههای خوانا برای انسان» برای برخی پارامترها پشتیبانی میکند، مانند: "nbdcopy --request-size=1M ...".
اتصالات زبانهای برنامهنویسی (Language bindings)
اتصالات جدید برای زبان Rust. یک API پایهای برای استفاده معمول و یک API ناهمگام پیادهسازیشده با Tokio در دسترس است. به نسخه Rust ≥ 1.69 نیاز است. (Tage Johansson، با حمایت مالی از Google Summer of Code 2023، همراه با بازبینی و اصلاحات توسط Eric Blake).
اکنون از OCaml 5 پشتیبانی میشود.
اکنون از Golang 1.21 پشتیبانی میشود. حداقل نسخه در حال حاضر 1.17 است (Eric Blake).
استفاده از "gofmt" برای قالببندی اتصالات Golang (Eric Blake).
استفاده از "unsafe.Slice" هنگام تبدیل آرایههای C به sliceهای زبان Golang (Eric Blake).
تمام اتصالات زبانهای برنامهنویسی از هدرهای ۶۴ بیتی / گسترشیافته NBD پشتیبانی میکنند، و مثالهایی از نحوه استفاده از این قابلیت موجود است (Eric Blake).
آزمونها (Tests)
رفع چند مورد شرایط رقابتی (race condition) در آزمونها که در آنها stdin در متد pwrite در nbdkit-sh-plugin(3) به طور کامل مصرف نمیشد (Eric Blake).
عملیات فازینگ (fuzzing) اکنون بررسیهای سختگیرانه سمت کلاینت را غیرفعال میکند و امکان بررسی دامنه وسیعتری از ورودیها را فراهم میسازد (Eric Blake).
سایر بهبودها و رفع اشکالها (Other improvements and bug fixes)
شکستن خطوط کد منبع به صورت یکنواخت در ۸۰ ستون (Laszlo Ersek).
پیامهای اشکالزدایی (debug) دیگر انتقالهای وضعیت بسیار پرجزئیات درون ماشین حالت را چاپ نمیکنند زیرا معمولاً مفید نیستند. میتوانید با تعریف "-DLIBNBD_STATE_VERBOSE=1" در زمان کامپایل، این قابلیت را دوباره فعال کنید.
متدهای اتمام فراخوانی برگشتی (".callback") اکنون همیشه دقیقاً یک بار فراخوانی میشوند، و مستندات درباره زمان رخ دادن این موضوع شفافتر شده است (Eric Blake).
مستندات (Documentation)
ابزار "podwrapper" یک پارامتر جدید --replace دارد که استفاده از جایگزینیهای "AC_SUBST" را در مستندات آسانتر میکند.
ساخت (Build)
اکنون از گزینه "subdir-objects" در Automake استفاده میشود (Eric Blake).
اصلاحات متعدد و مداوم در آزمونهای ادغام مداوم (CI) (Eric Blake).
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
کپیرایت و تکثیر (COPYRIGHT)
حق نشر متعلق به Red Hat است
مجوز (LICENSE)
این کتابخانه یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط «مجوز عمومی جامعتر گنو» (GNU Lesser General Public License) همانطور که توسط بنیاد نرمافزارهای آزاد منتشر شده است، مجدداً توزیع کنید و/یا تغییر دهید؛ چه نسخه ۲ مجوز، یا (به انتخاب خودتان) هر نسخه بعدی آن.
این کتابخانه به این امید توزیع شده است که مفید باشد، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی جامعتر گنو مراجعه کنید.
شما باید به همراه این کتابخانه نسخهای از مجوز عمومی جامعتر گنو را دریافت کرده باشید؛ در غیر این صورت، به آدرس زیر مکاتبه کنید: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
| 2026-07-16 | libnbd-1.24.3 |