1 /* 2 * Compressed RAM block device 3 * 4 * Copyright (C) 2008, 2009, 2010 Nitin Gupta 5 * 2012, 2013 Minchan Kim 6 * 7 * This code is released using a dual license strategy: BSD/GPL 8 * You can choose the licence that better fits your requirements. 9 * 10 * Released under the terms of 3-clause BSD License 11 * Released under the terms of GNU General Public License Version 2.0 12 * 13 */ 14 15 #define KMSG_COMPONENT "zram" 16 #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt 17 18 #include <linux/module.h> 19 #include <linux/kernel.h> 20 #include <linux/bio.h> 21 #include <linux/bitops.h> 22 #include <linux/blkdev.h> 23 #include <linux/buffer_head.h> 24 #include <linux/device.h> 25 #include <linux/genhd.h> 26 #include <linux/highmem.h> 27 #include <linux/slab.h> 28 #include <linux/backing-dev.h> 29 #include <linux/string.h> 30 #include <linux/vmalloc.h> 31 #include <linux/err.h> 32 #include <linux/idr.h> 33 #include <linux/sysfs.h> 34 #include <linux/debugfs.h> 35 #include <linux/cpuhotplug.h> 36 #include <linux/part_stat.h> 37 38 #include "zram_drv.h" 39 40 static DEFINE_IDR(zram_index_idr); 41 /* idr index must be protected */ 42 static DEFINE_MUTEX(zram_index_mutex); 43 44 static int zram_major; 45 static const char *default_compressor = CONFIG_ZRAM_DEF_COMP; 46 47 /* Module params (documentation at end) */ 48 static unsigned int num_devices = 1; 49 /* 50 * Pages that compress to sizes equals or greater than this are stored 51 * uncompressed in memory. 52 */ 53 static size_t huge_class_size; 54 55 static const struct block_device_operations zram_devops; 56 static const struct block_device_operations zram_wb_devops; 57 58 static void zram_free_page(struct zram *zram, size_t index); 59 static int zram_bvec_read(struct zram *zram, struct bio_vec *bvec, 60 u32 index, int offset, struct bio *bio); 61 62 63 static int zram_slot_trylock(struct zram *zram, u32 index) 64 { 65 return bit_spin_trylock(ZRAM_LOCK, &zram->table[index].flags); 66 } 67 68 static void zram_slot_lock(struct zram *zram, u32 index) 69 { 70 bit_spin_lock(ZRAM_LOCK, &zram->table[index].flags); 71 } 72 73 static void zram_slot_unlock(struct zram *zram, u32 index) 74 { 75 bit_spin_unlock(ZRAM_LOCK, &zram->table[index].flags); 76 } 77 78 static inline bool init_done(struct zram *zram) 79 { 80 return zram->disksize; 81 } 82 83 static inline struct zram *dev_to_zram(struct device *dev) 84 { 85 return (struct zram *)dev_to_disk(dev)->private_data; 86 } 87 88 static unsigned long zram_get_handle(struct zram *zram, u32 index) 89 { 90 return zram->table[index].handle; 91 } 92 93 static void zram_set_handle(struct zram *zram, u32 index, unsigned long handle) 94 { 95 zram->table[index].handle = handle; 96 } 97 98 /* flag operations require table entry bit_spin_lock() being held */ 99 static bool zram_test_flag(struct zram *zram, u32 index, 100 enum zram_pageflags flag) 101 { 102 return zram->table[index].flags & BIT(flag); 103 } 104 105 static void zram_set_flag(struct zram *zram, u32 index, 106 enum zram_pageflags flag) 107 { 108 zram->table[index].flags |= BIT(flag); 109 } 110 111 static void zram_clear_flag(struct zram *zram, u32 index, 112 enum zram_pageflags flag) 113 { 114 zram->table[index].flags &= ~BIT(flag); 115 } 116 117 static inline void zram_set_element(struct zram *zram, u32 index, 118 unsigned long element) 119 { 120 zram->table[index].element = element; 121 } 122 123 static unsigned long zram_get_element(struct zram *zram, u32 index) 124 { 125 return zram->table[index].element; 126 } 127 128 static size_t zram_get_obj_size(struct zram *zram, u32 index) 129 { 130 return zram->table[index].flags & (BIT(ZRAM_FLAG_SHIFT) - 1); 131 } 132 133 static void zram_set_obj_size(struct zram *zram, 134 u32 index, size_t size) 135 { 136 unsigned long flags = zram->table[index].flags >> ZRAM_FLAG_SHIFT; 137 138 zram->table[index].flags = (flags << ZRAM_FLAG_SHIFT) | size; 139 } 140 141 static inline bool zram_allocated(struct zram *zram, u32 index) 142 { 143 return zram_get_obj_size(zram, index) || 144 zram_test_flag(zram, index, ZRAM_SAME) || 145 zram_test_flag(zram, index, ZRAM_WB); 146 } 147 148 #if PAGE_SIZE != 4096 149 static inline bool is_partial_io(struct bio_vec *bvec) 150 { 151 return bvec->bv_len != PAGE_SIZE; 152 } 153 #else 154 static inline bool is_partial_io(struct bio_vec *bvec) 155 { 156 return false; 157 } 158 #endif 159 160 /* 161 * Check if request is within bounds and aligned on zram logical blocks. 162 */ 163 static inline bool valid_io_request(struct zram *zram, 164 sector_t start, unsigned int size) 165 { 166 u64 end, bound; 167 168 /* unaligned request */ 169 if (unlikely(start & (ZRAM_SECTOR_PER_LOGICAL_BLOCK - 1))) 170 return false; 171 if (unlikely(size & (ZRAM_LOGICAL_BLOCK_SIZE - 1))) 172 return false; 173 174 end = start + (size >> SECTOR_SHIFT); 175 bound = zram->disksize >> SECTOR_SHIFT; 176 /* out of range range */ 177 if (unlikely(start >= bound || end > bound || start > end)) 178 return false; 179 180 /* I/O request is valid */ 181 return true; 182 } 183 184 static void update_position(u32 *index, int *offset, struct bio_vec *bvec) 185 { 186 *index += (*offset + bvec->bv_len) / PAGE_SIZE; 187 *offset = (*offset + bvec->bv_len) % PAGE_SIZE; 188 } 189 190 static inline void update_used_max(struct zram *zram, 191 const unsigned long pages) 192 { 193 unsigned long old_max, cur_max; 194 195 old_max = atomic_long_read(&zram->stats.max_used_pages); 196 197 do { 198 cur_max = old_max; 199 if (pages > cur_max) 200 old_max = atomic_long_cmpxchg( 201 &zram->stats.max_used_pages, cur_max, pages); 202 } while (old_max != cur_max); 203 } 204 205 static inline void zram_fill_page(void *ptr, unsigned long len, 206 unsigned long value) 207 { 208 WARN_ON_ONCE(!IS_ALIGNED(len, sizeof(unsigned long))); 209 memset_l(ptr, value, len / sizeof(unsigned long)); 210 } 211 212 static bool page_same_filled(void *ptr, unsigned long *element) 213 { 214 unsigned long *page; 215 unsigned long val; 216 unsigned int pos, last_pos = PAGE_SIZE / sizeof(*page) - 1; 217 218 page = (unsigned long *)ptr; 219 val = page[0]; 220 221 if (val != page[last_pos]) 222 return false; 223 224 for (pos = 1; pos < last_pos; pos++) { 225 if (val != page[pos]) 226 return false; 227 } 228 229 *element = val; 230 231 return true; 232 } 233 234 static ssize_t initstate_show(struct device *dev, 235 struct device_attribute *attr, char *buf) 236 { 237 u32 val; 238 struct zram *zram = dev_to_zram(dev); 239 240 down_read(&zram->init_lock); 241 val = init_done(zram); 242 up_read(&zram->init_lock); 243 244 return scnprintf(buf, PAGE_SIZE, "%u\n", val); 245 } 246 247 static ssize_t disksize_show(struct device *dev, 248 struct device_attribute *attr, char *buf) 249 { 250 struct zram *zram = dev_to_zram(dev); 251 252 return scnprintf(buf, PAGE_SIZE, "%llu\n", zram->disksize); 253 } 254 255 static ssize_t mem_limit_store(struct device *dev, 256 struct device_attribute *attr, const char *buf, size_t len) 257 { 258 u64 limit; 259 char *tmp; 260 struct zram *zram = dev_to_zram(dev); 261 262 limit = memparse(buf, &tmp); 263 if (buf == tmp) /* no chars parsed, invalid input */ 264 return -EINVAL; 265 266 down_write(&zram->init_lock); 267 zram->limit_pages = PAGE_ALIGN(limit) >> PAGE_SHIFT; 268 up_write(&zram->init_lock); 269 270 return len; 271 } 272 273 static ssize_t mem_used_max_store(struct device *dev, 274 struct device_attribute *attr, const char *buf, size_t len) 275 { 276 int err; 277 unsigned long val; 278 struct zram *zram = dev_to_zram(dev); 279 280 err = kstrtoul(buf, 10, &val); 281 if (err || val != 0) 282 return -EINVAL; 283 284 down_read(&zram->init_lock); 285 if (init_done(zram)) { 286 atomic_long_set(&zram->stats.max_used_pages, 287 zs_get_total_pages(zram->mem_pool)); 288 } 289 up_read(&zram->init_lock); 290 291 return len; 292 } 293 294 static ssize_t idle_store(struct device *dev, 295 struct device_attribute *attr, const char *buf, size_t len) 296 { 297 struct zram *zram = dev_to_zram(dev); 298 unsigned long nr_pages = zram->disksize >> PAGE_SHIFT; 299 int index; 300 301 if (!sysfs_streq(buf, "all")) 302 return -EINVAL; 303 304 down_read(&zram->init_lock); 305 if (!init_done(zram)) { 306 up_read(&zram->init_lock); 307 return -EINVAL; 308 } 309 310 for (index = 0; index < nr_pages; index++) { 311 /* 312 * Do not mark ZRAM_UNDER_WB slot as ZRAM_IDLE to close race. 313 * See the comment in writeback_store. 314 */ 315 zram_slot_lock(zram, index); 316 if (zram_allocated(zram, index) && 317 !zram_test_flag(zram, index, ZRAM_UNDER_WB)) 318 zram_set_flag(zram, index, ZRAM_IDLE); 319 zram_slot_unlock(zram, index); 320 } 321 322 up_read(&zram->init_lock); 323 324 return len; 325 } 326 327 #ifdef CONFIG_ZRAM_WRITEBACK 328 static ssize_t writeback_limit_enable_store(struct device *dev, 329 struct device_attribute *attr, const char *buf, size_t len) 330 { 331 struct zram *zram = dev_to_zram(dev); 332 u64 val; 333 ssize_t ret = -EINVAL; 334 335 if (kstrtoull(buf, 10, &val)) 336 return ret; 337 338 down_read(&zram->init_lock); 339 spin_lock(&zram->wb_limit_lock); 340 zram->wb_limit_enable = val; 341 spin_unlock(&zram->wb_limit_lock); 342 up_read(&zram->init_lock); 343 ret = len; 344 345 return ret; 346 } 347 348 static ssize_t writeback_limit_enable_show(struct device *dev, 349 struct device_attribute *attr, char *buf) 350 { 351 bool val; 352 struct zram *zram = dev_to_zram(dev); 353 354 down_read(&zram->init_lock); 355 spin_lock(&zram->wb_limit_lock); 356 val = zram->wb_limit_enable; 357 spin_unlock(&zram->wb_limit_lock); 358 up_read(&zram->init_lock); 359 360 return scnprintf(buf, PAGE_SIZE, "%d\n", val); 361 } 362 363 static ssize_t writeback_limit_store(struct device *dev, 364 struct device_attribute *attr, const char *buf, size_t len) 365 { 366 struct zram *zram = dev_to_zram(dev); 367 u64 val; 368 ssize_t ret = -EINVAL; 369 370 if (kstrtoull(buf, 10, &val)) 371 return ret; 372 373 down_read(&zram->init_lock); 374 spin_lock(&zram->wb_limit_lock); 375 zram->bd_wb_limit = val; 376 spin_unlock(&zram->wb_limit_lock); 377 up_read(&zram->init_lock); 378 ret = len; 379 380 return ret; 381 } 382 383 static ssize_t writeback_limit_show(struct device *dev, 384 struct device_attribute *attr, char *buf) 385 { 386 u64 val; 387 struct zram *zram = dev_to_zram(dev); 388 389 down_read(&zram->init_lock); 390 spin_lock(&zram->wb_limit_lock); 391 val = zram->bd_wb_limit; 392 spin_unlock(&zram->wb_limit_lock); 393 up_read(&zram->init_lock); 394 395 return scnprintf(buf, PAGE_SIZE, "%llu\n", val); 396 } 397 398 static void reset_bdev(struct zram *zram) 399 { 400 struct block_device *bdev; 401 402 if (!zram->backing_dev) 403 return; 404 405 bdev = zram->bdev; 406 blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL); 407 /* hope filp_close flush all of IO */ 408 filp_close(zram->backing_dev, NULL); 409 zram->backing_dev = NULL; 410 zram->bdev = NULL; 411 zram->disk->fops = &zram_devops; 412 kvfree(zram->bitmap); 413 zram->bitmap = NULL; 414 } 415 416 static ssize_t backing_dev_show(struct device *dev, 417 struct device_attribute *attr, char *buf) 418 { 419 struct file *file; 420 struct zram *zram = dev_to_zram(dev); 421 char *p; 422 ssize_t ret; 423 424 down_read(&zram->init_lock); 425 file = zram->backing_dev; 426 if (!file) { 427 memcpy(buf, "none\n", 5); 428 up_read(&zram->init_lock); 429 return 5; 430 } 431 432 p = file_path(file, buf, PAGE_SIZE - 1); 433 if (IS_ERR(p)) { 434 ret = PTR_ERR(p); 435 goto out; 436 } 437 438 ret = strlen(p); 439 memmove(buf, p, ret); 440 buf[ret++] = '\n'; 441 out: 442 up_read(&zram->init_lock); 443 return ret; 444 } 445 446 static ssize_t backing_dev_store(struct device *dev, 447 struct device_attribute *attr, const char *buf, size_t len) 448 { 449 char *file_name; 450 size_t sz; 451 struct file *backing_dev = NULL; 452 struct inode *inode; 453 struct address_space *mapping; 454 unsigned int bitmap_sz; 455 unsigned long nr_pages, *bitmap = NULL; 456 struct block_device *bdev = NULL; 457 int err; 458 struct zram *zram = dev_to_zram(dev); 459 460 file_name = kmalloc(PATH_MAX, GFP_KERNEL); 461 if (!file_name) 462 return -ENOMEM; 463 464 down_write(&zram->init_lock); 465 if (init_done(zram)) { 466 pr_info("Can't setup backing device for initialized device\n"); 467 err = -EBUSY; 468 goto out; 469 } 470 471 strlcpy(file_name, buf, PATH_MAX); 472 /* ignore trailing newline */ 473 sz = strlen(file_name); 474 if (sz > 0 && file_name[sz - 1] == '\n') 475 file_name[sz - 1] = 0x00; 476 477 backing_dev = filp_open(file_name, O_RDWR|O_LARGEFILE, 0); 478 if (IS_ERR(backing_dev)) { 479 err = PTR_ERR(backing_dev); 480 backing_dev = NULL; 481 goto out; 482 } 483 484 mapping = backing_dev->f_mapping; 485 inode = mapping->host; 486 487 /* Support only block device in this moment */ 488 if (!S_ISBLK(inode->i_mode)) { 489 err = -ENOTBLK; 490 goto out; 491 } 492 493 bdev = blkdev_get_by_dev(inode->i_rdev, 494 FMODE_READ | FMODE_WRITE | FMODE_EXCL, zram); 495 if (IS_ERR(bdev)) { 496 err = PTR_ERR(bdev); 497 bdev = NULL; 498 goto out; 499 } 500 501 nr_pages = i_size_read(inode) >> PAGE_SHIFT; 502 bitmap_sz = BITS_TO_LONGS(nr_pages) * sizeof(long); 503 bitmap = kvzalloc(bitmap_sz, GFP_KERNEL); 504 if (!bitmap) { 505 err = -ENOMEM; 506 goto out; 507 } 508 509 reset_bdev(zram); 510 511 zram->bdev = bdev; 512 zram->backing_dev = backing_dev; 513 zram->bitmap = bitmap; 514 zram->nr_pages = nr_pages; 515 /* 516 * With writeback feature, zram does asynchronous IO so it's no longer 517 * synchronous device so let's remove synchronous io flag. Othewise, 518 * upper layer(e.g., swap) could wait IO completion rather than 519 * (submit and return), which will cause system sluggish. 520 * Furthermore, when the IO function returns(e.g., swap_readpage), 521 * upper layer expects IO was done so it could deallocate the page 522 * freely but in fact, IO is going on so finally could cause 523 * use-after-free when the IO is really done. 524 */ 525 zram->disk->fops = &zram_wb_devops; 526 up_write(&zram->init_lock); 527 528 pr_info("setup backing device %s\n", file_name); 529 kfree(file_name); 530 531 return len; 532 out: 533 if (bitmap) 534 kvfree(bitmap); 535 536 if (bdev) 537 blkdev_put(bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL); 538 539 if (backing_dev) 540 filp_close(backing_dev, NULL); 541 542 up_write(&zram->init_lock); 543 544 kfree(file_name); 545 546 return err; 547 } 548 549 static unsigned long alloc_block_bdev(struct zram *zram) 550 { 551 unsigned long blk_idx = 1; 552 retry: 553 /* skip 0 bit to confuse zram.handle = 0 */ 554 blk_idx = find_next_zero_bit(zram->bitmap, zram->nr_pages, blk_idx); 555 if (blk_idx == zram->nr_pages) 556 return 0; 557 558 if (test_and_set_bit(blk_idx, zram->bitmap)) 559 goto retry; 560 561 atomic64_inc(&zram->stats.bd_count); 562 return blk_idx; 563 } 564 565 static void free_block_bdev(struct zram *zram, unsigned long blk_idx) 566 { 567 int was_set; 568 569 was_set = test_and_clear_bit(blk_idx, zram->bitmap); 570 WARN_ON_ONCE(!was_set); 571 atomic64_dec(&zram->stats.bd_count); 572 } 573 574 static void zram_page_end_io(struct bio *bio) 575 { 576 struct page *page = bio_first_page_all(bio); 577 578 page_endio(page, op_is_write(bio_op(bio)), 579 blk_status_to_errno(bio->bi_status)); 580 bio_put(bio); 581 } 582 583 /* 584 * Returns 1 if the submission is successful. 585 */ 586 static int read_from_bdev_async(struct zram *zram, struct bio_vec *bvec, 587 unsigned long entry, struct bio *parent) 588 { 589 struct bio *bio; 590 591 bio = bio_alloc(GFP_ATOMIC, 1); 592 if (!bio) 593 return -ENOMEM; 594 595 bio->bi_iter.bi_sector = entry * (PAGE_SIZE >> 9); 596 bio_set_dev(bio, zram->bdev); 597 if (!bio_add_page(bio, bvec->bv_page, bvec->bv_len, bvec->bv_offset)) { 598 bio_put(bio); 599 return -EIO; 600 } 601 602 if (!parent) { 603 bio->bi_opf = REQ_OP_READ; 604 bio->bi_end_io = zram_page_end_io; 605 } else { 606 bio->bi_opf = parent->bi_opf; 607 bio_chain(bio, parent); 608 } 609 610 submit_bio(bio); 611 return 1; 612 } 613 614 #define PAGE_WB_SIG "page_index=" 615 616 #define PAGE_WRITEBACK 0 617 #define HUGE_WRITEBACK 1 618 #define IDLE_WRITEBACK 2 619 620 621 static ssize_t writeback_store(struct device *dev, 622 struct device_attribute *attr, const char *buf, size_t len) 623 { 624 struct zram *zram = dev_to_zram(dev); 625 unsigned long nr_pages = zram->disksize >> PAGE_SHIFT; 626 unsigned long index = 0; 627 struct bio bio; 628 struct bio_vec bio_vec; 629 struct page *page; 630 ssize_t ret = len; 631 int mode; 632 unsigned long blk_idx = 0; 633 634 if (sysfs_streq(buf, "idle")) 635 mode = IDLE_WRITEBACK; 636 else if (sysfs_streq(buf, "huge")) 637 mode = HUGE_WRITEBACK; 638 else { 639 if (strncmp(buf, PAGE_WB_SIG, sizeof(PAGE_WB_SIG) - 1)) 640 return -EINVAL; 641 642 ret = kstrtol(buf + sizeof(PAGE_WB_SIG) - 1, 10, &index); 643 if (ret || index >= nr_pages) 644 return -EINVAL; 645 646 nr_pages = 1; 647 mode = PAGE_WRITEBACK; 648 } 649 650 down_read(&zram->init_lock); 651 if (!init_done(zram)) { 652 ret = -EINVAL; 653 goto release_init_lock; 654 } 655 656 if (!zram->backing_dev) { 657 ret = -ENODEV; 658 goto release_init_lock; 659 } 660 661 page = alloc_page(GFP_KERNEL); 662 if (!page) { 663 ret = -ENOMEM; 664 goto release_init_lock; 665 } 666 667 while (nr_pages--) { 668 struct bio_vec bvec; 669 670 bvec.bv_page = page; 671 bvec.bv_len = PAGE_SIZE; 672 bvec.bv_offset = 0; 673 674 spin_lock(&zram->wb_limit_lock); 675 if (zram->wb_limit_enable && !zram->bd_wb_limit) { 676 spin_unlock(&zram->wb_limit_lock); 677 ret = -EIO; 678 break; 679 } 680 spin_unlock(&zram->wb_limit_lock); 681 682 if (!blk_idx) { 683 blk_idx = alloc_block_bdev(zram); 684 if (!blk_idx) { 685 ret = -ENOSPC; 686 break; 687 } 688 } 689 690 zram_slot_lock(zram, index); 691 if (!zram_allocated(zram, index)) 692 goto next; 693 694 if (zram_test_flag(zram, index, ZRAM_WB) || 695 zram_test_flag(zram, index, ZRAM_SAME) || 696 zram_test_flag(zram, index, ZRAM_UNDER_WB)) 697 goto next; 698 699 if (mode == IDLE_WRITEBACK && 700 !zram_test_flag(zram, index, ZRAM_IDLE)) 701 goto next; 702 if (mode == HUGE_WRITEBACK && 703 !zram_test_flag(zram, index, ZRAM_HUGE)) 704 goto next; 705 /* 706 * Clearing ZRAM_UNDER_WB is duty of caller. 707 * IOW, zram_free_page never clear it. 708 */ 709 zram_set_flag(zram, index, ZRAM_UNDER_WB); 710 /* Need for hugepage writeback racing */ 711 zram_set_flag(zram, index, ZRAM_IDLE); 712 zram_slot_unlock(zram, index); 713 if (zram_bvec_read(zram, &bvec, index, 0, NULL)) { 714 zram_slot_lock(zram, index); 715 zram_clear_flag(zram, index, ZRAM_UNDER_WB); 716 zram_clear_flag(zram, index, ZRAM_IDLE); 717 zram_slot_unlock(zram, index); 718 continue; 719 } 720 721 bio_init(&bio, &bio_vec, 1); 722 bio_set_dev(&bio, zram->bdev); 723 bio.bi_iter.bi_sector = blk_idx * (PAGE_SIZE >> 9); 724 bio.bi_opf = REQ_OP_WRITE | REQ_SYNC; 725 726 bio_add_page(&bio, bvec.bv_page, bvec.bv_len, 727 bvec.bv_offset); 728 /* 729 * XXX: A single page IO would be inefficient for write 730 * but it would be not bad as starter. 731 */ 732 ret = submit_bio_wait(&bio); 733 if (ret) { 734 zram_slot_lock(zram, index); 735 zram_clear_flag(zram, index, ZRAM_UNDER_WB); 736 zram_clear_flag(zram, index, ZRAM_IDLE); 737 zram_slot_unlock(zram, index); 738 continue; 739 } 740 741 atomic64_inc(&zram->stats.bd_writes); 742 /* 743 * We released zram_slot_lock so need to check if the slot was 744 * changed. If there is freeing for the slot, we can catch it 745 * easily by zram_allocated. 746 * A subtle case is the slot is freed/reallocated/marked as 747 * ZRAM_IDLE again. To close the race, idle_store doesn't 748 * mark ZRAM_IDLE once it found the slot was ZRAM_UNDER_WB. 749 * Thus, we could close the race by checking ZRAM_IDLE bit. 750 */ 751 zram_slot_lock(zram, index); 752 if (!zram_allocated(zram, index) || 753 !zram_test_flag(zram, index, ZRAM_IDLE)) { 754 zram_clear_flag(zram, index, ZRAM_UNDER_WB); 755 zram_clear_flag(zram, index, ZRAM_IDLE); 756 goto next; 757 } 758 759 zram_free_page(zram, index); 760 zram_clear_flag(zram, index, ZRAM_UNDER_WB); 761 zram_set_flag(zram, index, ZRAM_WB); 762 zram_set_element(zram, index, blk_idx); 763 blk_idx = 0; 764 atomic64_inc(&zram->stats.pages_stored); 765 spin_lock(&zram->wb_limit_lock); 766 if (zram->wb_limit_enable && zram->bd_wb_limit > 0) 767 zram->bd_wb_limit -= 1UL << (PAGE_SHIFT - 12); 768 spin_unlock(&zram->wb_limit_lock); 769 next: 770 zram_slot_unlock(zram, index); 771 } 772 773 if (blk_idx) 774 free_block_bdev(zram, blk_idx); 775 __free_page(page); 776 release_init_lock: 777 up_read(&zram->init_lock); 778 779 return ret; 780 } 781 782 struct zram_work { 783 struct work_struct work; 784 struct zram *zram; 785 unsigned long entry; 786 struct bio *bio; 787 struct bio_vec bvec; 788 }; 789 790 #if PAGE_SIZE != 4096 791 static void zram_sync_read(struct work_struct *work) 792 { 793 struct zram_work *zw = container_of(work, struct zram_work, work); 794 struct zram *zram = zw->zram; 795 unsigned long entry = zw->entry; 796 struct bio *bio = zw->bio; 797 798 read_from_bdev_async(zram, &zw->bvec, entry, bio); 799 } 800 801 /* 802 * Block layer want one ->submit_bio to be active at a time, so if we use 803 * chained IO with parent IO in same context, it's a deadlock. To avoid that, 804 * use a worker thread context. 805 */ 806 static int read_from_bdev_sync(struct zram *zram, struct bio_vec *bvec, 807 unsigned long entry, struct bio *bio) 808 { 809 struct zram_work work; 810 811 work.bvec = *bvec; 812 work.zram = zram; 813 work.entry = entry; 814 work.bio = bio; 815 816 INIT_WORK_ONSTACK(&work.work, zram_sync_read); 817 queue_work(system_unbound_wq, &work.work); 818 flush_work(&work.work); 819 destroy_work_on_stack(&work.work); 820 821 return 1; 822 } 823 #else 824 static int read_from_bdev_sync(struct zram *zram, struct bio_vec *bvec, 825 unsigned long entry, struct bio *bio) 826 { 827 WARN_ON(1); 828 return -EIO; 829 } 830 #endif 831 832 static int read_from_bdev(struct zram *zram, struct bio_vec *bvec, 833 unsigned long entry, struct bio *parent, bool sync) 834 { 835 atomic64_inc(&zram->stats.bd_reads); 836 if (sync) 837 return read_from_bdev_sync(zram, bvec, entry, parent); 838 else 839 return read_from_bdev_async(zram, bvec, entry, parent); 840 } 841 #else 842 static inline void reset_bdev(struct zram *zram) {}; 843 static int read_from_bdev(struct zram *zram, struct bio_vec *bvec, 844 unsigned long entry, struct bio *parent, bool sync) 845 { 846 return -EIO; 847 } 848 849 static void free_block_bdev(struct zram *zram, unsigned long blk_idx) {}; 850 #endif 851 852 #ifdef CONFIG_ZRAM_MEMORY_TRACKING 853 854 static struct dentry *zram_debugfs_root; 855 856 static void zram_debugfs_create(void) 857 { 858 zram_debugfs_root = debugfs_create_dir("zram", NULL); 859 } 860 861 static void zram_debugfs_destroy(void) 862 { 863 debugfs_remove_recursive(zram_debugfs_root); 864 } 865 866 static void zram_accessed(struct zram *zram, u32 index) 867 { 868 zram_clear_flag(zram, index, ZRAM_IDLE); 869 zram->table[index].ac_time = ktime_get_boottime(); 870 } 871 872 static ssize_t read_block_state(struct file *file, char __user *buf, 873 size_t count, loff_t *ppos) 874 { 875 char *kbuf; 876 ssize_t index, written = 0; 877 struct zram *zram = file->private_data; 878 unsigned long nr_pages = zram->disksize >> PAGE_SHIFT; 879 struct timespec64 ts; 880 881 kbuf = kvmalloc(count, GFP_KERNEL); 882 if (!kbuf) 883 return -ENOMEM; 884 885 down_read(&zram->init_lock); 886 if (!init_done(zram)) { 887 up_read(&zram->init_lock); 888 kvfree(kbuf); 889 return -EINVAL; 890 } 891 892 for (index = *ppos; index < nr_pages; index++) { 893 int copied; 894 895 zram_slot_lock(zram, index); 896 if (!zram_allocated(zram, index)) 897 goto next; 898 899 ts = ktime_to_timespec64(zram->table[index].ac_time); 900 copied = snprintf(kbuf + written, count, 901 "%12zd %12lld.%06lu %c%c%c%c\n", 902 index, (s64)ts.tv_sec, 903 ts.tv_nsec / NSEC_PER_USEC, 904 zram_test_flag(zram, index, ZRAM_SAME) ? 's' : '.', 905 zram_test_flag(zram, index, ZRAM_WB) ? 'w' : '.', 906 zram_test_flag(zram, index, ZRAM_HUGE) ? 'h' : '.', 907 zram_test_flag(zram, index, ZRAM_IDLE) ? 'i' : '.'); 908 909 if (count < copied) { 910 zram_slot_unlock(zram, index); 911 break; 912 } 913 written += copied; 914 count -= copied; 915 next: 916 zram_slot_unlock(zram, index); 917 *ppos += 1; 918 } 919 920 up_read(&zram->init_lock); 921 if (copy_to_user(buf, kbuf, written)) 922 written = -EFAULT; 923 kvfree(kbuf); 924 925 return written; 926 } 927 928 static const struct file_operations proc_zram_block_state_op = { 929 .open = simple_open, 930 .read = read_block_state, 931 .llseek = default_llseek, 932 }; 933 934 static void zram_debugfs_register(struct zram *zram) 935 { 936 if (!zram_debugfs_root) 937 return; 938 939 zram->debugfs_dir = debugfs_create_dir(zram->disk->disk_name, 940 zram_debugfs_root); 941 debugfs_create_file("block_state", 0400, zram->debugfs_dir, 942 zram, &proc_zram_block_state_op); 943 } 944 945 static void zram_debugfs_unregister(struct zram *zram) 946 { 947 debugfs_remove_recursive(zram->debugfs_dir); 948 } 949 #else 950 static void zram_debugfs_create(void) {}; 951 static void zram_debugfs_destroy(void) {}; 952 static void zram_accessed(struct zram *zram, u32 index) 953 { 954 zram_clear_flag(zram, index, ZRAM_IDLE); 955 }; 956 static void zram_debugfs_register(struct zram *zram) {}; 957 static void zram_debugfs_unregister(struct zram *zram) {}; 958 #endif 959 960 /* 961 * We switched to per-cpu streams and this attr is not needed anymore. 962 * However, we will keep it around for some time, because: 963 * a) we may revert per-cpu streams in the future 964 * b) it's visible to user space and we need to follow our 2 years 965 * retirement rule; but we already have a number of 'soon to be 966 * altered' attrs, so max_comp_streams need to wait for the next 967 * layoff cycle. 968 */ 969 static ssize_t max_comp_streams_show(struct device *dev, 970 struct device_attribute *attr, char *buf) 971 { 972 return scnprintf(buf, PAGE_SIZE, "%d\n", num_online_cpus()); 973 } 974 975 static ssize_t max_comp_streams_store(struct device *dev, 976 struct device_attribute *attr, const char *buf, size_t len) 977 { 978 return len; 979 } 980 981 static ssize_t comp_algorithm_show(struct device *dev, 982 struct device_attribute *attr, char *buf) 983 { 984 size_t sz; 985 struct zram *zram = dev_to_zram(dev); 986 987 down_read(&zram->init_lock); 988 sz = zcomp_available_show(zram->compressor, buf); 989 up_read(&zram->init_lock); 990 991 return sz; 992 } 993 994 static ssize_t comp_algorithm_store(struct device *dev, 995 struct device_attribute *attr, const char *buf, size_t len) 996 { 997 struct zram *zram = dev_to_zram(dev); 998 char compressor[ARRAY_SIZE(zram->compressor)]; 999 size_t sz; 1000 1001 strlcpy(compressor, buf, sizeof(compressor)); 1002 /* ignore trailing newline */ 1003 sz = strlen(compressor); 1004 if (sz > 0 && compressor[sz - 1] == '\n') 1005 compressor[sz - 1] = 0x00; 1006 1007 if (!zcomp_available_algorithm(compressor)) 1008 return -EINVAL; 1009 1010 down_write(&zram->init_lock); 1011 if (init_done(zram)) { 1012 up_write(&zram->init_lock); 1013 pr_info("Can't change algorithm for initialized device\n"); 1014 return -EBUSY; 1015 } 1016 1017 strcpy(zram->compressor, compressor); 1018 up_write(&zram->init_lock); 1019 return len; 1020 } 1021 1022 static ssize_t compact_store(struct device *dev, 1023 struct device_attribute *attr, const char *buf, size_t len) 1024 { 1025 struct zram *zram = dev_to_zram(dev); 1026 1027 down_read(&zram->init_lock); 1028 if (!init_done(zram)) { 1029 up_read(&zram->init_lock); 1030 return -EINVAL; 1031 } 1032 1033 zs_compact(zram->mem_pool); 1034 up_read(&zram->init_lock); 1035 1036 return len; 1037 } 1038 1039 static ssize_t io_stat_show(struct device *dev, 1040 struct device_attribute *attr, char *buf) 1041 { 1042 struct zram *zram = dev_to_zram(dev); 1043 ssize_t ret; 1044 1045 down_read(&zram->init_lock); 1046 ret = scnprintf(buf, PAGE_SIZE, 1047 "%8llu %8llu %8llu %8llu\n", 1048 (u64)atomic64_read(&zram->stats.failed_reads), 1049 (u64)atomic64_read(&zram->stats.failed_writes), 1050 (u64)atomic64_read(&zram->stats.invalid_io), 1051 (u64)atomic64_read(&zram->stats.notify_free)); 1052 up_read(&zram->init_lock); 1053 1054 return ret; 1055 } 1056 1057 static ssize_t mm_stat_show(struct device *dev, 1058 struct device_attribute *attr, char *buf) 1059 { 1060 struct zram *zram = dev_to_zram(dev); 1061 struct zs_pool_stats pool_stats; 1062 u64 orig_size, mem_used = 0; 1063 long max_used; 1064 ssize_t ret; 1065 1066 memset(&pool_stats, 0x00, sizeof(struct zs_pool_stats)); 1067 1068 down_read(&zram->init_lock); 1069 if (init_done(zram)) { 1070 mem_used = zs_get_total_pages(zram->mem_pool); 1071 zs_pool_stats(zram->mem_pool, &pool_stats); 1072 } 1073 1074 orig_size = atomic64_read(&zram->stats.pages_stored); 1075 max_used = atomic_long_read(&zram->stats.max_used_pages); 1076 1077 ret = scnprintf(buf, PAGE_SIZE, 1078 "%8llu %8llu %8llu %8lu %8ld %8llu %8lu %8llu %8llu\n", 1079 orig_size << PAGE_SHIFT, 1080 (u64)atomic64_read(&zram->stats.compr_data_size), 1081 mem_used << PAGE_SHIFT, 1082 zram->limit_pages << PAGE_SHIFT, 1083 max_used << PAGE_SHIFT, 1084 (u64)atomic64_read(&zram->stats.same_pages), 1085 pool_stats.pages_compacted, 1086 (u64)atomic64_read(&zram->stats.huge_pages), 1087 (u64)atomic64_read(&zram->stats.huge_pages_since)); 1088 up_read(&zram->init_lock); 1089 1090 return ret; 1091 } 1092 1093 #ifdef CONFIG_ZRAM_WRITEBACK 1094 #define FOUR_K(x) ((x) * (1 << (PAGE_SHIFT - 12))) 1095 static ssize_t bd_stat_show(struct device *dev, 1096 struct device_attribute *attr, char *buf) 1097 { 1098 struct zram *zram = dev_to_zram(dev); 1099 ssize_t ret; 1100 1101 down_read(&zram->init_lock); 1102 ret = scnprintf(buf, PAGE_SIZE, 1103 "%8llu %8llu %8llu\n", 1104 FOUR_K((u64)atomic64_read(&zram->stats.bd_count)), 1105 FOUR_K((u64)atomic64_read(&zram->stats.bd_reads)), 1106 FOUR_K((u64)atomic64_read(&zram->stats.bd_writes))); 1107 up_read(&zram->init_lock); 1108 1109 return ret; 1110 } 1111 #endif 1112 1113 static ssize_t debug_stat_show(struct device *dev, 1114 struct device_attribute *attr, char *buf) 1115 { 1116 int version = 1; 1117 struct zram *zram = dev_to_zram(dev); 1118 ssize_t ret; 1119 1120 down_read(&zram->init_lock); 1121 ret = scnprintf(buf, PAGE_SIZE, 1122 "version: %d\n%8llu %8llu\n", 1123 version, 1124 (u64)atomic64_read(&zram->stats.writestall), 1125 (u64)atomic64_read(&zram->stats.miss_free)); 1126 up_read(&zram->init_lock); 1127 1128 return ret; 1129 } 1130 1131 static DEVICE_ATTR_RO(io_stat); 1132 static DEVICE_ATTR_RO(mm_stat); 1133 #ifdef CONFIG_ZRAM_WRITEBACK 1134 static DEVICE_ATTR_RO(bd_stat); 1135 #endif 1136 static DEVICE_ATTR_RO(debug_stat); 1137 1138 static void zram_meta_free(struct zram *zram, u64 disksize) 1139 { 1140 size_t num_pages = disksize >> PAGE_SHIFT; 1141 size_t index; 1142 1143 /* Free all pages that are still in this zram device */ 1144 for (index = 0; index < num_pages; index++) 1145 zram_free_page(zram, index); 1146 1147 zs_destroy_pool(zram->mem_pool); 1148 vfree(zram->table); 1149 } 1150 1151 static bool zram_meta_alloc(struct zram *zram, u64 disksize) 1152 { 1153 size_t num_pages; 1154 1155 num_pages = disksize >> PAGE_SHIFT; 1156 zram->table = vzalloc(array_size(num_pages, sizeof(*zram->table))); 1157 if (!zram->table) 1158 return false; 1159 1160 zram->mem_pool = zs_create_pool(zram->disk->disk_name); 1161 if (!zram->mem_pool) { 1162 vfree(zram->table); 1163 return false; 1164 } 1165 1166 if (!huge_class_size) 1167 huge_class_size = zs_huge_class_size(zram->mem_pool); 1168 return true; 1169 } 1170 1171 /* 1172 * To protect concurrent access to the same index entry, 1173 * caller should hold this table index entry's bit_spinlock to 1174 * indicate this index entry is accessing. 1175 */ 1176 static void zram_free_page(struct zram *zram, size_t index) 1177 { 1178 unsigned long handle; 1179 1180 #ifdef CONFIG_ZRAM_MEMORY_TRACKING 1181 zram->table[index].ac_time = 0; 1182 #endif 1183 if (zram_test_flag(zram, index, ZRAM_IDLE)) 1184 zram_clear_flag(zram, index, ZRAM_IDLE); 1185 1186 if (zram_test_flag(zram, index, ZRAM_HUGE)) { 1187 zram_clear_flag(zram, index, ZRAM_HUGE); 1188 atomic64_dec(&zram->stats.huge_pages); 1189 } 1190 1191 if (zram_test_flag(zram, index, ZRAM_WB)) { 1192 zram_clear_flag(zram, index, ZRAM_WB); 1193 free_block_bdev(zram, zram_get_element(zram, index)); 1194 goto out; 1195 } 1196 1197 /* 1198 * No memory is allocated for same element filled pages. 1199 * Simply clear same page flag. 1200 */ 1201 if (zram_test_flag(zram, index, ZRAM_SAME)) { 1202 zram_clear_flag(zram, index, ZRAM_SAME); 1203 atomic64_dec(&zram->stats.same_pages); 1204 goto out; 1205 } 1206 1207 handle = zram_get_handle(zram, index); 1208 if (!handle) 1209 return; 1210 1211 zs_free(zram->mem_pool, handle); 1212 1213 atomic64_sub(zram_get_obj_size(zram, index), 1214 &zram->stats.compr_data_size); 1215 out: 1216 atomic64_dec(&zram->stats.pages_stored); 1217 zram_set_handle(zram, index, 0); 1218 zram_set_obj_size(zram, index, 0); 1219 WARN_ON_ONCE(zram->table[index].flags & 1220 ~(1UL << ZRAM_LOCK | 1UL << ZRAM_UNDER_WB)); 1221 } 1222 1223 static int __zram_bvec_read(struct zram *zram, struct page *page, u32 index, 1224 struct bio *bio, bool partial_io) 1225 { 1226 struct zcomp_strm *zstrm; 1227 unsigned long handle; 1228 unsigned int size; 1229 void *src, *dst; 1230 int ret; 1231 1232 zram_slot_lock(zram, index); 1233 if (zram_test_flag(zram, index, ZRAM_WB)) { 1234 struct bio_vec bvec; 1235 1236 zram_slot_unlock(zram, index); 1237 1238 bvec.bv_page = page; 1239 bvec.bv_len = PAGE_SIZE; 1240 bvec.bv_offset = 0; 1241 return read_from_bdev(zram, &bvec, 1242 zram_get_element(zram, index), 1243 bio, partial_io); 1244 } 1245 1246 handle = zram_get_handle(zram, index); 1247 if (!handle || zram_test_flag(zram, index, ZRAM_SAME)) { 1248 unsigned long value; 1249 void *mem; 1250 1251 value = handle ? zram_get_element(zram, index) : 0; 1252 mem = kmap_atomic(page); 1253 zram_fill_page(mem, PAGE_SIZE, value); 1254 kunmap_atomic(mem); 1255 zram_slot_unlock(zram, index); 1256 return 0; 1257 } 1258 1259 size = zram_get_obj_size(zram, index); 1260 1261 if (size != PAGE_SIZE) 1262 zstrm = zcomp_stream_get(zram->comp); 1263 1264 src = zs_map_object(zram->mem_pool, handle, ZS_MM_RO); 1265 if (size == PAGE_SIZE) { 1266 dst = kmap_atomic(page); 1267 memcpy(dst, src, PAGE_SIZE); 1268 kunmap_atomic(dst); 1269 ret = 0; 1270 } else { 1271 dst = kmap_atomic(page); 1272 ret = zcomp_decompress(zstrm, src, size, dst); 1273 kunmap_atomic(dst); 1274 zcomp_stream_put(zram->comp); 1275 } 1276 zs_unmap_object(zram->mem_pool, handle); 1277 zram_slot_unlock(zram, index); 1278 1279 /* Should NEVER happen. Return bio error if it does. */ 1280 if (WARN_ON(ret)) 1281 pr_err("Decompression failed! err=%d, page=%u\n", ret, index); 1282 1283 return ret; 1284 } 1285 1286 static int zram_bvec_read(struct zram *zram, struct bio_vec *bvec, 1287 u32 index, int offset, struct bio *bio) 1288 { 1289 int ret; 1290 struct page *page; 1291 1292 page = bvec->bv_page; 1293 if (is_partial_io(bvec)) { 1294 /* Use a temporary buffer to decompress the page */ 1295 page = alloc_page(GFP_NOIO|__GFP_HIGHMEM); 1296 if (!page) 1297 return -ENOMEM; 1298 } 1299 1300 ret = __zram_bvec_read(zram, page, index, bio, is_partial_io(bvec)); 1301 if (unlikely(ret)) 1302 goto out; 1303 1304 if (is_partial_io(bvec)) { 1305 void *dst = kmap_atomic(bvec->bv_page); 1306 void *src = kmap_atomic(page); 1307 1308 memcpy(dst + bvec->bv_offset, src + offset, bvec->bv_len); 1309 kunmap_atomic(src); 1310 kunmap_atomic(dst); 1311 } 1312 out: 1313 if (is_partial_io(bvec)) 1314 __free_page(page); 1315 1316 return ret; 1317 } 1318 1319 static int __zram_bvec_write(struct zram *zram, struct bio_vec *bvec, 1320 u32 index, struct bio *bio) 1321 { 1322 int ret = 0; 1323 unsigned long alloced_pages; 1324 unsigned long handle = 0; 1325 unsigned int comp_len = 0; 1326 void *src, *dst, *mem; 1327 struct zcomp_strm *zstrm; 1328 struct page *page = bvec->bv_page; 1329 unsigned long element = 0; 1330 enum zram_pageflags flags = 0; 1331 1332 mem = kmap_atomic(page); 1333 if (page_same_filled(mem, &element)) { 1334 kunmap_atomic(mem); 1335 /* Free memory associated with this sector now. */ 1336 flags = ZRAM_SAME; 1337 atomic64_inc(&zram->stats.same_pages); 1338 goto out; 1339 } 1340 kunmap_atomic(mem); 1341 1342 compress_again: 1343 zstrm = zcomp_stream_get(zram->comp); 1344 src = kmap_atomic(page); 1345 ret = zcomp_compress(zstrm, src, &comp_len); 1346 kunmap_atomic(src); 1347 1348 if (unlikely(ret)) { 1349 zcomp_stream_put(zram->comp); 1350 pr_err("Compression failed! err=%d\n", ret); 1351 zs_free(zram->mem_pool, handle); 1352 return ret; 1353 } 1354 1355 if (comp_len >= huge_class_size) 1356 comp_len = PAGE_SIZE; 1357 /* 1358 * handle allocation has 2 paths: 1359 * a) fast path is executed with preemption disabled (for 1360 * per-cpu streams) and has __GFP_DIRECT_RECLAIM bit clear, 1361 * since we can't sleep; 1362 * b) slow path enables preemption and attempts to allocate 1363 * the page with __GFP_DIRECT_RECLAIM bit set. we have to 1364 * put per-cpu compression stream and, thus, to re-do 1365 * the compression once handle is allocated. 1366 * 1367 * if we have a 'non-null' handle here then we are coming 1368 * from the slow path and handle has already been allocated. 1369 */ 1370 if (!handle) 1371 handle = zs_malloc(zram->mem_pool, comp_len, 1372 __GFP_KSWAPD_RECLAIM | 1373 __GFP_NOWARN | 1374 __GFP_HIGHMEM | 1375 __GFP_MOVABLE); 1376 if (!handle) { 1377 zcomp_stream_put(zram->comp); 1378 atomic64_inc(&zram->stats.writestall); 1379 handle = zs_malloc(zram->mem_pool, comp_len, 1380 GFP_NOIO | __GFP_HIGHMEM | 1381 __GFP_MOVABLE); 1382 if (handle) 1383 goto compress_again; 1384 return -ENOMEM; 1385 } 1386 1387 alloced_pages = zs_get_total_pages(zram->mem_pool); 1388 update_used_max(zram, alloced_pages); 1389 1390 if (zram->limit_pages && alloced_pages > zram->limit_pages) { 1391 zcomp_stream_put(zram->comp); 1392 zs_free(zram->mem_pool, handle); 1393 return -ENOMEM; 1394 } 1395 1396 dst = zs_map_object(zram->mem_pool, handle, ZS_MM_WO); 1397 1398 src = zstrm->buffer; 1399 if (comp_len == PAGE_SIZE) 1400 src = kmap_atomic(page); 1401 memcpy(dst, src, comp_len); 1402 if (comp_len == PAGE_SIZE) 1403 kunmap_atomic(src); 1404 1405 zcomp_stream_put(zram->comp); 1406 zs_unmap_object(zram->mem_pool, handle); 1407 atomic64_add(comp_len, &zram->stats.compr_data_size); 1408 out: 1409 /* 1410 * Free memory associated with this sector 1411 * before overwriting unused sectors. 1412 */ 1413 zram_slot_lock(zram, index); 1414 zram_free_page(zram, index); 1415 1416 if (comp_len == PAGE_SIZE) { 1417 zram_set_flag(zram, index, ZRAM_HUGE); 1418 atomic64_inc(&zram->stats.huge_pages); 1419 atomic64_inc(&zram->stats.huge_pages_since); 1420 } 1421 1422 if (flags) { 1423 zram_set_flag(zram, index, flags); 1424 zram_set_element(zram, index, element); 1425 } else { 1426 zram_set_handle(zram, index, handle); 1427 zram_set_obj_size(zram, index, comp_len); 1428 } 1429 zram_slot_unlock(zram, index); 1430 1431 /* Update stats */ 1432 atomic64_inc(&zram->stats.pages_stored); 1433 return ret; 1434 } 1435 1436 static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, 1437 u32 index, int offset, struct bio *bio) 1438 { 1439 int ret; 1440 struct page *page = NULL; 1441 void *src; 1442 struct bio_vec vec; 1443 1444 vec = *bvec; 1445 if (is_partial_io(bvec)) { 1446 void *dst; 1447 /* 1448 * This is a partial IO. We need to read the full page 1449 * before to write the changes. 1450 */ 1451 page = alloc_page(GFP_NOIO|__GFP_HIGHMEM); 1452 if (!page) 1453 return -ENOMEM; 1454 1455 ret = __zram_bvec_read(zram, page, index, bio, true); 1456 if (ret) 1457 goto out; 1458 1459 src = kmap_atomic(bvec->bv_page); 1460 dst = kmap_atomic(page); 1461 memcpy(dst + offset, src + bvec->bv_offset, bvec->bv_len); 1462 kunmap_atomic(dst); 1463 kunmap_atomic(src); 1464 1465 vec.bv_page = page; 1466 vec.bv_len = PAGE_SIZE; 1467 vec.bv_offset = 0; 1468 } 1469 1470 ret = __zram_bvec_write(zram, &vec, index, bio); 1471 out: 1472 if (is_partial_io(bvec)) 1473 __free_page(page); 1474 return ret; 1475 } 1476 1477 /* 1478 * zram_bio_discard - handler on discard request 1479 * @index: physical block index in PAGE_SIZE units 1480 * @offset: byte offset within physical block 1481 */ 1482 static void zram_bio_discard(struct zram *zram, u32 index, 1483 int offset, struct bio *bio) 1484 { 1485 size_t n = bio->bi_iter.bi_size; 1486 1487 /* 1488 * zram manages data in physical block size units. Because logical block 1489 * size isn't identical with physical block size on some arch, we 1490 * could get a discard request pointing to a specific offset within a 1491 * certain physical block. Although we can handle this request by 1492 * reading that physiclal block and decompressing and partially zeroing 1493 * and re-compressing and then re-storing it, this isn't reasonable 1494 * because our intent with a discard request is to save memory. So 1495 * skipping this logical block is appropriate here. 1496 */ 1497 if (offset) { 1498 if (n <= (PAGE_SIZE - offset)) 1499 return; 1500 1501 n -= (PAGE_SIZE - offset); 1502 index++; 1503 } 1504 1505 while (n >= PAGE_SIZE) { 1506 zram_slot_lock(zram, index); 1507 zram_free_page(zram, index); 1508 zram_slot_unlock(zram, index); 1509 atomic64_inc(&zram->stats.notify_free); 1510 index++; 1511 n -= PAGE_SIZE; 1512 } 1513 } 1514 1515 /* 1516 * Returns errno if it has some problem. Otherwise return 0 or 1. 1517 * Returns 0 if IO request was done synchronously 1518 * Returns 1 if IO request was successfully submitted. 1519 */ 1520 static int zram_bvec_rw(struct zram *zram, struct bio_vec *bvec, u32 index, 1521 int offset, unsigned int op, struct bio *bio) 1522 { 1523 int ret; 1524 1525 if (!op_is_write(op)) { 1526 atomic64_inc(&zram->stats.num_reads); 1527 ret = zram_bvec_read(zram, bvec, index, offset, bio); 1528 flush_dcache_page(bvec->bv_page); 1529 } else { 1530 atomic64_inc(&zram->stats.num_writes); 1531 ret = zram_bvec_write(zram, bvec, index, offset, bio); 1532 } 1533 1534 zram_slot_lock(zram, index); 1535 zram_accessed(zram, index); 1536 zram_slot_unlock(zram, index); 1537 1538 if (unlikely(ret < 0)) { 1539 if (!op_is_write(op)) 1540 atomic64_inc(&zram->stats.failed_reads); 1541 else 1542 atomic64_inc(&zram->stats.failed_writes); 1543 } 1544 1545 return ret; 1546 } 1547 1548 static void __zram_make_request(struct zram *zram, struct bio *bio) 1549 { 1550 int offset; 1551 u32 index; 1552 struct bio_vec bvec; 1553 struct bvec_iter iter; 1554 unsigned long start_time; 1555 1556 index = bio->bi_iter.bi_sector >> SECTORS_PER_PAGE_SHIFT; 1557 offset = (bio->bi_iter.bi_sector & 1558 (SECTORS_PER_PAGE - 1)) << SECTOR_SHIFT; 1559 1560 switch (bio_op(bio)) { 1561 case REQ_OP_DISCARD: 1562 case REQ_OP_WRITE_ZEROES: 1563 zram_bio_discard(zram, index, offset, bio); 1564 bio_endio(bio); 1565 return; 1566 default: 1567 break; 1568 } 1569 1570 start_time = bio_start_io_acct(bio); 1571 bio_for_each_segment(bvec, bio, iter) { 1572 struct bio_vec bv = bvec; 1573 unsigned int unwritten = bvec.bv_len; 1574 1575 do { 1576 bv.bv_len = min_t(unsigned int, PAGE_SIZE - offset, 1577 unwritten); 1578 if (zram_bvec_rw(zram, &bv, index, offset, 1579 bio_op(bio), bio) < 0) { 1580 bio->bi_status = BLK_STS_IOERR; 1581 break; 1582 } 1583 1584 bv.bv_offset += bv.bv_len; 1585 unwritten -= bv.bv_len; 1586 1587 update_position(&index, &offset, &bv); 1588 } while (unwritten); 1589 } 1590 bio_end_io_acct(bio, start_time); 1591 bio_endio(bio); 1592 } 1593 1594 /* 1595 * Handler function for all zram I/O requests. 1596 */ 1597 static blk_qc_t zram_submit_bio(struct bio *bio) 1598 { 1599 struct zram *zram = bio->bi_disk->private_data; 1600 1601 if (!valid_io_request(zram, bio->bi_iter.bi_sector, 1602 bio->bi_iter.bi_size)) { 1603 atomic64_inc(&zram->stats.invalid_io); 1604 goto error; 1605 } 1606 1607 __zram_make_request(zram, bio); 1608 return BLK_QC_T_NONE; 1609 1610 error: 1611 bio_io_error(bio); 1612 return BLK_QC_T_NONE; 1613 } 1614 1615 static void zram_slot_free_notify(struct block_device *bdev, 1616 unsigned long index) 1617 { 1618 struct zram *zram; 1619 1620 zram = bdev->bd_disk->private_data; 1621 1622 atomic64_inc(&zram->stats.notify_free); 1623 if (!zram_slot_trylock(zram, index)) { 1624 atomic64_inc(&zram->stats.miss_free); 1625 return; 1626 } 1627 1628 zram_free_page(zram, index); 1629 zram_slot_unlock(zram, index); 1630 } 1631 1632 static int zram_rw_page(struct block_device *bdev, sector_t sector, 1633 struct page *page, unsigned int op) 1634 { 1635 int offset, ret; 1636 u32 index; 1637 struct zram *zram; 1638 struct bio_vec bv; 1639 unsigned long start_time; 1640 1641 if (PageTransHuge(page)) 1642 return -ENOTSUPP; 1643 zram = bdev->bd_disk->private_data; 1644 1645 if (!valid_io_request(zram, sector, PAGE_SIZE)) { 1646 atomic64_inc(&zram->stats.invalid_io); 1647 ret = -EINVAL; 1648 goto out; 1649 } 1650 1651 index = sector >> SECTORS_PER_PAGE_SHIFT; 1652 offset = (sector & (SECTORS_PER_PAGE - 1)) << SECTOR_SHIFT; 1653 1654 bv.bv_page = page; 1655 bv.bv_len = PAGE_SIZE; 1656 bv.bv_offset = 0; 1657 1658 start_time = disk_start_io_acct(bdev->bd_disk, SECTORS_PER_PAGE, op); 1659 ret = zram_bvec_rw(zram, &bv, index, offset, op, NULL); 1660 disk_end_io_acct(bdev->bd_disk, op, start_time); 1661 out: 1662 /* 1663 * If I/O fails, just return error(ie, non-zero) without 1664 * calling page_endio. 1665 * It causes resubmit the I/O with bio request by upper functions 1666 * of rw_page(e.g., swap_readpage, __swap_writepage) and 1667 * bio->bi_end_io does things to handle the error 1668 * (e.g., SetPageError, set_page_dirty and extra works). 1669 */ 1670 if (unlikely(ret < 0)) 1671 return ret; 1672 1673 switch (ret) { 1674 case 0: 1675 page_endio(page, op_is_write(op), 0); 1676 break; 1677 case 1: 1678 ret = 0; 1679 break; 1680 default: 1681 WARN_ON(1); 1682 } 1683 return ret; 1684 } 1685 1686 static void zram_reset_device(struct zram *zram) 1687 { 1688 struct zcomp *comp; 1689 u64 disksize; 1690 1691 down_write(&zram->init_lock); 1692 1693 zram->limit_pages = 0; 1694 1695 if (!init_done(zram)) { 1696 up_write(&zram->init_lock); 1697 return; 1698 } 1699 1700 comp = zram->comp; 1701 disksize = zram->disksize; 1702 zram->disksize = 0; 1703 1704 set_capacity_and_notify(zram->disk, 0); 1705 part_stat_set_all(zram->disk->part0, 0); 1706 1707 up_write(&zram->init_lock); 1708 /* I/O operation under all of CPU are done so let's free */ 1709 zram_meta_free(zram, disksize); 1710 memset(&zram->stats, 0, sizeof(zram->stats)); 1711 zcomp_destroy(comp); 1712 reset_bdev(zram); 1713 } 1714 1715 static ssize_t disksize_store(struct device *dev, 1716 struct device_attribute *attr, const char *buf, size_t len) 1717 { 1718 u64 disksize; 1719 struct zcomp *comp; 1720 struct zram *zram = dev_to_zram(dev); 1721 int err; 1722 1723 disksize = memparse(buf, NULL); 1724 if (!disksize) 1725 return -EINVAL; 1726 1727 down_write(&zram->init_lock); 1728 if (init_done(zram)) { 1729 pr_info("Cannot change disksize for initialized device\n"); 1730 err = -EBUSY; 1731 goto out_unlock; 1732 } 1733 1734 disksize = PAGE_ALIGN(disksize); 1735 if (!zram_meta_alloc(zram, disksize)) { 1736 err = -ENOMEM; 1737 goto out_unlock; 1738 } 1739 1740 comp = zcomp_create(zram->compressor); 1741 if (IS_ERR(comp)) { 1742 pr_err("Cannot initialise %s compressing backend\n", 1743 zram->compressor); 1744 err = PTR_ERR(comp); 1745 goto out_free_meta; 1746 } 1747 1748 zram->comp = comp; 1749 zram->disksize = disksize; 1750 set_capacity_and_notify(zram->disk, zram->disksize >> SECTOR_SHIFT); 1751 up_write(&zram->init_lock); 1752 1753 return len; 1754 1755 out_free_meta: 1756 zram_meta_free(zram, disksize); 1757 out_unlock: 1758 up_write(&zram->init_lock); 1759 return err; 1760 } 1761 1762 static ssize_t reset_store(struct device *dev, 1763 struct device_attribute *attr, const char *buf, size_t len) 1764 { 1765 int ret; 1766 unsigned short do_reset; 1767 struct zram *zram; 1768 struct block_device *bdev; 1769 1770 ret = kstrtou16(buf, 10, &do_reset); 1771 if (ret) 1772 return ret; 1773 1774 if (!do_reset) 1775 return -EINVAL; 1776 1777 zram = dev_to_zram(dev); 1778 bdev = zram->disk->part0; 1779 1780 mutex_lock(&bdev->bd_mutex); 1781 /* Do not reset an active device or claimed device */ 1782 if (bdev->bd_openers || zram->claim) { 1783 mutex_unlock(&bdev->bd_mutex); 1784 return -EBUSY; 1785 } 1786 1787 /* From now on, anyone can't open /dev/zram[0-9] */ 1788 zram->claim = true; 1789 mutex_unlock(&bdev->bd_mutex); 1790 1791 /* Make sure all the pending I/O are finished */ 1792 fsync_bdev(bdev); 1793 zram_reset_device(zram); 1794 1795 mutex_lock(&bdev->bd_mutex); 1796 zram->claim = false; 1797 mutex_unlock(&bdev->bd_mutex); 1798 1799 return len; 1800 } 1801 1802 static int zram_open(struct block_device *bdev, fmode_t mode) 1803 { 1804 int ret = 0; 1805 struct zram *zram; 1806 1807 WARN_ON(!mutex_is_locked(&bdev->bd_mutex)); 1808 1809 zram = bdev->bd_disk->private_data; 1810 /* zram was claimed to reset so open request fails */ 1811 if (zram->claim) 1812 ret = -EBUSY; 1813 1814 return ret; 1815 } 1816 1817 static const struct block_device_operations zram_devops = { 1818 .open = zram_open, 1819 .submit_bio = zram_submit_bio, 1820 .swap_slot_free_notify = zram_slot_free_notify, 1821 .rw_page = zram_rw_page, 1822 .owner = THIS_MODULE 1823 }; 1824 1825 static const struct block_device_operations zram_wb_devops = { 1826 .open = zram_open, 1827 .submit_bio = zram_submit_bio, 1828 .swap_slot_free_notify = zram_slot_free_notify, 1829 .owner = THIS_MODULE 1830 }; 1831 1832 static DEVICE_ATTR_WO(compact); 1833 static DEVICE_ATTR_RW(disksize); 1834 static DEVICE_ATTR_RO(initstate); 1835 static DEVICE_ATTR_WO(reset); 1836 static DEVICE_ATTR_WO(mem_limit); 1837 static DEVICE_ATTR_WO(mem_used_max); 1838 static DEVICE_ATTR_WO(idle); 1839 static DEVICE_ATTR_RW(max_comp_streams); 1840 static DEVICE_ATTR_RW(comp_algorithm); 1841 #ifdef CONFIG_ZRAM_WRITEBACK 1842 static DEVICE_ATTR_RW(backing_dev); 1843 static DEVICE_ATTR_WO(writeback); 1844 static DEVICE_ATTR_RW(writeback_limit); 1845 static DEVICE_ATTR_RW(writeback_limit_enable); 1846 #endif 1847 1848 static struct attribute *zram_disk_attrs[] = { 1849 &dev_attr_disksize.attr, 1850 &dev_attr_initstate.attr, 1851 &dev_attr_reset.attr, 1852 &dev_attr_compact.attr, 1853 &dev_attr_mem_limit.attr, 1854 &dev_attr_mem_used_max.attr, 1855 &dev_attr_idle.attr, 1856 &dev_attr_max_comp_streams.attr, 1857 &dev_attr_comp_algorithm.attr, 1858 #ifdef CONFIG_ZRAM_WRITEBACK 1859 &dev_attr_backing_dev.attr, 1860 &dev_attr_writeback.attr, 1861 &dev_attr_writeback_limit.attr, 1862 &dev_attr_writeback_limit_enable.attr, 1863 #endif 1864 &dev_attr_io_stat.attr, 1865 &dev_attr_mm_stat.attr, 1866 #ifdef CONFIG_ZRAM_WRITEBACK 1867 &dev_attr_bd_stat.attr, 1868 #endif 1869 &dev_attr_debug_stat.attr, 1870 NULL, 1871 }; 1872 1873 static const struct attribute_group zram_disk_attr_group = { 1874 .attrs = zram_disk_attrs, 1875 }; 1876 1877 static const struct attribute_group *zram_disk_attr_groups[] = { 1878 &zram_disk_attr_group, 1879 NULL, 1880 }; 1881 1882 /* 1883 * Allocate and initialize new zram device. the function returns 1884 * '>= 0' device_id upon success, and negative value otherwise. 1885 */ 1886 static int zram_add(void) 1887 { 1888 struct zram *zram; 1889 struct request_queue *queue; 1890 int ret, device_id; 1891 1892 zram = kzalloc(sizeof(struct zram), GFP_KERNEL); 1893 if (!zram) 1894 return -ENOMEM; 1895 1896 ret = idr_alloc(&zram_index_idr, zram, 0, 0, GFP_KERNEL); 1897 if (ret < 0) 1898 goto out_free_dev; 1899 device_id = ret; 1900 1901 init_rwsem(&zram->init_lock); 1902 #ifdef CONFIG_ZRAM_WRITEBACK 1903 spin_lock_init(&zram->wb_limit_lock); 1904 #endif 1905 queue = blk_alloc_queue(NUMA_NO_NODE); 1906 if (!queue) { 1907 pr_err("Error allocating disk queue for device %d\n", 1908 device_id); 1909 ret = -ENOMEM; 1910 goto out_free_idr; 1911 } 1912 1913 /* gendisk structure */ 1914 zram->disk = alloc_disk(1); 1915 if (!zram->disk) { 1916 pr_err("Error allocating disk structure for device %d\n", 1917 device_id); 1918 ret = -ENOMEM; 1919 goto out_free_queue; 1920 } 1921 1922 zram->disk->major = zram_major; 1923 zram->disk->first_minor = device_id; 1924 zram->disk->fops = &zram_devops; 1925 zram->disk->queue = queue; 1926 zram->disk->private_data = zram; 1927 snprintf(zram->disk->disk_name, 16, "zram%d", device_id); 1928 1929 /* Actual capacity set using syfs (/sys/block/zram<id>/disksize */ 1930 set_capacity(zram->disk, 0); 1931 /* zram devices sort of resembles non-rotational disks */ 1932 blk_queue_flag_set(QUEUE_FLAG_NONROT, zram->disk->queue); 1933 blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, zram->disk->queue); 1934 1935 /* 1936 * To ensure that we always get PAGE_SIZE aligned 1937 * and n*PAGE_SIZED sized I/O requests. 1938 */ 1939 blk_queue_physical_block_size(zram->disk->queue, PAGE_SIZE); 1940 blk_queue_logical_block_size(zram->disk->queue, 1941 ZRAM_LOGICAL_BLOCK_SIZE); 1942 blk_queue_io_min(zram->disk->queue, PAGE_SIZE); 1943 blk_queue_io_opt(zram->disk->queue, PAGE_SIZE); 1944 zram->disk->queue->limits.discard_granularity = PAGE_SIZE; 1945 blk_queue_max_discard_sectors(zram->disk->queue, UINT_MAX); 1946 blk_queue_flag_set(QUEUE_FLAG_DISCARD, zram->disk->queue); 1947 1948 /* 1949 * zram_bio_discard() will clear all logical blocks if logical block 1950 * size is identical with physical block size(PAGE_SIZE). But if it is 1951 * different, we will skip discarding some parts of logical blocks in 1952 * the part of the request range which isn't aligned to physical block 1953 * size. So we can't ensure that all discarded logical blocks are 1954 * zeroed. 1955 */ 1956 if (ZRAM_LOGICAL_BLOCK_SIZE == PAGE_SIZE) 1957 blk_queue_max_write_zeroes_sectors(zram->disk->queue, UINT_MAX); 1958 1959 blk_queue_flag_set(QUEUE_FLAG_STABLE_WRITES, zram->disk->queue); 1960 device_add_disk(NULL, zram->disk, zram_disk_attr_groups); 1961 1962 strlcpy(zram->compressor, default_compressor, sizeof(zram->compressor)); 1963 1964 zram_debugfs_register(zram); 1965 pr_info("Added device: %s\n", zram->disk->disk_name); 1966 return device_id; 1967 1968 out_free_queue: 1969 blk_cleanup_queue(queue); 1970 out_free_idr: 1971 idr_remove(&zram_index_idr, device_id); 1972 out_free_dev: 1973 kfree(zram); 1974 return ret; 1975 } 1976 1977 static int zram_remove(struct zram *zram) 1978 { 1979 struct block_device *bdev = zram->disk->part0; 1980 1981 mutex_lock(&bdev->bd_mutex); 1982 if (bdev->bd_openers || zram->claim) { 1983 mutex_unlock(&bdev->bd_mutex); 1984 return -EBUSY; 1985 } 1986 1987 zram->claim = true; 1988 mutex_unlock(&bdev->bd_mutex); 1989 1990 zram_debugfs_unregister(zram); 1991 1992 /* Make sure all the pending I/O are finished */ 1993 fsync_bdev(bdev); 1994 zram_reset_device(zram); 1995 1996 pr_info("Removed device: %s\n", zram->disk->disk_name); 1997 1998 del_gendisk(zram->disk); 1999 blk_cleanup_queue(zram->disk->queue); 2000 put_disk(zram->disk); 2001 kfree(zram); 2002 return 0; 2003 } 2004 2005 /* zram-control sysfs attributes */ 2006 2007 /* 2008 * NOTE: hot_add attribute is not the usual read-only sysfs attribute. In a 2009 * sense that reading from this file does alter the state of your system -- it 2010 * creates a new un-initialized zram device and returns back this device's 2011 * device_id (or an error code if it fails to create a new device). 2012 */ 2013 static ssize_t hot_add_show(struct class *class, 2014 struct class_attribute *attr, 2015 char *buf) 2016 { 2017 int ret; 2018 2019 mutex_lock(&zram_index_mutex); 2020 ret = zram_add(); 2021 mutex_unlock(&zram_index_mutex); 2022 2023 if (ret < 0) 2024 return ret; 2025 return scnprintf(buf, PAGE_SIZE, "%d\n", ret); 2026 } 2027 static struct class_attribute class_attr_hot_add = 2028 __ATTR(hot_add, 0400, hot_add_show, NULL); 2029 2030 static ssize_t hot_remove_store(struct class *class, 2031 struct class_attribute *attr, 2032 const char *buf, 2033 size_t count) 2034 { 2035 struct zram *zram; 2036 int ret, dev_id; 2037 2038 /* dev_id is gendisk->first_minor, which is `int' */ 2039 ret = kstrtoint(buf, 10, &dev_id); 2040 if (ret) 2041 return ret; 2042 if (dev_id < 0) 2043 return -EINVAL; 2044 2045 mutex_lock(&zram_index_mutex); 2046 2047 zram = idr_find(&zram_index_idr, dev_id); 2048 if (zram) { 2049 ret = zram_remove(zram); 2050 if (!ret) 2051 idr_remove(&zram_index_idr, dev_id); 2052 } else { 2053 ret = -ENODEV; 2054 } 2055 2056 mutex_unlock(&zram_index_mutex); 2057 return ret ? ret : count; 2058 } 2059 static CLASS_ATTR_WO(hot_remove); 2060 2061 static struct attribute *zram_control_class_attrs[] = { 2062 &class_attr_hot_add.attr, 2063 &class_attr_hot_remove.attr, 2064 NULL, 2065 }; 2066 ATTRIBUTE_GROUPS(zram_control_class); 2067 2068 static struct class zram_control_class = { 2069 .name = "zram-control", 2070 .owner = THIS_MODULE, 2071 .class_groups = zram_control_class_groups, 2072 }; 2073 2074 static int zram_remove_cb(int id, void *ptr, void *data) 2075 { 2076 zram_remove(ptr); 2077 return 0; 2078 } 2079 2080 static void destroy_devices(void) 2081 { 2082 class_unregister(&zram_control_class); 2083 idr_for_each(&zram_index_idr, &zram_remove_cb, NULL); 2084 zram_debugfs_destroy(); 2085 idr_destroy(&zram_index_idr); 2086 unregister_blkdev(zram_major, "zram"); 2087 cpuhp_remove_multi_state(CPUHP_ZCOMP_PREPARE); 2088 } 2089 2090 static int __init zram_init(void) 2091 { 2092 int ret; 2093 2094 ret = cpuhp_setup_state_multi(CPUHP_ZCOMP_PREPARE, "block/zram:prepare", 2095 zcomp_cpu_up_prepare, zcomp_cpu_dead); 2096 if (ret < 0) 2097 return ret; 2098 2099 ret = class_register(&zram_control_class); 2100 if (ret) { 2101 pr_err("Unable to register zram-control class\n"); 2102 cpuhp_remove_multi_state(CPUHP_ZCOMP_PREPARE); 2103 return ret; 2104 } 2105 2106 zram_debugfs_create(); 2107 zram_major = register_blkdev(0, "zram"); 2108 if (zram_major <= 0) { 2109 pr_err("Unable to get major number\n"); 2110 class_unregister(&zram_control_class); 2111 cpuhp_remove_multi_state(CPUHP_ZCOMP_PREPARE); 2112 return -EBUSY; 2113 } 2114 2115 while (num_devices != 0) { 2116 mutex_lock(&zram_index_mutex); 2117 ret = zram_add(); 2118 mutex_unlock(&zram_index_mutex); 2119 if (ret < 0) 2120 goto out_error; 2121 num_devices--; 2122 } 2123 2124 return 0; 2125 2126 out_error: 2127 destroy_devices(); 2128 return ret; 2129 } 2130 2131 static void __exit zram_exit(void) 2132 { 2133 destroy_devices(); 2134 } 2135 2136 module_init(zram_init); 2137 module_exit(zram_exit); 2138 2139 module_param(num_devices, uint, 0); 2140 MODULE_PARM_DESC(num_devices, "Number of pre-created zram devices"); 2141 2142 MODULE_LICENSE("Dual BSD/GPL"); 2143 MODULE_AUTHOR("Nitin Gupta <ngupta@vflare.org>"); 2144 MODULE_DESCRIPTION("Compressed RAM Block Device"); 2145