• Home
  • Raw
  • Download

Lines Matching refs:index

58 static void zram_free_page(struct zram *zram, size_t index);
60 u32 index, int offset, struct bio *bio);
63 static int zram_slot_trylock(struct zram *zram, u32 index) in zram_slot_trylock() argument
65 return bit_spin_trylock(ZRAM_LOCK, &zram->table[index].flags); in zram_slot_trylock()
68 static void zram_slot_lock(struct zram *zram, u32 index) in zram_slot_lock() argument
70 bit_spin_lock(ZRAM_LOCK, &zram->table[index].flags); in zram_slot_lock()
73 static void zram_slot_unlock(struct zram *zram, u32 index) in zram_slot_unlock() argument
75 bit_spin_unlock(ZRAM_LOCK, &zram->table[index].flags); in zram_slot_unlock()
88 static unsigned long zram_get_handle(struct zram *zram, u32 index) in zram_get_handle() argument
90 return zram->table[index].handle; in zram_get_handle()
93 static void zram_set_handle(struct zram *zram, u32 index, unsigned long handle) in zram_set_handle() argument
95 zram->table[index].handle = handle; in zram_set_handle()
99 static bool zram_test_flag(struct zram *zram, u32 index, in zram_test_flag() argument
102 return zram->table[index].flags & BIT(flag); in zram_test_flag()
105 static void zram_set_flag(struct zram *zram, u32 index, in zram_set_flag() argument
108 zram->table[index].flags |= BIT(flag); in zram_set_flag()
111 static void zram_clear_flag(struct zram *zram, u32 index, in zram_clear_flag() argument
114 zram->table[index].flags &= ~BIT(flag); in zram_clear_flag()
117 static inline void zram_set_element(struct zram *zram, u32 index, in zram_set_element() argument
120 zram->table[index].element = element; in zram_set_element()
123 static unsigned long zram_get_element(struct zram *zram, u32 index) in zram_get_element() argument
125 return zram->table[index].element; in zram_get_element()
128 static size_t zram_get_obj_size(struct zram *zram, u32 index) in zram_get_obj_size() argument
130 return zram->table[index].flags & (BIT(ZRAM_FLAG_SHIFT) - 1); in zram_get_obj_size()
134 u32 index, size_t size) in zram_set_obj_size() argument
136 unsigned long flags = zram->table[index].flags >> ZRAM_FLAG_SHIFT; in zram_set_obj_size()
138 zram->table[index].flags = (flags << ZRAM_FLAG_SHIFT) | size; in zram_set_obj_size()
141 static inline bool zram_allocated(struct zram *zram, u32 index) in zram_allocated() argument
143 return zram_get_obj_size(zram, index) || in zram_allocated()
144 zram_test_flag(zram, index, ZRAM_SAME) || in zram_allocated()
145 zram_test_flag(zram, index, ZRAM_WB); in zram_allocated()
184 static void update_position(u32 *index, int *offset, struct bio_vec *bvec) in update_position() argument
186 *index += (*offset + bvec->bv_len) / PAGE_SIZE; in update_position()
299 int index; in idle_store() local
310 for (index = 0; index < nr_pages; index++) { in idle_store()
315 zram_slot_lock(zram, index); in idle_store()
316 if (zram_allocated(zram, index) && in idle_store()
317 !zram_test_flag(zram, index, ZRAM_UNDER_WB)) in idle_store()
318 zram_set_flag(zram, index, ZRAM_IDLE); in idle_store()
319 zram_slot_unlock(zram, index); in idle_store()
625 unsigned long index = 0; in writeback_store() local
641 if (kstrtol(buf + sizeof(PAGE_WB_SIG) - 1, 10, &index) || in writeback_store()
642 index >= nr_pages) in writeback_store()
666 for (; nr_pages != 0; index++, nr_pages--) { in writeback_store()
689 zram_slot_lock(zram, index); in writeback_store()
690 if (!zram_allocated(zram, index)) in writeback_store()
693 if (zram_test_flag(zram, index, ZRAM_WB) || in writeback_store()
694 zram_test_flag(zram, index, ZRAM_SAME) || in writeback_store()
695 zram_test_flag(zram, index, ZRAM_UNDER_WB)) in writeback_store()
699 !zram_test_flag(zram, index, ZRAM_IDLE)) in writeback_store()
702 !zram_test_flag(zram, index, ZRAM_HUGE)) in writeback_store()
708 zram_set_flag(zram, index, ZRAM_UNDER_WB); in writeback_store()
710 zram_set_flag(zram, index, ZRAM_IDLE); in writeback_store()
711 zram_slot_unlock(zram, index); in writeback_store()
712 if (zram_bvec_read(zram, &bvec, index, 0, NULL)) { in writeback_store()
713 zram_slot_lock(zram, index); in writeback_store()
714 zram_clear_flag(zram, index, ZRAM_UNDER_WB); in writeback_store()
715 zram_clear_flag(zram, index, ZRAM_IDLE); in writeback_store()
716 zram_slot_unlock(zram, index); in writeback_store()
733 zram_slot_lock(zram, index); in writeback_store()
734 zram_clear_flag(zram, index, ZRAM_UNDER_WB); in writeback_store()
735 zram_clear_flag(zram, index, ZRAM_IDLE); in writeback_store()
736 zram_slot_unlock(zram, index); in writeback_store()
755 zram_slot_lock(zram, index); in writeback_store()
756 if (!zram_allocated(zram, index) || in writeback_store()
757 !zram_test_flag(zram, index, ZRAM_IDLE)) { in writeback_store()
758 zram_clear_flag(zram, index, ZRAM_UNDER_WB); in writeback_store()
759 zram_clear_flag(zram, index, ZRAM_IDLE); in writeback_store()
763 zram_free_page(zram, index); in writeback_store()
764 zram_clear_flag(zram, index, ZRAM_UNDER_WB); in writeback_store()
765 zram_set_flag(zram, index, ZRAM_WB); in writeback_store()
766 zram_set_element(zram, index, blk_idx); in writeback_store()
774 zram_slot_unlock(zram, index); in writeback_store()
870 static void zram_accessed(struct zram *zram, u32 index) in zram_accessed() argument
872 zram_clear_flag(zram, index, ZRAM_IDLE); in zram_accessed()
873 zram->table[index].ac_time = ktime_get_boottime(); in zram_accessed()
880 ssize_t index, written = 0; in read_block_state() local
896 for (index = *ppos; index < nr_pages; index++) { in read_block_state()
899 zram_slot_lock(zram, index); in read_block_state()
900 if (!zram_allocated(zram, index)) in read_block_state()
903 ts = ktime_to_timespec64(zram->table[index].ac_time); in read_block_state()
906 index, (s64)ts.tv_sec, in read_block_state()
908 zram_test_flag(zram, index, ZRAM_SAME) ? 's' : '.', in read_block_state()
909 zram_test_flag(zram, index, ZRAM_WB) ? 'w' : '.', in read_block_state()
910 zram_test_flag(zram, index, ZRAM_HUGE) ? 'h' : '.', in read_block_state()
911 zram_test_flag(zram, index, ZRAM_IDLE) ? 'i' : '.'); in read_block_state()
914 zram_slot_unlock(zram, index); in read_block_state()
920 zram_slot_unlock(zram, index); in read_block_state()
956 static void zram_accessed(struct zram *zram, u32 index) in zram_accessed() argument
958 zram_clear_flag(zram, index, ZRAM_IDLE); in zram_accessed()
1145 size_t index; in zram_meta_free() local
1148 for (index = 0; index < num_pages; index++) in zram_meta_free()
1149 zram_free_page(zram, index); in zram_meta_free()
1180 static void zram_free_page(struct zram *zram, size_t index) in zram_free_page() argument
1185 zram->table[index].ac_time = 0; in zram_free_page()
1187 if (zram_test_flag(zram, index, ZRAM_IDLE)) in zram_free_page()
1188 zram_clear_flag(zram, index, ZRAM_IDLE); in zram_free_page()
1190 if (zram_test_flag(zram, index, ZRAM_HUGE)) { in zram_free_page()
1191 zram_clear_flag(zram, index, ZRAM_HUGE); in zram_free_page()
1195 if (zram_test_flag(zram, index, ZRAM_WB)) { in zram_free_page()
1196 zram_clear_flag(zram, index, ZRAM_WB); in zram_free_page()
1197 free_block_bdev(zram, zram_get_element(zram, index)); in zram_free_page()
1205 if (zram_test_flag(zram, index, ZRAM_SAME)) { in zram_free_page()
1206 zram_clear_flag(zram, index, ZRAM_SAME); in zram_free_page()
1211 handle = zram_get_handle(zram, index); in zram_free_page()
1217 atomic64_sub(zram_get_obj_size(zram, index), in zram_free_page()
1221 zram_set_handle(zram, index, 0); in zram_free_page()
1222 zram_set_obj_size(zram, index, 0); in zram_free_page()
1223 WARN_ON_ONCE(zram->table[index].flags & in zram_free_page()
1227 static int __zram_bvec_read(struct zram *zram, struct page *page, u32 index, in __zram_bvec_read() argument
1236 zram_slot_lock(zram, index); in __zram_bvec_read()
1237 if (zram_test_flag(zram, index, ZRAM_WB)) { in __zram_bvec_read()
1240 zram_slot_unlock(zram, index); in __zram_bvec_read()
1246 zram_get_element(zram, index), in __zram_bvec_read()
1250 handle = zram_get_handle(zram, index); in __zram_bvec_read()
1251 if (!handle || zram_test_flag(zram, index, ZRAM_SAME)) { in __zram_bvec_read()
1255 value = handle ? zram_get_element(zram, index) : 0; in __zram_bvec_read()
1259 zram_slot_unlock(zram, index); in __zram_bvec_read()
1263 size = zram_get_obj_size(zram, index); in __zram_bvec_read()
1281 zram_slot_unlock(zram, index); in __zram_bvec_read()
1285 pr_err("Decompression failed! err=%d, page=%u\n", ret, index); in __zram_bvec_read()
1291 u32 index, int offset, struct bio *bio) in zram_bvec_read() argument
1304 ret = __zram_bvec_read(zram, page, index, bio, is_partial_io(bvec)); in zram_bvec_read()
1324 u32 index, struct bio *bio) in __zram_bvec_write() argument
1418 zram_slot_lock(zram, index); in __zram_bvec_write()
1419 zram_free_page(zram, index); in __zram_bvec_write()
1422 zram_set_flag(zram, index, ZRAM_HUGE); in __zram_bvec_write()
1428 zram_set_flag(zram, index, flags); in __zram_bvec_write()
1429 zram_set_element(zram, index, element); in __zram_bvec_write()
1431 zram_set_handle(zram, index, handle); in __zram_bvec_write()
1432 zram_set_obj_size(zram, index, comp_len); in __zram_bvec_write()
1434 zram_slot_unlock(zram, index); in __zram_bvec_write()
1442 u32 index, int offset, struct bio *bio) in zram_bvec_write() argument
1460 ret = __zram_bvec_read(zram, page, index, bio, true); in zram_bvec_write()
1475 ret = __zram_bvec_write(zram, &vec, index, bio); in zram_bvec_write()
1487 static void zram_bio_discard(struct zram *zram, u32 index, in zram_bio_discard() argument
1507 index++; in zram_bio_discard()
1511 zram_slot_lock(zram, index); in zram_bio_discard()
1512 zram_free_page(zram, index); in zram_bio_discard()
1513 zram_slot_unlock(zram, index); in zram_bio_discard()
1515 index++; in zram_bio_discard()
1525 static int zram_bvec_rw(struct zram *zram, struct bio_vec *bvec, u32 index, in zram_bvec_rw() argument
1532 ret = zram_bvec_read(zram, bvec, index, offset, bio); in zram_bvec_rw()
1536 ret = zram_bvec_write(zram, bvec, index, offset, bio); in zram_bvec_rw()
1539 zram_slot_lock(zram, index); in zram_bvec_rw()
1540 zram_accessed(zram, index); in zram_bvec_rw()
1541 zram_slot_unlock(zram, index); in zram_bvec_rw()
1556 u32 index; in __zram_make_request() local
1561 index = bio->bi_iter.bi_sector >> SECTORS_PER_PAGE_SHIFT; in __zram_make_request()
1568 zram_bio_discard(zram, index, offset, bio); in __zram_make_request()
1583 if (zram_bvec_rw(zram, &bv, index, offset, in __zram_make_request()
1592 update_position(&index, &offset, &bv); in __zram_make_request()
1621 unsigned long index) in zram_slot_free_notify() argument
1628 if (!zram_slot_trylock(zram, index)) { in zram_slot_free_notify()
1633 zram_free_page(zram, index); in zram_slot_free_notify()
1634 zram_slot_unlock(zram, index); in zram_slot_free_notify()
1641 u32 index; in zram_rw_page() local
1656 index = sector >> SECTORS_PER_PAGE_SHIFT; in zram_rw_page()
1664 ret = zram_bvec_rw(zram, &bv, index, offset, op, NULL); in zram_rw_page()