מה חדש בלינוקס 6.18-rc3: שינויים בליבת המערכת והקשר

  • SMB Direct מוביל את גרסה 6.18-rc3 עם שיפורי חוזק בלקוח ובשרת.
  • XFS, io_uring, רשתות ו-DRM מקבלים כולם תיקונים מעשיים ומפוזרים היטב.
  • מפת הגרסאות ממקמת את גרסה 6.17 כגרסה יציבה ו-6.12/6.6 כגרסה LTS מרכזית.

לינוקס 6.18-rc3

מועמד השיגור השלישי לעתיד 6.18 מגיע בלי רעש ועם הדופק השקט הזה שמערכת האקולוגית של הליבה כל כך מעריכה. לדברי לינוס טורבאלדס עצמו, המספרים מתונים והמחזור מתקדם כרגיל; במילים אחרות, לינוקס 6.18-rc3 מלטש, מתקן ומכוון ללא מהפכות, תוך התמקדות בתיקונים הפרוסים ברחבי העץ.

בהערה הקצרה שלו, טורוואלדס מציין שהחלק הגדול ביותר של אצווה זו הוא תיקוני SMB Direct, הן בצד הלקוח והן בצד השרת, עם קומץ לא מבוטל של תיקוני כוונון עדין. השאר מופץ כרגיל: כמחצית משפיעה על מנהלי התקנים (וגם מוסיפה קישורי DeviceTree) ו- השאר הם תיקונים שונים: XFS, רשת, io_uring, DRM, Rust Binder וחברה. אם אתם מעוניינים בפרטים הקטנים, יש כאן יומן קצר עם עשרות שינויים שאנו סוקרים לפי תת-מערכות למטה.

תכונות חדשות מרכזיות בלינוקס 6.18-rc3

בלוק SMB Direct בולט בפירוט השבועי הזה. גם לקוח ה-SMB וגם השרת מתאימים נקודות זכות ותורים כדי למנוע רגרסיות ומחסור במשאבים. מספר חלקים בתת-המערכת מעלים את הרף על ידי הבטחה ש... מבני השליחה/השטיפה שומרים מספיק מקום ומצבי ניתוק אלה מעירים את כל השרשורים הממתינים בצורה חזקה.

בנוסף, תיקונים הוכנסו ל-XFS כדי למנוע לולאות עמוסות באוסף הסגמנטים, לאחסן אזורים פתוחים במטמון ב-i_private, להדק את הטיפול באפשרויות הרכבה שהוצאו משימוש, ו- תקן חלקים רגישים של בדיקת וחסימת קישוריםשינויי ה-XFS ב-rc3 זה מתמקדים ביציבות ובדיאגנוסטיקה ברורה עבור פרמטרים מדור קודם.

החצי השני של העוגה הוא השילוב הרגיל של דרייברים ופלטפורמות: מ-DRM/AMD ו-DRM/Xe ועד Rockchip, דרך רשתות mlx5/mlx5e, Realtek ו-Micrel PHYs, UFS/Qualcomm, USB/xHCI DbC ועוד הרבה יותר. זהו rc3 "אינסטלציה", שבו הערך הוא סכום של תיקונים קטנים שמונעים קריסות, דליפות זיכרון או אי התאמות תזמון.

SMB ו-SMB Direct: התמקדות בחוסן

El קיצור מבהיר את המאמץ של SMB Direct. בין הנקודות הרלוונטיות ביותר:

  • לקוח ושרת ה-SMB מתאימים את השטח עבור בקשות עבודה, מונעים גלישות ומוודאים שניקוז QP (ib_drain_qp) בטוח. מונים מוכנסים ונצרכים. זיכויים למשלוח על נתיבים קריטיים.
  • השרת מפשט את ניהול רשימות האחים בנתיבי שליחה (flush/send_done) וגורם לניתוק RDMA להעיר את כל השלבים בניסיון הראשון.
  • עקבות ב-smb3_rw_credits מחוזקות, includes מסודרים מחדש כך שמבנים יהיו זמינים ב- tracepoints ו- סוגי חתומים במבני אשראי של TCP קבועים.

