drivers/md/md-llbitmap.c
1016
set_bit(BITMAP_STALE, &llbitmap->flags);
drivers/md/md-llbitmap.c
1023
llbitmap->barrier_idle = DEFAULT_BARRIER_IDLE;
drivers/md/md-llbitmap.c
1024
llbitmap->chunksize = chunksize;
drivers/md/md-llbitmap.c
1025
llbitmap->chunks = DIV_ROUND_UP_SECTOR_T(mddev->resync_max_sectors, chunksize);
drivers/md/md-llbitmap.c
1026
llbitmap->chunkshift = ffz(~chunksize);
drivers/md/md-llbitmap.c
1027
ret = llbitmap_cache_pages(llbitmap);
drivers/md/md-llbitmap.c
1037
struct llbitmap *llbitmap =
drivers/md/md-llbitmap.c
1038
container_of(pending_timer, struct llbitmap, pending_timer);
drivers/md/md-llbitmap.c
1040
if (work_busy(&llbitmap->daemon_work)) {
drivers/md/md-llbitmap.c
1042
mdname(llbitmap->mddev),
drivers/md/md-llbitmap.c
1043
llbitmap->mddev->bitmap_info.daemon_sleep);
drivers/md/md-llbitmap.c
1044
set_bit(BITMAP_DAEMON_BUSY, &llbitmap->flags);
drivers/md/md-llbitmap.c
1048
queue_work(md_llbitmap_io_wq, &llbitmap->daemon_work);
drivers/md/md-llbitmap.c
1053
struct llbitmap *llbitmap =
drivers/md/md-llbitmap.c
1054
container_of(work, struct llbitmap, daemon_work);
drivers/md/md-llbitmap.c
1060
if (llbitmap->mddev->degraded)
drivers/md/md-llbitmap.c
1064
end = min(llbitmap->chunks, PAGE_SIZE - BITMAP_DATA_OFFSET) - 1;
drivers/md/md-llbitmap.c
1067
for (idx = 0; idx < llbitmap->nr_pages; idx++) {
drivers/md/md-llbitmap.c
1068
struct llbitmap_page_ctl *pctl = llbitmap->pctl[idx];
drivers/md/md-llbitmap.c
1072
end = min(end + PAGE_SIZE, llbitmap->chunks - 1);
drivers/md/md-llbitmap.c
1081
if (llbitmap_suspend_timeout(llbitmap, idx) < 0) {
drivers/md/md-llbitmap.c
1083
mdname(llbitmap->mddev), __func__, idx);
drivers/md/md-llbitmap.c
1087
llbitmap_state_machine(llbitmap, start, end, BitmapActionDaemon);
drivers/md/md-llbitmap.c
1088
llbitmap_resume(llbitmap, idx);
drivers/md/md-llbitmap.c
1095
if (test_and_clear_bit(BITMAP_DAEMON_BUSY, &llbitmap->flags))
drivers/md/md-llbitmap.c
1100
mod_timer(&llbitmap->pending_timer,
drivers/md/md-llbitmap.c
1101
jiffies + llbitmap->mddev->bitmap_info.daemon_sleep * HZ);
drivers/md/md-llbitmap.c
1106
struct llbitmap *llbitmap;
drivers/md/md-llbitmap.c
1113
llbitmap = kzalloc_obj(*llbitmap);
drivers/md/md-llbitmap.c
1114
if (!llbitmap)
drivers/md/md-llbitmap.c
1117
llbitmap->mddev = mddev;
drivers/md/md-llbitmap.c
1118
llbitmap->io_size = bdev_logical_block_size(mddev->gendisk->part0);
drivers/md/md-llbitmap.c
1119
llbitmap->blocks_per_page = PAGE_SIZE / llbitmap->io_size;
drivers/md/md-llbitmap.c
1121
timer_setup(&llbitmap->pending_timer, llbitmap_pending_timer_fn, 0);
drivers/md/md-llbitmap.c
1122
INIT_WORK(&llbitmap->daemon_work, md_llbitmap_daemon_fn);
drivers/md/md-llbitmap.c
1123
atomic_set(&llbitmap->behind_writes, 0);
drivers/md/md-llbitmap.c
1124
init_waitqueue_head(&llbitmap->behind_wait);
drivers/md/md-llbitmap.c
1127
mddev->bitmap = llbitmap;
drivers/md/md-llbitmap.c
1128
ret = llbitmap_read_sb(llbitmap);
drivers/md/md-llbitmap.c
1131
kfree(llbitmap);
drivers/md/md-llbitmap.c
1140
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1144
chunksize = llbitmap->chunksize;
drivers/md/md-llbitmap.c
1153
llbitmap->chunkshift = ffz(~chunksize);
drivers/md/md-llbitmap.c
1154
llbitmap->chunksize = chunksize;
drivers/md/md-llbitmap.c
1155
llbitmap->chunks = chunks;
drivers/md/md-llbitmap.c
1163
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1165
if (test_and_clear_bit(BITMAP_STALE, &llbitmap->flags))
drivers/md/md-llbitmap.c
1168
llbitmap_state_machine(llbitmap, 0, llbitmap->chunks - 1, action);
drivers/md/md-llbitmap.c
1174
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1176
if (!llbitmap)
drivers/md/md-llbitmap.c
1181
timer_delete_sync(&llbitmap->pending_timer);
drivers/md/md-llbitmap.c
1186
llbitmap_free_pages(llbitmap);
drivers/md/md-llbitmap.c
1187
kfree(llbitmap);
drivers/md/md-llbitmap.c
1194
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1195
unsigned long start = offset >> llbitmap->chunkshift;
drivers/md/md-llbitmap.c
1196
unsigned long end = (offset + sectors - 1) >> llbitmap->chunkshift;
drivers/md/md-llbitmap.c
1201
llbitmap_raise_barrier(llbitmap, page_start);
drivers/md/md-llbitmap.c
1205
llbitmap_state_machine(llbitmap, start, end, BitmapActionStartwrite);
drivers/md/md-llbitmap.c
1211
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1212
unsigned long start = offset >> llbitmap->chunkshift;
drivers/md/md-llbitmap.c
1213
unsigned long end = (offset + sectors - 1) >> llbitmap->chunkshift;
drivers/md/md-llbitmap.c
1218
llbitmap_release_barrier(llbitmap, page_start);
drivers/md/md-llbitmap.c
1226
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1227
unsigned long start = DIV_ROUND_UP_SECTOR_T(offset, llbitmap->chunksize);
drivers/md/md-llbitmap.c
1228
unsigned long end = (offset + sectors - 1) >> llbitmap->chunkshift;
drivers/md/md-llbitmap.c
1233
llbitmap_raise_barrier(llbitmap, page_start);
drivers/md/md-llbitmap.c
1237
llbitmap_state_machine(llbitmap, start, end, BitmapActionDiscard);
drivers/md/md-llbitmap.c
1243
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1244
unsigned long start = DIV_ROUND_UP_SECTOR_T(offset, llbitmap->chunksize);
drivers/md/md-llbitmap.c
1245
unsigned long end = (offset + sectors - 1) >> llbitmap->chunkshift;
drivers/md/md-llbitmap.c
1250
llbitmap_release_barrier(llbitmap, page_start);
drivers/md/md-llbitmap.c
1259
struct llbitmap *llbitmap = unplug_work->llbitmap;
drivers/md/md-llbitmap.c
1265
for (i = 0; i < llbitmap->nr_pages; i++) {
drivers/md/md-llbitmap.c
1266
if (!test_bit(LLPageDirty, &llbitmap->pctl[i]->flags) ||
drivers/md/md-llbitmap.c
1267
!test_and_clear_bit(LLPageDirty, &llbitmap->pctl[i]->flags))
drivers/md/md-llbitmap.c
1270
llbitmap_write_page(llbitmap, i);
drivers/md/md-llbitmap.c
1274
md_super_wait(llbitmap->mddev);
drivers/md/md-llbitmap.c
1278
static bool llbitmap_dirty(struct llbitmap *llbitmap)
drivers/md/md-llbitmap.c
1282
for (i = 0; i < llbitmap->nr_pages; i++)
drivers/md/md-llbitmap.c
1283
if (test_bit(LLPageDirty, &llbitmap->pctl[i]->flags))
drivers/md/md-llbitmap.c
1292
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1294
.llbitmap = llbitmap,
drivers/md/md-llbitmap.c
1298
if (!llbitmap_dirty(llbitmap))
drivers/md/md-llbitmap.c
1320
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1325
for (i = 0; i < llbitmap->nr_pages; i++) {
drivers/md/md-llbitmap.c
1326
struct llbitmap_page_ctl *pctl = llbitmap->pctl[i];
drivers/md/md-llbitmap.c
1330
bitmap_fill(pctl->dirty, llbitmap->blocks_per_page);
drivers/md/md-llbitmap.c
1331
llbitmap_write_page(llbitmap, i);
drivers/md/md-llbitmap.c
1334
md_super_wait(llbitmap->mddev);
drivers/md/md-llbitmap.c
1339
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1342
for (i = 0; i < llbitmap->nr_pages; i++)
drivers/md/md-llbitmap.c
1343
set_bit(LLPageFlush, &llbitmap->pctl[i]->flags);
drivers/md/md-llbitmap.c
1345
timer_delete_sync(&llbitmap->pending_timer);
drivers/md/md-llbitmap.c
1346
queue_work(md_llbitmap_io_wq, &llbitmap->daemon_work);
drivers/md/md-llbitmap.c
1347
flush_work(&llbitmap->daemon_work);
drivers/md/md-llbitmap.c
1355
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1356
unsigned long p = offset >> llbitmap->chunkshift;
drivers/md/md-llbitmap.c
1357
enum llbitmap_state c = llbitmap_read(llbitmap, p);
drivers/md/md-llbitmap.c
1364
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1365
unsigned long p = offset >> llbitmap->chunkshift;
drivers/md/md-llbitmap.c
1366
int blocks = llbitmap->chunksize - (offset & (llbitmap->chunksize - 1));
drivers/md/md-llbitmap.c
1367
enum llbitmap_state c = llbitmap_read(llbitmap, p);
drivers/md/md-llbitmap.c
1393
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1394
unsigned long p = offset >> llbitmap->chunkshift;
drivers/md/md-llbitmap.c
1403
llbitmap_state_machine(llbitmap, 0, llbitmap->chunks - 1,
drivers/md/md-llbitmap.c
1411
*blocks = llbitmap->chunksize - (offset & (llbitmap->chunksize - 1));
drivers/md/md-llbitmap.c
1412
state = llbitmap_state_machine(llbitmap, p, p, BitmapActionStartsync);
drivers/md/md-llbitmap.c
1420
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1421
unsigned long p = offset >> llbitmap->chunkshift;
drivers/md/md-llbitmap.c
1423
*blocks = llbitmap->chunksize - (offset & (llbitmap->chunksize - 1));
drivers/md/md-llbitmap.c
1424
llbitmap_state_machine(llbitmap, p, llbitmap->chunks - 1,
drivers/md/md-llbitmap.c
1431
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1434
for (i = 0; i < llbitmap->nr_pages; i++) {
drivers/md/md-llbitmap.c
1435
struct llbitmap_page_ctl *pctl = llbitmap->pctl[i];
drivers/md/md-llbitmap.c
1441
llbitmap_state_machine(llbitmap, 0, llbitmap->chunks - 1,
drivers/md/md-llbitmap.c
1452
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1455
llbitmap->last_end_sync = jiffies;
drivers/md/md-llbitmap.c
1459
if (time_before(jiffies, llbitmap->last_end_sync +
drivers/md/md-llbitmap.c
1467
llbitmap_state_machine(llbitmap, 0, sector >> llbitmap->chunkshift,
drivers/md/md-llbitmap.c
1471
llbitmap->last_end_sync = jiffies;
drivers/md/md-llbitmap.c
1477
struct llbitmap *llbitmap = data;
drivers/md/md-llbitmap.c
1479
return llbitmap && !test_bit(BITMAP_WRITE_ERROR, &llbitmap->flags);
drivers/md/md-llbitmap.c
1488
static void llbitmap_write_sb(struct llbitmap *llbitmap)
drivers/md/md-llbitmap.c
1490
int nr_blocks = DIV_ROUND_UP(BITMAP_DATA_OFFSET, llbitmap->io_size);
drivers/md/md-llbitmap.c
1492
bitmap_fill(llbitmap->pctl[0]->dirty, nr_blocks);
drivers/md/md-llbitmap.c
1493
llbitmap_write_page(llbitmap, 0);
drivers/md/md-llbitmap.c
1494
md_super_wait(llbitmap->mddev);
drivers/md/md-llbitmap.c
1499
struct llbitmap *llbitmap = data;
drivers/md/md-llbitmap.c
1500
struct mddev *mddev = llbitmap->mddev;
drivers/md/md-llbitmap.c
1504
if (test_bit(BITMAP_WRITE_ERROR, &llbitmap->flags))
drivers/md/md-llbitmap.c
1507
sb_page = llbitmap_read_page(llbitmap, 0);
drivers/md/md-llbitmap.c
1511
set_bit(BITMAP_WRITE_ERROR, &llbitmap->flags);
drivers/md/md-llbitmap.c
1515
if (mddev->events < llbitmap->events_cleared)
drivers/md/md-llbitmap.c
1516
llbitmap->events_cleared = mddev->events;
drivers/md/md-llbitmap.c
1520
sb->state = cpu_to_le32(llbitmap->flags);
drivers/md/md-llbitmap.c
1521
sb->chunksize = cpu_to_le32(llbitmap->chunksize);
drivers/md/md-llbitmap.c
1523
sb->events_cleared = cpu_to_le64(llbitmap->events_cleared);
drivers/md/md-llbitmap.c
1528
llbitmap_write_sb(llbitmap);
drivers/md/md-llbitmap.c
1533
struct llbitmap *llbitmap = data;
drivers/md/md-llbitmap.c
1538
stats->pages = llbitmap->nr_pages;
drivers/md/md-llbitmap.c
1539
stats->file_pages = llbitmap->nr_pages;
drivers/md/md-llbitmap.c
1541
stats->behind_writes = atomic_read(&llbitmap->behind_writes);
drivers/md/md-llbitmap.c
1542
stats->behind_wait = wq_has_sleeper(&llbitmap->behind_wait);
drivers/md/md-llbitmap.c
1543
stats->events_cleared = llbitmap->events_cleared;
drivers/md/md-llbitmap.c
1552
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1554
for (i = 0; i < llbitmap->nr_pages; i++) {
drivers/md/md-llbitmap.c
1555
struct llbitmap_page_ctl *pctl = llbitmap->pctl[i];
drivers/md/md-llbitmap.c
1558
bitmap_fill(pctl->dirty, llbitmap->blocks_per_page);
drivers/md/md-llbitmap.c
1564
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1566
atomic_inc(&llbitmap->behind_writes);
drivers/md/md-llbitmap.c
1571
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1573
if (atomic_dec_and_test(&llbitmap->behind_writes))
drivers/md/md-llbitmap.c
1574
wake_up(&llbitmap->behind_wait);
drivers/md/md-llbitmap.c
1579
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1581
if (llbitmap && atomic_read(&llbitmap->behind_writes) > 0) {
drivers/md/md-llbitmap.c
1585
wait_event(llbitmap->behind_wait,
drivers/md/md-llbitmap.c
1586
atomic_read(&llbitmap->behind_writes) == 0);
drivers/md/md-llbitmap.c
1594
struct llbitmap *llbitmap;
drivers/md/md-llbitmap.c
1599
llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1600
if (!llbitmap || !llbitmap->pctl) {
drivers/md/md-llbitmap.c
1605
if (test_bit(BITMAP_WRITE_ERROR, &llbitmap->flags)) {
drivers/md/md-llbitmap.c
1610
while (start < llbitmap->chunks) {
drivers/md/md-llbitmap.c
1611
enum llbitmap_state c = llbitmap_read(llbitmap, start);
drivers/md/md-llbitmap.c
1637
struct llbitmap *llbitmap;
drivers/md/md-llbitmap.c
1641
llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1642
if (!llbitmap) {
drivers/md/md-llbitmap.c
1648
llbitmap->chunksize, llbitmap->chunkshift,
drivers/md/md-llbitmap.c
1649
llbitmap->chunks, mddev->bitmap_info.offset,
drivers/md/md-llbitmap.c
1650
llbitmap->mddev->bitmap_info.daemon_sleep);
drivers/md/md-llbitmap.c
1682
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1684
return sprintf(page, "%lu\n", llbitmap->barrier_idle);
drivers/md/md-llbitmap.c
1690
struct llbitmap *llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1697
llbitmap->barrier_idle = timeout;
drivers/md/md-llbitmap.c
1706
struct llbitmap *llbitmap;
drivers/md/md-llbitmap.c
1713
llbitmap = mddev->bitmap;
drivers/md/md-llbitmap.c
1714
if (!llbitmap || !llbitmap->pctl) {
drivers/md/md-llbitmap.c
1720
llbitmap_state_machine(llbitmap, 0, llbitmap->chunks - 1,
drivers/md/md-llbitmap.c
310
struct llbitmap *llbitmap;
drivers/md/md-llbitmap.c
418
static enum llbitmap_state llbitmap_read(struct llbitmap *llbitmap, loff_t pos)
drivers/md/md-llbitmap.c
427
return llbitmap->pctl[idx]->state[offset];
drivers/md/md-llbitmap.c
431
static void llbitmap_infect_dirty_bits(struct llbitmap *llbitmap,
drivers/md/md-llbitmap.c
435
bool level_456 = raid_is_456(llbitmap->mddev);
drivers/md/md-llbitmap.c
436
unsigned int io_size = llbitmap->io_size;
drivers/md/md-llbitmap.c
452
static void llbitmap_set_page_dirty(struct llbitmap *llbitmap, int idx,
drivers/md/md-llbitmap.c
455
struct llbitmap_page_ctl *pctl = llbitmap->pctl[idx];
drivers/md/md-llbitmap.c
456
unsigned int io_size = llbitmap->io_size;
drivers/md/md-llbitmap.c
468
if (llbitmap->mddev->degraded || !infect) {
drivers/md/md-llbitmap.c
481
llbitmap_infect_dirty_bits(llbitmap, pctl, block);
drivers/md/md-llbitmap.c
490
llbitmap_infect_dirty_bits(llbitmap, pctl, block);
drivers/md/md-llbitmap.c
496
static void llbitmap_write(struct llbitmap *llbitmap, enum llbitmap_state state,
drivers/md/md-llbitmap.c
506
llbitmap->pctl[idx]->state[bit] = state;
drivers/md/md-llbitmap.c
508
llbitmap_set_page_dirty(llbitmap, idx, bit, true);
drivers/md/md-llbitmap.c
510
llbitmap_set_page_dirty(llbitmap, idx, bit, false);
drivers/md/md-llbitmap.c
513
static struct page *llbitmap_read_page(struct llbitmap *llbitmap, int idx)
drivers/md/md-llbitmap.c
515
struct mddev *mddev = llbitmap->mddev;
drivers/md/md-llbitmap.c
519
if (llbitmap->pctl && llbitmap->pctl[idx])
drivers/md/md-llbitmap.c
520
page = llbitmap->pctl[idx]->page;
drivers/md/md-llbitmap.c
549
static void llbitmap_write_page(struct llbitmap *llbitmap, int idx)
drivers/md/md-llbitmap.c
551
struct page *page = llbitmap->pctl[idx]->page;
drivers/md/md-llbitmap.c
552
struct mddev *mddev = llbitmap->mddev;
drivers/md/md-llbitmap.c
556
for (block = 0; block < llbitmap->blocks_per_page; block++) {
drivers/md/md-llbitmap.c
557
struct llbitmap_page_ctl *pctl = llbitmap->pctl[idx];
drivers/md/md-llbitmap.c
564
sector_t bit_sector = llbitmap->io_size >> SECTOR_SHIFT;
drivers/md/md-llbitmap.c
573
llbitmap->io_size, page,
drivers/md/md-llbitmap.c
574
block * llbitmap->io_size);
drivers/md/md-llbitmap.c
587
static void llbitmap_free_pages(struct llbitmap *llbitmap)
drivers/md/md-llbitmap.c
591
if (!llbitmap->pctl)
drivers/md/md-llbitmap.c
594
for (i = 0; i < llbitmap->nr_pages; i++) {
drivers/md/md-llbitmap.c
595
struct llbitmap_page_ctl *pctl = llbitmap->pctl[i];
drivers/md/md-llbitmap.c
604
kfree(llbitmap->pctl[0]);
drivers/md/md-llbitmap.c
605
kfree(llbitmap->pctl);
drivers/md/md-llbitmap.c
606
llbitmap->pctl = NULL;
drivers/md/md-llbitmap.c
609
static int llbitmap_cache_pages(struct llbitmap *llbitmap)
drivers/md/md-llbitmap.c
612
unsigned int nr_pages = DIV_ROUND_UP(llbitmap->chunks +
drivers/md/md-llbitmap.c
615
llbitmap->blocks_per_page));
drivers/md/md-llbitmap.c
618
llbitmap->pctl = kmalloc_array(nr_pages, sizeof(void *),
drivers/md/md-llbitmap.c
620
if (!llbitmap->pctl)
drivers/md/md-llbitmap.c
626
kfree(llbitmap->pctl);
drivers/md/md-llbitmap.c
630
llbitmap->nr_pages = nr_pages;
drivers/md/md-llbitmap.c
633
struct page *page = llbitmap_read_page(llbitmap, i);
drivers/md/md-llbitmap.c
635
llbitmap->pctl[i] = pctl;
drivers/md/md-llbitmap.c
638
llbitmap_free_pages(llbitmap);
drivers/md/md-llbitmap.c
645
llbitmap_free_pages(llbitmap);
drivers/md/md-llbitmap.c
660
static bool llbitmap_all_disks_support_wzeroes_unmap(struct llbitmap *llbitmap)
drivers/md/md-llbitmap.c
662
struct mddev *mddev = llbitmap->mddev;
drivers/md/md-llbitmap.c
681
static bool llbitmap_zero_all_disks(struct llbitmap *llbitmap)
drivers/md/md-llbitmap.c
683
struct mddev *mddev = llbitmap->mddev;
drivers/md/md-llbitmap.c
706
static void llbitmap_init_state(struct llbitmap *llbitmap)
drivers/md/md-llbitmap.c
708
struct mddev *mddev = llbitmap->mddev;
drivers/md/md-llbitmap.c
712
if (test_and_clear_bit(BITMAP_CLEAN, &llbitmap->flags)) {
drivers/md/md-llbitmap.c
715
llbitmap_all_disks_support_wzeroes_unmap(llbitmap)) {
drivers/md/md-llbitmap.c
721
if (llbitmap_zero_all_disks(llbitmap))
drivers/md/md-llbitmap.c
725
for (i = 0; i < llbitmap->chunks; i++)
drivers/md/md-llbitmap.c
726
llbitmap_write(llbitmap, state, i);
drivers/md/md-llbitmap.c
730
static enum llbitmap_state llbitmap_state_machine(struct llbitmap *llbitmap,
drivers/md/md-llbitmap.c
735
struct mddev *mddev = llbitmap->mddev;
drivers/md/md-llbitmap.c
737
bool level_456 = raid_is_456(llbitmap->mddev);
drivers/md/md-llbitmap.c
741
if (test_bit(BITMAP_WRITE_ERROR, &llbitmap->flags))
drivers/md/md-llbitmap.c
745
llbitmap_init_state(llbitmap);
drivers/md/md-llbitmap.c
750
enum llbitmap_state c = llbitmap_read(llbitmap, start);
drivers/md/md-llbitmap.c
788
llbitmap_write(llbitmap, state, start);
drivers/md/md-llbitmap.c
792
!timer_pending(&llbitmap->pending_timer))
drivers/md/md-llbitmap.c
793
mod_timer(&llbitmap->pending_timer,
drivers/md/md-llbitmap.c
815
static void llbitmap_raise_barrier(struct llbitmap *llbitmap, int page_idx)
drivers/md/md-llbitmap.c
817
struct llbitmap_page_ctl *pctl = llbitmap->pctl[page_idx];
drivers/md/md-llbitmap.c
821
WRITE_ONCE(pctl->expire, jiffies + llbitmap->barrier_idle * HZ);
drivers/md/md-llbitmap.c
829
static void llbitmap_release_barrier(struct llbitmap *llbitmap, int page_idx)
drivers/md/md-llbitmap.c
831
struct llbitmap_page_ctl *pctl = llbitmap->pctl[page_idx];
drivers/md/md-llbitmap.c
836
static int llbitmap_suspend_timeout(struct llbitmap *llbitmap, int page_idx)
drivers/md/md-llbitmap.c
838
struct llbitmap_page_ctl *pctl = llbitmap->pctl[page_idx];
drivers/md/md-llbitmap.c
843
llbitmap->mddev->bitmap_info.daemon_sleep * HZ)) {
drivers/md/md-llbitmap.c
851
static void llbitmap_resume(struct llbitmap *llbitmap, int page_idx)
drivers/md/md-llbitmap.c
853
struct llbitmap_page_ctl *pctl = llbitmap->pctl[page_idx];
drivers/md/md-llbitmap.c
903
static int llbitmap_init(struct llbitmap *llbitmap)
drivers/md/md-llbitmap.c
905
struct mddev *mddev = llbitmap->mddev;
drivers/md/md-llbitmap.c
917
llbitmap->barrier_idle = DEFAULT_BARRIER_IDLE;
drivers/md/md-llbitmap.c
918
llbitmap->chunkshift = ffz(~chunksize);
drivers/md/md-llbitmap.c
919
llbitmap->chunksize = chunksize;
drivers/md/md-llbitmap.c
920
llbitmap->chunks = chunks;
drivers/md/md-llbitmap.c
923
ret = llbitmap_cache_pages(llbitmap);
drivers/md/md-llbitmap.c
927
llbitmap_state_machine(llbitmap, 0, llbitmap->chunks - 1,
drivers/md/md-llbitmap.c
935
static int llbitmap_read_sb(struct llbitmap *llbitmap)
drivers/md/md-llbitmap.c
937
struct mddev *mddev = llbitmap->mddev;
drivers/md/md-llbitmap.c
950
sb_page = llbitmap_read_page(llbitmap, 0);
drivers/md/md-llbitmap.c
984
llbitmap->flags = le32_to_cpu(sb->state);
drivers/md/md-llbitmap.c
985
if (test_and_clear_bit(BITMAP_FIRST_USE, &llbitmap->flags)) {
drivers/md/md-llbitmap.c
986
ret = llbitmap_init(llbitmap);