Message ID | 20230120134029.69200-2-frank.li@vivo.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [f2fs-dev,1/4] f2fs: fix to set ipu policy | expand |
On 2023/1/20 21:40, Yangtao Li wrote: > Disallow the value set beyond the range, and disallow to change > the value in lfs mode. IMO, it's better to merge this patch into 1/4. > > BTW, convert open code to use BIT(). How about using one patch to change 1 << xx to BIT(xx) for all cases of f2fs rather than one by one? Thanks, > > Signed-off-by: Yangtao Li <frank.li@vivo.com> > --- > fs/f2fs/segment.h | 1 + > fs/f2fs/sysfs.c | 11 ++++++++++- > 2 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h > index 0b0eb8f03cba..d73e988566a5 100644 > --- a/fs/f2fs/segment.h > +++ b/fs/f2fs/segment.h > @@ -681,6 +681,7 @@ enum { > F2FS_IPU_ASYNC, > F2FS_IPU_NOCACHE, > F2FS_IPU_HONOR_OPU_WRITE, > + F2FS_IPU_MAX, > }; > > #define F2FS_IPU_POLICY(name) \ > diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c > index bdc761f36310..576e6416ffb9 100644 > --- a/fs/f2fs/sysfs.c > +++ b/fs/f2fs/sysfs.c > @@ -452,7 +452,7 @@ static ssize_t __sbi_store(struct f2fs_attr *a, > if (ret < 0) > return ret; > #ifdef CONFIG_F2FS_FAULT_INJECTION > - if (a->struct_type == FAULT_INFO_TYPE && t >= (1 << FAULT_MAX)) > + if (a->struct_type == FAULT_INFO_TYPE && t >= BIT(FAULT_MAX)) > return -EINVAL; > if (a->struct_type == FAULT_INFO_RATE && t >= UINT_MAX) > return -EINVAL; > @@ -706,6 +706,15 @@ static ssize_t __sbi_store(struct f2fs_attr *a, > return count; > } > > + if (!strcmp(a->attr.name, "ipu_policy")) { > + if (F2FS_OPTION(sbi).fs_mode == FS_MODE_LFS) > + return -EINVAL; > + if (t >= BIT(F2FS_IPU_MAX)) > + return -EINVAL; > + SM_I(sbi)->ipu_policy = (unsigned int)t; > + return count; > + } > + > *ui = (unsigned int)t; > > return count;
diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h index 0b0eb8f03cba..d73e988566a5 100644 --- a/fs/f2fs/segment.h +++ b/fs/f2fs/segment.h @@ -681,6 +681,7 @@ enum { F2FS_IPU_ASYNC, F2FS_IPU_NOCACHE, F2FS_IPU_HONOR_OPU_WRITE, + F2FS_IPU_MAX, }; #define F2FS_IPU_POLICY(name) \ diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c index bdc761f36310..576e6416ffb9 100644 --- a/fs/f2fs/sysfs.c +++ b/fs/f2fs/sysfs.c @@ -452,7 +452,7 @@ static ssize_t __sbi_store(struct f2fs_attr *a, if (ret < 0) return ret; #ifdef CONFIG_F2FS_FAULT_INJECTION - if (a->struct_type == FAULT_INFO_TYPE && t >= (1 << FAULT_MAX)) + if (a->struct_type == FAULT_INFO_TYPE && t >= BIT(FAULT_MAX)) return -EINVAL; if (a->struct_type == FAULT_INFO_RATE && t >= UINT_MAX) return -EINVAL; @@ -706,6 +706,15 @@ static ssize_t __sbi_store(struct f2fs_attr *a, return count; } + if (!strcmp(a->attr.name, "ipu_policy")) { + if (F2FS_OPTION(sbi).fs_mode == FS_MODE_LFS) + return -EINVAL; + if (t >= BIT(F2FS_IPU_MAX)) + return -EINVAL; + SM_I(sbi)->ipu_policy = (unsigned int)t; + return count; + } + *ui = (unsigned int)t; return count;
Disallow the value set beyond the range, and disallow to change the value in lfs mode. BTW, convert open code to use BIT(). Signed-off-by: Yangtao Li <frank.li@vivo.com> --- fs/f2fs/segment.h | 1 + fs/f2fs/sysfs.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-)