No description
  • C 98.2%
  • Assembly 1%
  • Makefile 0.3%
  • Shell 0.2%
  • Python 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Qu Wenruo 6fd4cea044 btrfs: only write the sectors in the vertical stripe which has data stripes
commit bd8f7e627703ca5707833d623efcd43f104c7b3f upstream.

If we have only 8K partial write at the beginning of a full RAID56
stripe, we will write the following contents:

                    0  8K           32K             64K
Disk 1	(data):     |XX|            |               |
Disk 2  (data):     |               |               |
Disk 3  (parity):   |XXXXXXXXXXXXXXX|XXXXXXXXXXXXXXX|

|X| means the sector will be written back to disk.

Note that, although we won't write any sectors from disk 2, but we will
write the full 64KiB of parity to disk.

This behavior is fine for now, but not for the future (especially for
RAID56J, as we waste quite some space to journal the unused parity
stripes).

So here we will also utilize the btrfs_raid_bio::dbitmap, anytime we
queue a higher level bio into an rbio, we will update rbio::dbitmap to
indicate which vertical stripes we need to writeback.

And at finish_rmw(), we also check dbitmap to see if we need to write
any sector in the vertical stripe.

So after the patch, above example will only lead to the following
writeback pattern:

                    0  8K           32K             64K
Disk 1	(data):     |XX|            |               |
Disk 2  (data):     |               |               |
Disk 3  (parity):   |XX|            |               |

Acked-by: David Sterba <dsterba@suse.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-08-25 11:18:40 +02:00
arch MIPS: tlbex: Explicitly compare _PAGE_NO_EXEC against 0 2022-08-25 11:18:39 +02:00
block blk-mq: don't create hctx debugfs dir until q->debugfs_dir is created 2022-08-25 11:17:36 +02:00
certs
crypto
Documentation locking/atomic: Make test_and_*_bit() ordered on failure 2022-08-25 11:18:31 +02:00
drivers video: fbdev: i740fb: Check the argument of i740_calc_vclk() 2022-08-25 11:18:38 +02:00
fs btrfs: only write the sectors in the vertical stripe which has data stripes 2022-08-25 11:18:40 +02:00
include ALSA: core: Add async signal helpers 2022-08-25 11:18:37 +02:00
init
ipc
kernel tracing/probes: Have kprobes and uprobes use $COMM too 2022-08-25 11:18:39 +02:00
lib lib/list_debug.c: Detect uninitialized lists 2022-08-25 11:18:36 +02:00
LICENSES
mm mm/mmap.c: fix missing call to vm_unacct_memory in mmap_region 2022-08-25 11:17:58 +02:00
net can: j1939: j1939_session_destroy(): fix memory leak of skbs 2022-08-25 11:18:39 +02:00
samples
scripts gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file 2022-08-25 11:18:31 +02:00
security apparmor: Fix memleak in aa_simple_write_to_buffer() 2022-08-25 11:18:21 +02:00
sound ALSA: timer: Use deferred fasync helper 2022-08-25 11:18:38 +02:00
tools selftests/kprobe: Do not test for GRP/ without event failures 2022-08-25 11:18:34 +02:00
usr
virt KVM: Add infrastructure and macro to mark VM as bugged 2022-08-25 11:18:16 +02:00
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS
Makefile Makefile: link with -z noexecstack --no-warn-rwx-segments 2022-08-25 11:17:17 +02:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.