this post was submitted on 27 Jun 2023
31 points (97.0% liked)

Linux

48072 readers
1 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 6 years ago
MODERATORS
 

cross-posted from: https://lemmy.ml/post/1553943

Hi,

there are mainly core changes, refactoring and optimizations. Performance is improved in some areas, overall there may be a cumulative improvement due to refactoring that removed lookups in the IO path or simplified IO submission tracking.

No merge conflicts. Please pull, thanks.

Core:

  • submit IO synchronously for fast checksums (crc32c and xxhash), remove high priority worker kthread

  • read extent buffer in one go, simplify IO tracking, bio submission and locking

  • remove additional tracking of redirtied extent buffers, originally added for zoned mode but actually not needed

  • track ordered extent pointer in bio to avoid rbtree lookups during IO

  • scrub, use recovered data stripes as cache to avoid unnecessary read

  • in zoned mode, optimize logical to physical mappings of extents

  • remove PageError handling, not set by VFS nor writeback

  • cleanups, refactoring, better structure packing

  • lots of error handling improvements

  • more assertions, lockdep annotations

  • print assertion failure with the exact line where it happens

  • tracepoint updates

  • more debugging prints

Performance:

  • speedup in fsync(), better tracking of inode logged status can avoid transaction commit

  • IO path structures track logical offsets in data structures and does not need to look it up

User visible changes:

  • don't commit transaction for every created subvolume, this can reduce time when many subvolumes are created in a batch

  • print affected files when relocation fails

  • trigger orphan file cleanup during START_SYNC ioctl

Notable fixes:

  • fix crash when disabling quota and relocation

  • fix crashes when removing roots from drity list

  • fix transacion abort during relocation when converting from newer profiles not covered by fallback

  • in zoned mode, stop reclaiming block groups if filesystem becomes read-only

  • fix rare race condition in tree mod log rewind that can miss some btree node slots

  • with enabled fsverity, drop up-to-date page bit in case the verification fails

top 4 comments
sorted by: hot top controversial new old
[–] datendefekt@lemmy.ml 2 points 2 years ago (2 children)

Is there any chance that the write hole issue with RAID5/6 will ever get fixed?

[–] Atemu@lemmy.ml 1 points 2 years ago

There's work on alternative RAID5/6 modes but their performance sucks because they need to do read-modify-write.

Note that the write hole is one of the least concerning issues with btrfs RAID5/6. It's unstable and you shouldn't use it for anything other than testing.

[–] Eideen@lemmy.world 1 points 2 years ago (1 children)

It gode write up from zygo

what about write hole?

There is a write hole issue on btrfs raid5, but it occurs much less often than the other known issues, and the other issues affect much more data per failure event.

https://lore.kernel.org/linux-btrfs/20200627032414.GX10769@hungrycats.org/

[–] Fryboyter@discuss.tchncs.de 1 points 2 years ago

The post is dated June 26, 2020, so I wonder if this is even up to date?