History

mm: add bdi_set_max_ratio_no_scale() function

This introduces bdi_set_max_ratio_no_scale(). It uses the max granularity for the ratio. This function by the new sysfs knob max_ratio_fine.

Stefan Roesch committed 3 years ago

Commit 4e230b41 parent 9c832a82 files · +9 −3Browse files

Unified · Split

2 files
  1. include/linux/backing-dev.h +1 −0
  2. mm/page-writeback.c +8 −3
include/linux/backing-dev.h+1−0
@@ -109,6 +109,7 @@ u64 bdi_get_min_bytes(struct backing_dev_info *bdi); · 108 unmodified lines
109u64 bdi_get_max_bytes(struct backing_dev_info *bdi);109u64 bdi_get_max_bytes(struct backing_dev_info *bdi);
110int bdi_set_min_ratio(struct backing_dev_info *bdi, unsigned int min_ratio);110int bdi_set_min_ratio(struct backing_dev_info *bdi, unsigned int min_ratio);
111int bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ratio);111int bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ratio);
112int bdi_set_max_ratio_no_scale(struct backing_dev_info *bdi, unsigned int max_ratio);
112int bdi_set_min_bytes(struct backing_dev_info *bdi, u64 min_bytes);113int bdi_set_min_bytes(struct backing_dev_info *bdi, u64 min_bytes);
113int bdi_set_max_bytes(struct backing_dev_info *bdi, u64 max_bytes);114int bdi_set_max_bytes(struct backing_dev_info *bdi, u64 max_bytes);
114int bdi_set_strict_limit(struct backing_dev_info *bdi, unsigned int strict_limit);115int bdi_set_strict_limit(struct backing_dev_info *bdi, unsigned int strict_limit);
mm/page-writeback.c+8−3
@@ -719,6 +719,9 @@ static int __bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ra · 718 unmodified lines
719{719{
720 int ret = 0;720 int ret = 0;
721 721
722 if (max_ratio > 100 * BDI_RATIO_SCALE)
723 return -EINVAL;
724
722 spin_lock_bh(&bdi_lock);725 spin_lock_bh(&bdi_lock);
723 if (bdi->min_ratio > max_ratio) {726 if (bdi->min_ratio > max_ratio) {
724 ret = -EINVAL;727 ret = -EINVAL;
@@ -731,6 +734,11 @@ static int __bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ra · 6 unmodified lines
731 return ret;734 return ret;
732}735}
733 736
737int bdi_set_max_ratio_no_scale(struct backing_dev_info *bdi, unsigned int max_ratio)
738{
739 return __bdi_set_max_ratio(bdi, max_ratio);
740}
741
734int bdi_set_min_ratio(struct backing_dev_info *bdi, unsigned int min_ratio)742int bdi_set_min_ratio(struct backing_dev_info *bdi, unsigned int min_ratio)
735{743{
736 return __bdi_set_min_ratio(bdi, min_ratio * BDI_RATIO_SCALE);744 return __bdi_set_min_ratio(bdi, min_ratio * BDI_RATIO_SCALE);
@@ -738,9 +746,6 @@ int bdi_set_min_ratio(struct backing_dev_info *bdi, unsigned int min_ratio) · 1 unmodified line
738 746
739int bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ratio)747int bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ratio)
740{748{
741 if (max_ratio > 100)
742 return -EINVAL;
743
744 return __bdi_set_max_ratio(bdi, max_ratio * BDI_RATIO_SCALE);749 return __bdi_set_max_ratio(bdi, max_ratio * BDI_RATIO_SCALE);
745}750}
746EXPORT_SYMBOL(bdi_set_max_ratio);751EXPORT_SYMBOL(bdi_set_max_ratio);