בסך הכל, השינויים ב-SMB Direct נועדו להבטיח שהעברות RDMA תחת עומס יהיו חלקות, יתנהגו בצורה צפויה ויטפלו במצבי שגיאה מבלי להשאיר שרשורים תלויים. אלו הן התאמות, שלמרות שהן עדינות, לעשות את ההבדל בסביבות ביצועים גבוהים.

מערכות קבצים ואחסון

החלק של מערכות קבצים ובלוקים כולל מספר קטעים בולטים:

  • XFS: הימנעות מלולאות עמוסות, אזורי מטמון, איסור __GFP_NOFAIL באתחול הקשר של FS, שיפור הודעות עבור אפשרויות שהוצאו משימוש, ו- תיקון מנעולים וספרי סקטורים.
  • Btrfs: תיקונים ב-ref-verify ‏(IS_ERR לעומת NULL), שחרור fs_info שאותחל חלקית בקריסות, ותיקון בשליחת btrfs כדי למנוע כפילויות של פעולות rmdir עם extrefs.
  • EROFS: הקשחת הטיפול בהרחבות בעלות קוד זדוני כדי למנוע לולאות ו... איחוד חיפושי מבט לאחור על דפי משנה פגומים.
  • שכבת בלוק: אכיפת יישור LBA בעת שימוש במידע הגנה (PI) כדי לשמור על שלמות ברמה נמוכה.

יש גם פעילות ב-scsi/ufs/phy (קישורים עבור תואמים חדשים), storvsc להעדפת ערוצים בעלי זיקה למעבד המנפיק קלט/פלט, ושינויים בדרייברים כמו qla4xxx. אלו חלקים שביחד, לחזק את יציבות וביצועי הקלט/פלט במקרים אמיתיים.

רשתות: mlx5/mlx5e, bonding, HSR ועוד

ברשת התמונה מגוונת, עם דגש על נהגים של ביצועים גבוהים ופינות מעטות:

  • mlx5/mlx5e: מסכות רישום PPHCR ב-PCAM, דילוג על שאילתות אם ההתקן אינו תומך ברישום, ותיקוני RX בעת יצירת skbs מ-xdp_buffs לא ליניאריים הן בתורים מדור קודם והן בתורים מתקדמים. כמו כן, תיקונים ב-IPsec במכשירי MPV ו- devcom מחזיר NULL במקרה של שגיאות.
  • חיבור: מערך העבדים מתעדכן במצב שידור ומתוקנים אובדן או כפילויות אפשריים בהודעות עמיתים.
  • HSR: מונע יצירת התקנים עם עבדים מרשתות אחרות, וסגירת נתיב תצורה לא עקבי.
  • Gro ו- gro_cells: hwtstamps מנוקים בנתיבי שימוש חוזר של skbs ו- חוסר איזון במנעול תוקן בקובץ gro_cells_receive.
  • אחר: virtio-net מאפס שדות גיבוב שאינם בשימוש; hibmcge בוחר ב-FIXED_PHY; dlink משתמש ב-dev_kfree_skb_any; stmmac/rk מתקן את פונקציית בחירת השעון; enetc מתקן קיפאון נעילה ב-MDIO וערך TRUESIZE.

ככלל, מחסנית הרשת מקבלת את זרזיף התיקונים המונעים הפתעות תחת עומס ודואגים לפרטים בנתיבי נתונים שאם הם נכשלים, לתרגם להשהייה, הפסדים או חסימות.

גרפיקה ותצוגה: DRM/AMD, DRM/Xe, Rockchip ו-QR Panic

גם תחום ה-DRM נמצא בתנועה, עם שינויים בביטחון וביציבות:

  • תצוגת DRM/AMD: השתמש ב-GFP_NOWAIT בהקשר של פסיקות, הגדל את מקסימום הקישור, והימנע מגישות NULL ב-link→enc; כמו כן, תיקון מצביע ריק בנתיבים ספציפיים.
  • DRM/Xe: שמירה על דגלי מכונות וירטואליות בעת יצירה ופיצול של מכונות וירטואליות עבור madvise והסתרת איפוס אוטומטי של madvise מאחורי דגל VM_BIND, תוך חיתוך קצוות מסוכנים.
  • Rockchip: תקן את מסיכת SCLIN עבור RK3228 בקובץ dw_hdmi.
  • drm/panic: מספר שיפורים ל"מצב פאניקה" עם לוגו ו-QR: הימנעו מחפיפות עם הלוגו, הבטיחו שוליים אנכיים חיוביים, מניעת חלוקות באפס כאשר רוחב המסך קטן מרוחב הגופן ו אין לחצות דפים עם פיקסלים של 24 סיביות.
  • אינטל i915: מניעת דליפת אובייקטים בהלה בעת הקצאת המבנה שלו.

