|
@@ -292,22 +292,22 @@ static unsigned int bm_bit_to_page_idx(struct drbd_bitmap *b, u64 bitnr)
|
|
|
static unsigned long *__bm_map_pidx(struct drbd_bitmap *b, unsigned int idx, const enum km_type km)
|
|
|
{
|
|
|
struct page *page = b->bm_pages[idx];
|
|
|
- return (unsigned long *) kmap_atomic(page, km);
|
|
|
+ return (unsigned long *) kmap_atomic(page);
|
|
|
}
|
|
|
|
|
|
static unsigned long *bm_map_pidx(struct drbd_bitmap *b, unsigned int idx)
|
|
|
{
|
|
|
- return __bm_map_pidx(b, idx, KM_IRQ1);
|
|
|
+ return __bm_map_pidx(b, idx);
|
|
|
}
|
|
|
|
|
|
-static void __bm_unmap(unsigned long *p_addr, const enum km_type km)
|
|
|
+static void __bm_unmap(unsigned long *p_addr)
|
|
|
{
|
|
|
- kunmap_atomic(p_addr, km);
|
|
|
+ kunmap_atomic(p_addr);
|
|
|
};
|
|
|
|
|
|
static void bm_unmap(unsigned long *p_addr)
|
|
|
{
|
|
|
- return __bm_unmap(p_addr, KM_IRQ1);
|
|
|
+ return __bm_unmap(p_addr);
|
|
|
}
|
|
|
|
|
|
/* long word offset of _bitmap_ sector */
|
|
@@ -543,10 +543,10 @@ static unsigned long bm_count_bits(struct drbd_bitmap *b)
|
|
|
|
|
|
/* all but last page */
|
|
|
for (idx = 0; idx < b->bm_number_of_pages - 1; idx++) {
|
|
|
- p_addr = __bm_map_pidx(b, idx, KM_USER0);
|
|
|
+ p_addr = __bm_map_pidx(b, idx);
|
|
|
for (i = 0; i < LWPP; i++)
|
|
|
bits += hweight_long(p_addr[i]);
|
|
|
- __bm_unmap(p_addr, KM_USER0);
|
|
|
+ __bm_unmap(p_addr);
|
|
|
cond_resched();
|
|
|
}
|
|
|
/* last (or only) page */
|
|
@@ -1163,7 +1163,7 @@ int drbd_bm_write_page(struct drbd_conf *mdev, unsigned int idx) __must_hold(loc
|
|
|
* this returns a bit number, NOT a sector!
|
|
|
*/
|
|
|
static unsigned long __bm_find_next(struct drbd_conf *mdev, unsigned long bm_fo,
|
|
|
- const int find_zero_bit, const enum km_type km)
|
|
|
+ const int find_zero_bit)
|
|
|
{
|
|
|
struct drbd_bitmap *b = mdev->bitmap;
|
|
|
unsigned long *p_addr;
|
|
@@ -1178,7 +1178,7 @@ static unsigned long __bm_find_next(struct drbd_conf *mdev, unsigned long bm_fo,
|
|
|
while (bm_fo < b->bm_bits) {
|
|
|
/* bit offset of the first bit in the page */
|
|
|
bit_offset = bm_fo & ~BITS_PER_PAGE_MASK;
|
|
|
- p_addr = __bm_map_pidx(b, bm_bit_to_page_idx(b, bm_fo), km);
|
|
|
+ p_addr = __bm_map_pidx(b, bm_bit_to_page_idx(b, bm_fo));
|
|
|
|
|
|
if (find_zero_bit)
|
|
|
i = find_next_zero_bit_le(p_addr,
|
|
@@ -1187,7 +1187,7 @@ static unsigned long __bm_find_next(struct drbd_conf *mdev, unsigned long bm_fo,
|
|
|
i = find_next_bit_le(p_addr,
|
|
|
PAGE_SIZE*8, bm_fo & BITS_PER_PAGE_MASK);
|
|
|
|
|
|
- __bm_unmap(p_addr, km);
|
|
|
+ __bm_unmap(p_addr);
|
|
|
if (i < PAGE_SIZE*8) {
|
|
|
bm_fo = bit_offset + i;
|
|
|
if (bm_fo >= b->bm_bits)
|
|
@@ -1215,7 +1215,7 @@ static unsigned long bm_find_next(struct drbd_conf *mdev,
|
|
|
if (BM_DONT_TEST & b->bm_flags)
|
|
|
bm_print_lock_info(mdev);
|
|
|
|
|
|
- i = __bm_find_next(mdev, bm_fo, find_zero_bit, KM_IRQ1);
|
|
|
+ i = __bm_find_next(mdev, bm_fo, find_zero_bit);
|
|
|
|
|
|
spin_unlock_irq(&b->bm_lock);
|
|
|
return i;
|
|
@@ -1239,13 +1239,13 @@ unsigned long drbd_bm_find_next_zero(struct drbd_conf *mdev, unsigned long bm_fo
|
|
|
unsigned long _drbd_bm_find_next(struct drbd_conf *mdev, unsigned long bm_fo)
|
|
|
{
|
|
|
/* WARN_ON(!(BM_DONT_SET & mdev->b->bm_flags)); */
|
|
|
- return __bm_find_next(mdev, bm_fo, 0, KM_USER1);
|
|
|
+ return __bm_find_next(mdev, bm_fo, 0);
|
|
|
}
|
|
|
|
|
|
unsigned long _drbd_bm_find_next_zero(struct drbd_conf *mdev, unsigned long bm_fo)
|
|
|
{
|
|
|
/* WARN_ON(!(BM_DONT_SET & mdev->b->bm_flags)); */
|
|
|
- return __bm_find_next(mdev, bm_fo, 1, KM_USER1);
|
|
|
+ return __bm_find_next(mdev, bm_fo, 1);
|
|
|
}
|
|
|
|
|
|
/* returns number of bits actually changed.
|
|
@@ -1273,14 +1273,14 @@ static int __bm_change_bits_to(struct drbd_conf *mdev, const unsigned long s,
|
|
|
unsigned int page_nr = bm_bit_to_page_idx(b, bitnr);
|
|
|
if (page_nr != last_page_nr) {
|
|
|
if (p_addr)
|
|
|
- __bm_unmap(p_addr, KM_IRQ1);
|
|
|
+ __bm_unmap(p_addr);
|
|
|
if (c < 0)
|
|
|
bm_set_page_lazy_writeout(b->bm_pages[last_page_nr]);
|
|
|
else if (c > 0)
|
|
|
bm_set_page_need_writeout(b->bm_pages[last_page_nr]);
|
|
|
changed_total += c;
|
|
|
c = 0;
|
|
|
- p_addr = __bm_map_pidx(b, page_nr, KM_IRQ1);
|
|
|
+ p_addr = __bm_map_pidx(b, page_nr);
|
|
|
last_page_nr = page_nr;
|
|
|
}
|
|
|
if (val)
|
|
@@ -1289,7 +1289,7 @@ static int __bm_change_bits_to(struct drbd_conf *mdev, const unsigned long s,
|
|
|
c -= (0 != __test_and_clear_bit_le(bitnr & BITS_PER_PAGE_MASK, p_addr));
|
|
|
}
|
|
|
if (p_addr)
|
|
|
- __bm_unmap(p_addr, KM_IRQ1);
|
|
|
+ __bm_unmap(p_addr);
|
|
|
if (c < 0)
|
|
|
bm_set_page_lazy_writeout(b->bm_pages[last_page_nr]);
|
|
|
else if (c > 0)
|
|
@@ -1342,13 +1342,13 @@ static inline void bm_set_full_words_within_one_page(struct drbd_bitmap *b,
|
|
|
{
|
|
|
int i;
|
|
|
int bits;
|
|
|
- unsigned long *paddr = kmap_atomic(b->bm_pages[page_nr], KM_IRQ1);
|
|
|
+ unsigned long *paddr = kmap_atomic(b->bm_pages[page_nr]);
|
|
|
for (i = first_word; i < last_word; i++) {
|
|
|
bits = hweight_long(paddr[i]);
|
|
|
paddr[i] = ~0UL;
|
|
|
b->bm_set += BITS_PER_LONG - bits;
|
|
|
}
|
|
|
- kunmap_atomic(paddr, KM_IRQ1);
|
|
|
+ kunmap_atomic(paddr);
|
|
|
}
|
|
|
|
|
|
/* Same thing as drbd_bm_set_bits,
|