Yu Kuai
5ab829f197
md/md-llbitmap: introduce new lockless bitmap
...
Redundant data is used to enhance data fault tolerance, and the storage
method for redundant data vary depending on the RAID levels. And it's
important to maintain the consistency of redundant data.
Bitmap is used to record which data blocks have been synchronized and which
ones need to be resynchronized or recovered. Each bit in the bitmap
represents a segment of data in the array. When a bit is set, it indicates
that the multiple redundant copies of that data segment may not be
consistent. Data synchronization can be performed based on the bitmap after
power failure or readding a disk. If there is no bitmap, a full disk
synchronization is required.
Due to known performance issues with md-bitmap and the unreasonable
implementations:
- self-managed IO submitting like filemap_write_page();
- global spin_lock
I have decided not to continue optimizing based on the current bitmap
implementation, this new bitmap is invented without locking from IO fast
path and can be used with fast disks.
For designs and details, see the comments in drivers/md-llbitmap.c.
Link: https://lore.kernel.org/linux-raid/20250829080426.1441678-12-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Li Nan <linan122@huawei.com >
2025-09-06 17:27:51 +08:00
Yu Kuai
a4dd9ba39b
md/md-bitmap: add a new method blocks_synced() in bitmap_operations
...
Currently, raid456 must perform a whole array initial recovery to build
initail xor data, then IO to the array won't have to read all the blocks
in underlying disks.
This behavior will affect IO performance a lot, and nowadays there are
huge disks and the initial recovery can take a long time. Hence llbitmap
will support lazy initial recovery in following patches. This method is
used to check if data blocks is synced or not, if not then IO will still
have to read all blocks for raid456.
Link: https://lore.kernel.org/linux-raid/20250829080426.1441678-9-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
2025-09-06 17:20:01 +08:00
Yu Kuai
f196d72888
md/md-bitmap: add a new method skip_sync_blocks() in bitmap_operations
...
This method is used to check if blocks can be skipped before calling
into pers->sync_request(), llbitmap will use this method to skip
resync for unwritten/clean data blocks, and recovery/check/repair for
unwritten data blocks;
Link: https://lore.kernel.org/linux-raid/20250829080426.1441678-8-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Xiao Ni <xni@redhat.com >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Li Nan <linan122@huawei.com >
2025-09-06 17:19:45 +08:00
Yu Kuai
ac9dad8faa
md/md-bitmap: support discard for bitmap ops
...
Use two new methods {start, end}_discard in bitmap_ops and a new field 'rw'
in struct md_io_clone to handle discard IO, prepare to support new md
bitmap.
Since all bitmap functions to hanlde write IO are the same, also add
typedef to make code cleaner.
Link: https://lore.kernel.org/linux-raid/20250829080426.1441678-4-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Li Nan <linan122@huawei.com >
2025-09-06 17:18:19 +08:00
Yu Kuai
c27474ac1d
md/md-bitmap: introduce CONFIG_MD_BITMAP
...
Now that all implementations are internal, it's sensible to add a config
option for md-bitmap, and it's a good way for isolation.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-16-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:12:22 +08:00
Yu Kuai
bb74b093c3
md/md-bitmap: handle the case bitmap is not enabled before end_sync()
...
This case can be handled without knowing internal implementation.
Prepare to introduce CONFIG_MD_BITMAP.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-9-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:54 +08:00
Yu Kuai
5ae58d1500
md/md-bitmap: handle the case bitmap is not enabled before start_sync()
...
This case can be handled without knowing internal implementation.
Prepare to introduce CONFIG_MD_BITMAP.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-8-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:50 +08:00
Yu Kuai
110332074d
md/md-bitmap: add md_bitmap_registered/enabled() helper
...
There are no functional changes, prepare to handle the case that
mddev->bitmap_ops can be NULL, which is possible after introducing
CONFIG_MD_BITMAP.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-7-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:45 +08:00
Yu Kuai
9c41ead04e
md/md-bitmap: add a new parameter 'flush' to bitmap_ops->enabled
...
The method is only used from raid1/raid10 IO path, to check if write
bio should be pluged, the parameter is always set to true for now,
following patch will use this helper in other context like updating
superblock.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-6-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:42 +08:00
Yu Kuai
9307dbac0e
md/md-bitmap: merge md_bitmap_group into bitmap_operations
...
Now that all bitmap implementations are internal, it doesn't make sense
to export md_bitmap_group anymore.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-5-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:40 +08:00
Yu Kuai
e57b225c28
md/md-bitmap: remove the parameter 'init' for bitmap_ops->resize()
...
It's set to 'false' for all callers, hence it's useless and can be
removed.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-3-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:33 +08:00
Yu Kuai
01bf468c4e
md/md-bitmap: remove parameter slot from bitmap_create()
...
All callers pass in '-1' for 'slot', hence it can be removed.
Link: https://lore.kernel.org/linux-raid/20250524061320.370630-6-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Xiao Ni <xni@redhat.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
2025-05-30 15:47:23 +08:00
Yu Kuai
38f520a37d
md/md-bitmap: cleanup bitmap_ops->startwrite()
...
bitmap_startwrite() always return 0, and the caller doesn't check return
value as well, hence change the method to void.
Also rename startwrite/endwrite to start_write/end_write, which is more in
line with the usual naming convention.
Link: https://lore.kernel.org/linux-raid/20250524061320.370630-4-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
2025-05-30 15:47:23 +08:00
Yu Kuai
b886475804
md/dm-raid: remove max_write_behind setting limit
...
The comments said 'vaule in kB', while the value actually means the
number of write_behind IOs. And since md-bitmap will automatically
adjust the value to max COUNTER_MAX / 2, there is no need to fail
early.
Also move some macros that is only used md-bitmap.c.
Link: https://lore.kernel.org/linux-raid/20250524061320.370630-15-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-05-30 15:47:23 +08:00
Yu Kuai
4f0e7d0e03
md/md-bitmap: remove the last parameter for bimtap_ops->endwrite()
...
For the case that IO failed for one rdev, the bit will be mark as NEEDED
in following cases:
1) If badblocks is set and rdev is not faulty;
2) If rdev is faulty;
Case 1) is useless because synchronize data to badblocks make no sense.
Case 2) can be replaced with mddev->degraded.
Also remove R1BIO_Degraded, R10BIO_Degraded and STRIPE_DEGRADED since
case 2) no longer use them.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20250109015145.158868-3-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2025-01-13 08:56:10 -08:00
Yu Kuai
08c50142a1
md/md-bitmap: factor behind write counters out from bitmap_{start/end}write()
...
behind_write is only used in raid1, prepare to refactor
bitmap_{start/end}write(), there are no functional changes.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
Link: https://lore.kernel.org/r/20250109015145.158868-2-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2025-01-13 08:56:10 -08:00
Yu Kuai
59fdd43304
md/md-bitmap: make in memory structure internal
...
Now that struct bitmap_page and bitmap is not used externally anymore,
move them from md-bitmap.h to md-bitmap.c (expect that dm-raid is still
using define marco 'COUNTER_MAX').
Also fix some checkpatch warnings.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-43-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:16 -07:00
Yu Kuai
dab2ce5534
md/md-bitmap: merge md_bitmap_enabled() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-42-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:16 -07:00
Yu Kuai
49f5f5e309
md/md-bitmap: merge md_bitmap_wait_behind_writes() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-41-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:16 -07:00
Yu Kuai
c65c20dc50
md/md-bitmap: merge md_bitmap_free() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
o invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-40-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:15 -07:00
Yu Kuai
ef1c400faf
md/md-bitmap: merge md_bitmap_set_pages() into struct bitmap_operations
...
o that the implementation won't be exposed, and it'll be possible
o invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-39-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:15 -07:00
Yu Kuai
3dd9141a15
md/md-bitmap: merge md_bitmap_copy_from_slot() into struct bitmap_operation.
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-38-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:15 -07:00
Yu Kuai
57d602414d
md/md-bitmap: merge get_bitmap_from_slot() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-37-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:15 -07:00
Yu Kuai
77c09640ee
md/md-bitmap: merge md_bitmap_resize() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-36-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:15 -07:00
Yu Kuai
e1791dae6c
md/md-bitmap: pass in mddev directly for md_bitmap_resize()
...
And move the condition "if (mddev->bitmap)" into md_bitmap_resize() as
well, on the one hand make code cleaner, on the other hand try not to
access bitmap directly.
Since we are here, also change the parameter 'init' from int to bool.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-35-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:15 -07:00
Yu Kuai
18db2a9c60
md/md-bitmap: merge md_bitmap_daemon_work() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-34-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:14 -07:00
Yu Kuai
3c9883e77a
md/md-bitmap: merge bitmap_unplug() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-33-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:14 -07:00
Yu Kuai
48eb95810a
md/md-bitmap: merge md_bitmap_unplug_async() into md_bitmap_unplug()
...
Add a parameter 'bool sync' to distinguish them, and
md_bitmap_unplug_async() won't be exported anymore, hence
bitmap_operations only need one op to cover them.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-32-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:14 -07:00
Yu Kuai
4338b94271
md/md-bitmap: merge md_bitmap_sync_with_cluster() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-31-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:43:14 -07:00
Yu Kuai
15db1eca63
md/md-bitmap: merge md_bitmap_cond_end_sync() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Also change the parameter from bitmap to mddev, to avoid access
bitmap outside md-bitmap.c as much as possible.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-30-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 12:42:42 -07:00
Yu Kuai
077b18abde
md/md-bitmap: merge md_bitmap_close_sync() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Also change the parameter from bitmap to mddev, to avoid access
bitmap outside md-bitmap.c as much as possible.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-29-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:17 -07:00
Yu Kuai
1415f402e1
md/md-bitmap: merge md_bitmap_end_sync() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Also change the parameter from bitmap to mddev, to avoid access
bitmap outside md-bitmap.c as much as possible.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-28-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:17 -07:00
Yu Kuai
9be669bd1b
md/md-bitmap: remove the parameter 'aborted' for md_bitmap_end_sync()
...
For internal callers, aborted are always set to false, while for
external callers, aborted are always set to true.
Hence there is no need to always pass in true for exported api.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-27-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:17 -07:00
Yu Kuai
fe6a19d40c
md/md-bitmap: merge md_bitmap_start_sync() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Also change the parameter from bitmap to mddev, to avoid access
bitmap outside md-bitmap.c as much as possible.
Also fix lots of code style.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-26-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:17 -07:00
Yu Kuai
3486015fac
md/md-bitmap: merge md_bitmap_endwrite() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Also change the parameter from bitmap to mddev, to avoid access
bitmap outside md-bitmap.c as much as possible. And change the type
of 'success' and 'behind' from int to bool.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-25-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:17 -07:00
Yu Kuai
c2257df410
md/md-bitmap: merge md_bitmap_startwrite() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Also change the parameter from bitmap to mddev, to avoid access
bitmap outside md-bitmap.c as much as possible. And change the type
of 'behind' from int to bool.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-24-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:17 -07:00
Yu Kuai
2d3b130e17
md/md-bitmap: merge md_bitmap_dirty_bits() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Also change the parameter from bitmap to mddev, to avoid access
bitmap outside md-bitmap.c as much as possible.
And while we're here, also fix coding style for bitmap_store().
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-23-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:17 -07:00
Yu Kuai
b26313cb96
md/md-bitmap: merge bitmap_write_all() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Also change the parameter from bitmap to mddev, to avoid access
bitmap outside md-bitmap.c as much as possible.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-22-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:16 -07:00
Yu Kuai
ea076ceb35
md/md-bitmap: remove md_bitmap_setallbits()
...
md_bitmap_setallbits() is not used, hence can be removed.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-21-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:16 -07:00
Yu Kuai
696936838b
md/md-bitmap: merge md_bitmap_status() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-20-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:16 -07:00
Yu Kuai
fe59b34676
md/md-bitmap: merge md_bitmap_update_sb() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-19-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:16 -07:00
Yu Kuai
a0240e3ec7
md/md-bitmap: make md_bitmap_print_sb() internal
...
md_bitmap_print_sb() is only used inside md-bitmap.c, hence make it
static, also rename it to bitmap_print_sb.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-18-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:16 -07:00
Yu Kuai
ca925302e8
md/md-bitmap: merge md_bitmap_flush() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-17-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:16 -07:00
Yu Kuai
a2bd703192
md/md-bitmap: merge md_bitmap_destroy() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-16-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:16 -07:00
Yu Kuai
e1e4908059
md/md-bitmap: merge md_bitmap_load() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-15-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:16 -07:00
Yu Kuai
04c80e6495
md/md-bitmap: merge md_bitmap_create() into bitmap_operations
...
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-14-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:15 -07:00
Yu Kuai
7545d385ec
md/md-bitmap: simplify md_bitmap_create() + md_bitmap_load()
...
Other than internal api get_bitmap_from_slot(), all other places will
set returned bitmap to mddev->bitmap. So move the setting of
mddev->bitmap into md_bitmap_create() to simplify code.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-13-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:15 -07:00
Yu Kuai
7add9db6ba
md/md-bitmap: introduce struct bitmap_operations
...
The structure is empty for now, and will be used in later patches to
merge in bitmap operations, so that bitmap implementation won't be
exposed.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-12-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:15 -07:00
Yu Kuai
27832ad3f7
md/md-bitmap: add a new helper md_bitmap_set_pages()
...
Currently md-cluster will set bitmap->counts.pages directly, add a
helper to do this to avoid dereferencing bitmap directly.
Noted that after this patch bitmap is not dereferenced directly anymore
and following patches will move the structure inside md-bitmap.c.
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-11-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:15 -07:00
Yu Kuai
a0e7744a46
md/md-bitmap: add 'behind_writes' and 'behind_wait' into struct md_bitmap_stats
...
There are no functional changes, avoid dereferencing bitmap directly to
prepare inventing a new bitmap.
Also fix following checkpatch warning by using wq_has_sleeper().
WARNING: waitqueue_active without comment
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20240826074452.1490072-9-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org >
2024-08-27 10:14:15 -07:00