אפילו Panthor (מעבד גרפי) עבר שינויים כדי למנוע מפאניקות ליבה (core panic) לבטל באופן חלקי מיפוי של אזור VA, באג מעצבן שהתבטא בתרחישי זיכרון מקוטע. אלו שינויים, שלמרות שהם עדינים, למנוע קריסות במחשבים אמיתיים.

קלסר חלודה וקלסר קלאסי

Rust Binder ממשיך את תהליך ההתבגרות שלו עם מספר שינויים: אזהרה לגבי מיפויים יתומים הוסרה, ההודעה freeze_notif_done נשלחת מחדש במקרה של מצבים בלתי צפויים, מחיקת FreezeListener מונעת אם יש כפילויות ממתינות, והודעות מדווחות רק כאשר התהליך קפוא בפועל. במקביל, ה-Binder הקלאסי מסיר בדיקת "invalid inc weak" שכבר אינה תורמת. בצד של שרשרת הכלים, objtool מזהה פונקציית Rust נוספת כ-'noreturn' ואזהרה קשוחה ב-Rust Binder מנוקה.

io_uring, sqpoll ו-zc rx

ב-io_uring ישנם מספר שינויים כירורגיים: תוקן שימוש לרעה ב-unlikely() ב-io_waitid_prep(), הותאם ביאור __must_hold, תוקן האוטומטי של buffers עבור פקודות multishot של uring_cmd ו- חשבונאות המעבד של sqpoll מוערכת מחדש השארת getrusage() למועד אחר ועדכון stime בצורה חכמה יותר. כמו כן, נוסף ערך ב-MAINTAINERS עבור zcrx.

ארכיטקטורות ו-ACPI: RISC-V, arm64 ו-x86

לאס אדריכלות הם מגוונים וספציפיים:

  • RISC-V: pgprot_dmacoherent() מוגדר עבור התקנים לא קוהרנטיים, פרטים של מעבדים מושבתים אינם מודפסים ב-DT, IRQs של IPI רשומים עם שמות ייחודיים, MAX_POSSIBLE_PHYSMEM_BITS מוגדר עבור zsmalloc ו- פקודות מאקרו מדור קודם מיותרות מוסרותכמו כן, תוקנו שימושים לא מאותחלים ב-hwprobe ומפתח מאותחל מאוחר ב-vDSO.
  • arm64: ב-MTE, אזהרה מושבתת אם הדף כבר תויג ב-copy_highpage().
  • x86: התאמת הודעת RETBLEED עבור Intel, תיקון בדיקת גרסאות Entrysign עבור Zen1/Naples ו- קוד מת מנוקה באמצעי הפחתה.
  • ACPI/מאפיינים: סדר הארגומנטים תוקן ב- acpi_node_get_property_reference() והוסרו אזהרות כאשר IOMMU_API מושבת ב- RIMT.

זה גם מתקן קטעים מוזרים כמו pcibios_align_resource() ב-MIPS מלטה כדי לנעול טווחי קלט/פלט, ומשאבי מקלדת שמנעו רישום של i8042. אלו שינויים קטנים ש... הימנעו מתרחישי קיפאון או אתחולים שבירים.

דרייברים ואפיקים: SPI, סריאלי, hwmon, GPIO, PCI/ASPM ואחרים

