blk-sysfs.c (754451342fc5954061ede74b0a8485ec4a4c6eaa) | blk-sysfs.c (5657a819a8d94426c76be04dcedfad0f64cfff00) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Functions related to sysfs handling 4 */ 5#include <linux/kernel.h> 6#include <linux/slab.h> 7#include <linux/module.h> 8#include <linux/bio.h> --- 477 unchanged lines hidden (view full) --- 486 if (set) 487 blk_queue_flag_set(QUEUE_FLAG_WC, q); 488 else 489 blk_queue_flag_clear(QUEUE_FLAG_WC, q); 490 491 return count; 492} 493 | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Functions related to sysfs handling 4 */ 5#include <linux/kernel.h> 6#include <linux/slab.h> 7#include <linux/module.h> 8#include <linux/bio.h> --- 477 unchanged lines hidden (view full) --- 486 if (set) 487 blk_queue_flag_set(QUEUE_FLAG_WC, q); 488 else 489 blk_queue_flag_clear(QUEUE_FLAG_WC, q); 490 491 return count; 492} 493 |
494static ssize_t queue_fua_show(struct request_queue *q, char *page) 495{ 496 return sprintf(page, "%u\n", test_bit(QUEUE_FLAG_FUA, &q->queue_flags)); 497} 498 |
|
494static ssize_t queue_dax_show(struct request_queue *q, char *page) 495{ 496 return queue_var_show(blk_queue_dax(q), page); 497} 498 499static struct queue_sysfs_entry queue_requests_entry = { | 499static ssize_t queue_dax_show(struct request_queue *q, char *page) 500{ 501 return queue_var_show(blk_queue_dax(q), page); 502} 503 504static struct queue_sysfs_entry queue_requests_entry = { |
500 .attr = {.name = "nr_requests", .mode = S_IRUGO | S_IWUSR }, | 505 .attr = {.name = "nr_requests", .mode = 0644 }, |
501 .show = queue_requests_show, 502 .store = queue_requests_store, 503}; 504 505static struct queue_sysfs_entry queue_ra_entry = { | 506 .show = queue_requests_show, 507 .store = queue_requests_store, 508}; 509 510static struct queue_sysfs_entry queue_ra_entry = { |
506 .attr = {.name = "read_ahead_kb", .mode = S_IRUGO | S_IWUSR }, | 511 .attr = {.name = "read_ahead_kb", .mode = 0644 }, |
507 .show = queue_ra_show, 508 .store = queue_ra_store, 509}; 510 511static struct queue_sysfs_entry queue_max_sectors_entry = { | 512 .show = queue_ra_show, 513 .store = queue_ra_store, 514}; 515 516static struct queue_sysfs_entry queue_max_sectors_entry = { |
512 .attr = {.name = "max_sectors_kb", .mode = S_IRUGO | S_IWUSR }, | 517 .attr = {.name = "max_sectors_kb", .mode = 0644 }, |
513 .show = queue_max_sectors_show, 514 .store = queue_max_sectors_store, 515}; 516 517static struct queue_sysfs_entry queue_max_hw_sectors_entry = { | 518 .show = queue_max_sectors_show, 519 .store = queue_max_sectors_store, 520}; 521 522static struct queue_sysfs_entry queue_max_hw_sectors_entry = { |
518 .attr = {.name = "max_hw_sectors_kb", .mode = S_IRUGO }, | 523 .attr = {.name = "max_hw_sectors_kb", .mode = 0444 }, |
519 .show = queue_max_hw_sectors_show, 520}; 521 522static struct queue_sysfs_entry queue_max_segments_entry = { | 524 .show = queue_max_hw_sectors_show, 525}; 526 527static struct queue_sysfs_entry queue_max_segments_entry = { |
523 .attr = {.name = "max_segments", .mode = S_IRUGO }, | 528 .attr = {.name = "max_segments", .mode = 0444 }, |
524 .show = queue_max_segments_show, 525}; 526 527static struct queue_sysfs_entry queue_max_discard_segments_entry = { | 529 .show = queue_max_segments_show, 530}; 531 532static struct queue_sysfs_entry queue_max_discard_segments_entry = { |
528 .attr = {.name = "max_discard_segments", .mode = S_IRUGO }, | 533 .attr = {.name = "max_discard_segments", .mode = 0444 }, |
529 .show = queue_max_discard_segments_show, 530}; 531 532static struct queue_sysfs_entry queue_max_integrity_segments_entry = { | 534 .show = queue_max_discard_segments_show, 535}; 536 537static struct queue_sysfs_entry queue_max_integrity_segments_entry = { |
533 .attr = {.name = "max_integrity_segments", .mode = S_IRUGO }, | 538 .attr = {.name = "max_integrity_segments", .mode = 0444 }, |
534 .show = queue_max_integrity_segments_show, 535}; 536 537static struct queue_sysfs_entry queue_max_segment_size_entry = { | 539 .show = queue_max_integrity_segments_show, 540}; 541 542static struct queue_sysfs_entry queue_max_segment_size_entry = { |
538 .attr = {.name = "max_segment_size", .mode = S_IRUGO }, | 543 .attr = {.name = "max_segment_size", .mode = 0444 }, |
539 .show = queue_max_segment_size_show, 540}; 541 542static struct queue_sysfs_entry queue_iosched_entry = { | 544 .show = queue_max_segment_size_show, 545}; 546 547static struct queue_sysfs_entry queue_iosched_entry = { |
543 .attr = {.name = "scheduler", .mode = S_IRUGO | S_IWUSR }, | 548 .attr = {.name = "scheduler", .mode = 0644 }, |
544 .show = elv_iosched_show, 545 .store = elv_iosched_store, 546}; 547 548static struct queue_sysfs_entry queue_hw_sector_size_entry = { | 549 .show = elv_iosched_show, 550 .store = elv_iosched_store, 551}; 552 553static struct queue_sysfs_entry queue_hw_sector_size_entry = { |
549 .attr = {.name = "hw_sector_size", .mode = S_IRUGO }, | 554 .attr = {.name = "hw_sector_size", .mode = 0444 }, |
550 .show = queue_logical_block_size_show, 551}; 552 553static struct queue_sysfs_entry queue_logical_block_size_entry = { | 555 .show = queue_logical_block_size_show, 556}; 557 558static struct queue_sysfs_entry queue_logical_block_size_entry = { |
554 .attr = {.name = "logical_block_size", .mode = S_IRUGO }, | 559 .attr = {.name = "logical_block_size", .mode = 0444 }, |
555 .show = queue_logical_block_size_show, 556}; 557 558static struct queue_sysfs_entry queue_physical_block_size_entry = { | 560 .show = queue_logical_block_size_show, 561}; 562 563static struct queue_sysfs_entry queue_physical_block_size_entry = { |
559 .attr = {.name = "physical_block_size", .mode = S_IRUGO }, | 564 .attr = {.name = "physical_block_size", .mode = 0444 }, |
560 .show = queue_physical_block_size_show, 561}; 562 563static struct queue_sysfs_entry queue_chunk_sectors_entry = { | 565 .show = queue_physical_block_size_show, 566}; 567 568static struct queue_sysfs_entry queue_chunk_sectors_entry = { |
564 .attr = {.name = "chunk_sectors", .mode = S_IRUGO }, | 569 .attr = {.name = "chunk_sectors", .mode = 0444 }, |
565 .show = queue_chunk_sectors_show, 566}; 567 568static struct queue_sysfs_entry queue_io_min_entry = { | 570 .show = queue_chunk_sectors_show, 571}; 572 573static struct queue_sysfs_entry queue_io_min_entry = { |
569 .attr = {.name = "minimum_io_size", .mode = S_IRUGO }, | 574 .attr = {.name = "minimum_io_size", .mode = 0444 }, |
570 .show = queue_io_min_show, 571}; 572 573static struct queue_sysfs_entry queue_io_opt_entry = { | 575 .show = queue_io_min_show, 576}; 577 578static struct queue_sysfs_entry queue_io_opt_entry = { |
574 .attr = {.name = "optimal_io_size", .mode = S_IRUGO }, | 579 .attr = {.name = "optimal_io_size", .mode = 0444 }, |
575 .show = queue_io_opt_show, 576}; 577 578static struct queue_sysfs_entry queue_discard_granularity_entry = { | 580 .show = queue_io_opt_show, 581}; 582 583static struct queue_sysfs_entry queue_discard_granularity_entry = { |
579 .attr = {.name = "discard_granularity", .mode = S_IRUGO }, | 584 .attr = {.name = "discard_granularity", .mode = 0444 }, |
580 .show = queue_discard_granularity_show, 581}; 582 583static struct queue_sysfs_entry queue_discard_max_hw_entry = { | 585 .show = queue_discard_granularity_show, 586}; 587 588static struct queue_sysfs_entry queue_discard_max_hw_entry = { |
584 .attr = {.name = "discard_max_hw_bytes", .mode = S_IRUGO }, | 589 .attr = {.name = "discard_max_hw_bytes", .mode = 0444 }, |
585 .show = queue_discard_max_hw_show, 586}; 587 588static struct queue_sysfs_entry queue_discard_max_entry = { | 590 .show = queue_discard_max_hw_show, 591}; 592 593static struct queue_sysfs_entry queue_discard_max_entry = { |
589 .attr = {.name = "discard_max_bytes", .mode = S_IRUGO | S_IWUSR }, | 594 .attr = {.name = "discard_max_bytes", .mode = 0644 }, |
590 .show = queue_discard_max_show, 591 .store = queue_discard_max_store, 592}; 593 594static struct queue_sysfs_entry queue_discard_zeroes_data_entry = { | 595 .show = queue_discard_max_show, 596 .store = queue_discard_max_store, 597}; 598 599static struct queue_sysfs_entry queue_discard_zeroes_data_entry = { |
595 .attr = {.name = "discard_zeroes_data", .mode = S_IRUGO }, | 600 .attr = {.name = "discard_zeroes_data", .mode = 0444 }, |
596 .show = queue_discard_zeroes_data_show, 597}; 598 599static struct queue_sysfs_entry queue_write_same_max_entry = { | 601 .show = queue_discard_zeroes_data_show, 602}; 603 604static struct queue_sysfs_entry queue_write_same_max_entry = { |
600 .attr = {.name = "write_same_max_bytes", .mode = S_IRUGO }, | 605 .attr = {.name = "write_same_max_bytes", .mode = 0444 }, |
601 .show = queue_write_same_max_show, 602}; 603 604static struct queue_sysfs_entry queue_write_zeroes_max_entry = { | 606 .show = queue_write_same_max_show, 607}; 608 609static struct queue_sysfs_entry queue_write_zeroes_max_entry = { |
605 .attr = {.name = "write_zeroes_max_bytes", .mode = S_IRUGO }, | 610 .attr = {.name = "write_zeroes_max_bytes", .mode = 0444 }, |
606 .show = queue_write_zeroes_max_show, 607}; 608 609static struct queue_sysfs_entry queue_nonrot_entry = { | 611 .show = queue_write_zeroes_max_show, 612}; 613 614static struct queue_sysfs_entry queue_nonrot_entry = { |
610 .attr = {.name = "rotational", .mode = S_IRUGO | S_IWUSR }, | 615 .attr = {.name = "rotational", .mode = 0644 }, |
611 .show = queue_show_nonrot, 612 .store = queue_store_nonrot, 613}; 614 615static struct queue_sysfs_entry queue_zoned_entry = { | 616 .show = queue_show_nonrot, 617 .store = queue_store_nonrot, 618}; 619 620static struct queue_sysfs_entry queue_zoned_entry = { |
616 .attr = {.name = "zoned", .mode = S_IRUGO }, | 621 .attr = {.name = "zoned", .mode = 0444 }, |
617 .show = queue_zoned_show, 618}; 619 620static struct queue_sysfs_entry queue_nomerges_entry = { | 622 .show = queue_zoned_show, 623}; 624 625static struct queue_sysfs_entry queue_nomerges_entry = { |
621 .attr = {.name = "nomerges", .mode = S_IRUGO | S_IWUSR }, | 626 .attr = {.name = "nomerges", .mode = 0644 }, |
622 .show = queue_nomerges_show, 623 .store = queue_nomerges_store, 624}; 625 626static struct queue_sysfs_entry queue_rq_affinity_entry = { | 627 .show = queue_nomerges_show, 628 .store = queue_nomerges_store, 629}; 630 631static struct queue_sysfs_entry queue_rq_affinity_entry = { |
627 .attr = {.name = "rq_affinity", .mode = S_IRUGO | S_IWUSR }, | 632 .attr = {.name = "rq_affinity", .mode = 0644 }, |
628 .show = queue_rq_affinity_show, 629 .store = queue_rq_affinity_store, 630}; 631 632static struct queue_sysfs_entry queue_iostats_entry = { | 633 .show = queue_rq_affinity_show, 634 .store = queue_rq_affinity_store, 635}; 636 637static struct queue_sysfs_entry queue_iostats_entry = { |
633 .attr = {.name = "iostats", .mode = S_IRUGO | S_IWUSR }, | 638 .attr = {.name = "iostats", .mode = 0644 }, |
634 .show = queue_show_iostats, 635 .store = queue_store_iostats, 636}; 637 638static struct queue_sysfs_entry queue_random_entry = { | 639 .show = queue_show_iostats, 640 .store = queue_store_iostats, 641}; 642 643static struct queue_sysfs_entry queue_random_entry = { |
639 .attr = {.name = "add_random", .mode = S_IRUGO | S_IWUSR }, | 644 .attr = {.name = "add_random", .mode = 0644 }, |
640 .show = queue_show_random, 641 .store = queue_store_random, 642}; 643 644static struct queue_sysfs_entry queue_poll_entry = { | 645 .show = queue_show_random, 646 .store = queue_store_random, 647}; 648 649static struct queue_sysfs_entry queue_poll_entry = { |
645 .attr = {.name = "io_poll", .mode = S_IRUGO | S_IWUSR }, | 650 .attr = {.name = "io_poll", .mode = 0644 }, |
646 .show = queue_poll_show, 647 .store = queue_poll_store, 648}; 649 650static struct queue_sysfs_entry queue_poll_delay_entry = { | 651 .show = queue_poll_show, 652 .store = queue_poll_store, 653}; 654 655static struct queue_sysfs_entry queue_poll_delay_entry = { |
651 .attr = {.name = "io_poll_delay", .mode = S_IRUGO | S_IWUSR }, | 656 .attr = {.name = "io_poll_delay", .mode = 0644 }, |
652 .show = queue_poll_delay_show, 653 .store = queue_poll_delay_store, 654}; 655 656static struct queue_sysfs_entry queue_wc_entry = { | 657 .show = queue_poll_delay_show, 658 .store = queue_poll_delay_store, 659}; 660 661static struct queue_sysfs_entry queue_wc_entry = { |
657 .attr = {.name = "write_cache", .mode = S_IRUGO | S_IWUSR }, | 662 .attr = {.name = "write_cache", .mode = 0644 }, |
658 .show = queue_wc_show, 659 .store = queue_wc_store, 660}; 661 | 663 .show = queue_wc_show, 664 .store = queue_wc_store, 665}; 666 |
667static struct queue_sysfs_entry queue_fua_entry = { 668 .attr = {.name = "fua", .mode = 0444 }, 669 .show = queue_fua_show, 670}; 671 |
|
662static struct queue_sysfs_entry queue_dax_entry = { | 672static struct queue_sysfs_entry queue_dax_entry = { |
663 .attr = {.name = "dax", .mode = S_IRUGO }, | 673 .attr = {.name = "dax", .mode = 0444 }, |
664 .show = queue_dax_show, 665}; 666 667static struct queue_sysfs_entry queue_wb_lat_entry = { | 674 .show = queue_dax_show, 675}; 676 677static struct queue_sysfs_entry queue_wb_lat_entry = { |
668 .attr = {.name = "wbt_lat_usec", .mode = S_IRUGO | S_IWUSR }, | 678 .attr = {.name = "wbt_lat_usec", .mode = 0644 }, |
669 .show = queue_wb_lat_show, 670 .store = queue_wb_lat_store, 671}; 672 673#ifdef CONFIG_BLK_DEV_THROTTLING_LOW 674static struct queue_sysfs_entry throtl_sample_time_entry = { | 679 .show = queue_wb_lat_show, 680 .store = queue_wb_lat_store, 681}; 682 683#ifdef CONFIG_BLK_DEV_THROTTLING_LOW 684static struct queue_sysfs_entry throtl_sample_time_entry = { |
675 .attr = {.name = "throttle_sample_time", .mode = S_IRUGO | S_IWUSR }, | 685 .attr = {.name = "throttle_sample_time", .mode = 0644 }, |
676 .show = blk_throtl_sample_time_show, 677 .store = blk_throtl_sample_time_store, 678}; 679#endif 680 681static struct attribute *default_attrs[] = { 682 &queue_requests_entry.attr, 683 &queue_ra_entry.attr, --- 19 unchanged lines hidden (view full) --- 703 &queue_nonrot_entry.attr, 704 &queue_zoned_entry.attr, 705 &queue_nomerges_entry.attr, 706 &queue_rq_affinity_entry.attr, 707 &queue_iostats_entry.attr, 708 &queue_random_entry.attr, 709 &queue_poll_entry.attr, 710 &queue_wc_entry.attr, | 686 .show = blk_throtl_sample_time_show, 687 .store = blk_throtl_sample_time_store, 688}; 689#endif 690 691static struct attribute *default_attrs[] = { 692 &queue_requests_entry.attr, 693 &queue_ra_entry.attr, --- 19 unchanged lines hidden (view full) --- 713 &queue_nonrot_entry.attr, 714 &queue_zoned_entry.attr, 715 &queue_nomerges_entry.attr, 716 &queue_rq_affinity_entry.attr, 717 &queue_iostats_entry.attr, 718 &queue_random_entry.attr, 719 &queue_poll_entry.attr, 720 &queue_wc_entry.attr, |
721 &queue_fua_entry.attr, |
|
711 &queue_dax_entry.attr, 712 &queue_wb_lat_entry.attr, 713 &queue_poll_delay_entry.attr, 714#ifdef CONFIG_BLK_DEV_THROTTLING_LOW 715 &throtl_sample_time_entry.attr, 716#endif 717 NULL, 718}; --- 247 unchanged lines hidden --- | 722 &queue_dax_entry.attr, 723 &queue_wb_lat_entry.attr, 724 &queue_poll_delay_entry.attr, 725#ifdef CONFIG_BLK_DEV_THROTTLING_LOW 726 &throtl_sample_time_entry.attr, 727#endif 728 NULL, 729}; --- 247 unchanged lines hidden --- |