Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 16 additions & 5 deletions Documentation/btrfs-quota.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,23 @@ of a btrfs filesystem. The quota groups (qgroups) are managed by the subcommand
STABILITY AND PERFORMANCE IMPLICATIONS
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The qgroup implementation is considered reasonably stable for daily use and has
been enabled in various distributions.
The qgroup mode is considered not recommended for daily usage, unless there is
no planned new snapshot/subvolume creation and deletion.

When quotas are activated, they affect all extent processing, which takes a
performance hit. Activation of qgroups is not recommended unless the user
intends to actually use them.
The core design of qgroup mode and snapshot are not compatible from day one, and
are the cause of all kinds of performance problems.

When qgroup mode is activated, it affects all extent processing, which takes a
performance hit. Operations that modify a whole subvolume/snapshot in one go,
which include snapshot creation and subvolume deletion, are heavily affected and
can cause a system hang due to the heavy load.

Although the kernel is taking several workarounds, the problem is not fully resolved
and has extra costs, e.g. marking qgroup inconsistent, breaking limits and
requiring extra rescan.

Activation of qgroups is not recommended unless the user intends to actually use them,
and the usage does not involve new subvolume/snapshot.

.. _man-quota-hierarchical-quota-group-concepts:

Expand Down
4 changes: 4 additions & 0 deletions Documentation/dev/Developer-s-FAQ.rst
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ highlight the most frequently used tags and their expected meaning. This only
briefly mentions the commonly used tags. You're encouraged to read the whole
document and get familiar with it.

With the recent increased flow of LLM-assisted bug fixes, please also follow the
kernel documentation at https://docs.kernel.org/process/coding-assistants.html to
properly disclose LLM usage for every patch.

Signed-off-by:
^^^^^^^^^^^^^^

Expand Down
7 changes: 4 additions & 3 deletions cmds/rescue-fix-data-checksum.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

#include "kerncompat.h"
#include <ctype.h>
#include "kernel-lib/bitmap.h"
#include "kernel-shared/disk-io.h"
#include "kernel-shared/ctree.h"
#include "kernel-shared/volumes.h"
Expand Down Expand Up @@ -84,14 +85,14 @@ static int add_corrupted_block(struct btrfs_fs_info *fs_info, u64 logical,
/* The last entry is the same, just set update the error mirror bitmap. */
if (last->logical == logical) {
UASSERT(last->error_mirror_bitmap);
set_bit(mirror, last->error_mirror_bitmap);
set_bit(mirror - 1, last->error_mirror_bitmap);
return 0;
}
add:
last = calloc(1, sizeof(*last));
if (!last)
return -ENOMEM;
last->error_mirror_bitmap = calloc(1, BITS_TO_LONGS(num_mirrors));
last->error_mirror_bitmap = bitmap_zalloc(num_mirrors);
if (!last->error_mirror_bitmap) {
free(last);
return -ENOMEM;
Expand Down Expand Up @@ -456,7 +457,7 @@ static void free_corrupted_blocks(void)

entry = list_entry(corrupted_blocks.next, struct corrupted_block, list);
list_del_init(&entry->list);
free(entry->error_mirror_bitmap);
bitmap_free(entry->error_mirror_bitmap);
free(entry);
}
}
Expand Down
Loading