ה-RC הזה מביא טוב חבורה של תיקונים בנהגים:

  • SPI: ה-dirmap הבאגי של Airoha מחזיר כעת כשל, מוסיף תמיכה כפולה/מרובעת ב-exec_op, חוזר למצב שאינו DMA אם משהו משתבש, ומתקן הבזקים מרובי מישורים לכל LUN; NXP FSPI מאפס את השעון בעת ​​הצורך, ו- מגביל את התדירות בהתאם למקור, בנוסף להוספת עיכוב לאחר נעילת DLL; Intel SPI מוסיף תמיכה בצפיפויות של 128 מיליון ופלטפורמות חדשות (Arrow Lake-H, Wildcat Lake).
  • סידורי ו-TTY: ‏8250_dw מטפל בשגיאות באיפוס; ‏8250_mtk מפעיל את שעון הבאוד ומעביר אותו ל-PM בזמן ריצה; ‏sc16is7xx מנקה באודים מיותרים מופעלים; ‏sh-sci מתקן חריגה מ-FIFO.
  • PCI/ASPM: בפלטפורמות DeviceTree, רק L0s ו-L1s מופעלים, החלטה שמרנית להימנע ממצבים לא מאומתים.
  • GPIO: ACPI מרכך את חומרת שגיאות ה-debounce; gpio-regmap מוסיף פרמטר fixed_direction_output; מודולי IDIO-16 מגדירים
    מקסימום כתובות תקפות ו כתובות קוויות.
  • Hwmon ו-pmbus: תוקנו דליפות ייחוס לצמתי ילדים ומקדמי מודל Max/ISL עודכנו, בנוסף לפרטים על מנהל ההתקן של המאוורר GPD.

במקביל, מודולים תואמי DT מתווספים ל-SPI Cadence ‏(ZynqMP/Versal-Net), ל-Rockchip RK3506 ול-UFS QMP עבור Kaanapali, בנוסף למזהי אופציה חדשים (Telit FN920C04 ECM, Quectel RG255C, UNISOC UIS7720). כוונון עדין של התמיכה בחומרה שהגיעה לאחרונה.

זיכרון, לוח ו-mm/דיימון

גם אזור הזיכרון מקבל תשומת לב: מרוצים עם obj_exts ותנאי בלבול NULL נמנעים ב-slab; mm/mremap מתחשב נכון במיפוי הישן לאחר DONTUNMAP; THP מונע צריכת רעל בעת פיצול דפים ענקיים; DAMON מנקה דליפות של ops_filter ו- מרכז את לוגיקת יעדי המכסהב-hugetlbfs, קביעות נעילה מועברות לאחר החזרות מוקדמות ב-huge_pmd_unshare().

אבטחה, מעקב ו-Kconfig

חלקים קטנים אך חשובים:

  • lib/crypto: Poly1305 משחזר תלויות עם !KMSAN, תוך הימנעות מתצורות סותרות.
  • include/trace: תוקן עזר לספירה במהלך פעולת האתחול כושלת; נוספו נקודות מעקב של SMB3 עבור נקודות קריאה/כתיבה.
  • Kconfig שונים: עזרה ב-CONFIG_XFS_RT שופרה והבדיקות/סטטיסטיקות מותנות ל-DEBUG_FS. תיקוני תלות ב-QCOMTEE ובפלטפורמות אחרות.

אלו שינויים דיסקרטיים המונעים בעיות במהלך הגדרת הליבה ומקלים על האבחון מתי משהו לא מתחיל כראוי. סך כל השיפורים הללו באיכות החיים מביא לפחות בזבוז זמן.

סקירה זו של 6.18-rc3 מבהירה את המוקד: עמידות בפני זיקוקים. החל מבלוק SMB Direct ועד לכוונון XFS, ועד שלל הדרייברים והתיקונים ברשתות, גרפיקה וזיכרון, הכל מצביע על ליבה אמינה יותר. נוספה למפת הגרסאות (עם 6.17 כגרסה היציבה האחרונה ו-6.12/6.6 כגרסת LTS של הגרסה המקורית), יש לנו תמונה קוהרנטית של המצב הנוכחי: איטרציה מתמדת, תמיכה ארוכת טווח היכן שחשוב ונתיב נדידה שכל צוות יכול לשרטט ברוגע, בידיעה אילו ענפים בטוחים ואילו עדיין בחיתוליו.

לינוקס 6.18-rc2
Artaculo relacionado:
לינוקס 6.18-rc2 מגיעה בגדול עם תיקונים מרכזיים לגרפיקה, Rust ו-AMD Zen