Message ID | 20210824224434.968720-10-allison.henderson@oracle.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Log Attribute Replay | expand |
On 25 Aug 2021 at 04:14, Allison Henderson wrote: > This patch adds a mount option to enable log attribute replay. Eventually s/mount option/debug option// > this can be removed when delayed attrs becomes permanent. The rest looks good to me. Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com> > > Signed-off-by: Allison Henderson <allison.henderson@oracle.com> > --- > fs/xfs/libxfs/xfs_attr.h | 2 +- > fs/xfs/xfs_globals.c | 1 + > fs/xfs/xfs_sysctl.h | 1 + > fs/xfs/xfs_sysfs.c | 24 ++++++++++++++++++++++++ > 4 files changed, 27 insertions(+), 1 deletion(-) > > diff --git a/fs/xfs/libxfs/xfs_attr.h b/fs/xfs/libxfs/xfs_attr.h > index efb7ac4fc41c..492762541174 100644 > --- a/fs/xfs/libxfs/xfs_attr.h > +++ b/fs/xfs/libxfs/xfs_attr.h > @@ -30,7 +30,7 @@ struct xfs_attr_list_context; > > static inline bool xfs_has_larp(struct xfs_mount *mp) > { > - return false; > + return xfs_globals.larp; > } > > /* > diff --git a/fs/xfs/xfs_globals.c b/fs/xfs/xfs_globals.c > index f62fa652c2fd..4d0a98f920ca 100644 > --- a/fs/xfs/xfs_globals.c > +++ b/fs/xfs/xfs_globals.c > @@ -41,5 +41,6 @@ struct xfs_globals xfs_globals = { > #endif > #ifdef DEBUG > .pwork_threads = -1, /* automatic thread detection */ > + .larp = false, /* log attribute replay */ > #endif > }; > diff --git a/fs/xfs/xfs_sysctl.h b/fs/xfs/xfs_sysctl.h > index 7692e76ead33..f78ad6b10ea5 100644 > --- a/fs/xfs/xfs_sysctl.h > +++ b/fs/xfs/xfs_sysctl.h > @@ -83,6 +83,7 @@ extern xfs_param_t xfs_params; > struct xfs_globals { > #ifdef DEBUG > int pwork_threads; /* parallel workqueue threads */ > + bool larp; /* log attribute replay */ > #endif > int log_recovery_delay; /* log recovery delay (secs) */ > int mount_delay; /* mount setup delay (secs) */ > diff --git a/fs/xfs/xfs_sysfs.c b/fs/xfs/xfs_sysfs.c > index 18dc5eca6c04..74180e05e8ed 100644 > --- a/fs/xfs/xfs_sysfs.c > +++ b/fs/xfs/xfs_sysfs.c > @@ -227,6 +227,29 @@ pwork_threads_show( > return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.pwork_threads); > } > XFS_SYSFS_ATTR_RW(pwork_threads); > + > +static ssize_t > +larp_store( > + struct kobject *kobject, > + const char *buf, > + size_t count) > +{ > + ssize_t ret; > + > + ret = kstrtobool(buf, &xfs_globals.larp); > + if (ret < 0) > + return ret; > + return count; > +} > + > +STATIC ssize_t > +larp_show( > + struct kobject *kobject, > + char *buf) > +{ > + return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.larp); > +} > +XFS_SYSFS_ATTR_RW(larp); > #endif /* DEBUG */ > > static struct attribute *xfs_dbg_attrs[] = { > @@ -236,6 +259,7 @@ static struct attribute *xfs_dbg_attrs[] = { > ATTR_LIST(always_cow), > #ifdef DEBUG > ATTR_LIST(pwork_threads), > + ATTR_LIST(larp), > #endif > NULL, > };
On 8/30/21 5:03 AM, Chandan Babu R wrote: > On 25 Aug 2021 at 04:14, Allison Henderson wrote: >> This patch adds a mount option to enable log attribute replay. Eventually > > s/mount option/debug option// Ok, will fix. > >> this can be removed when delayed attrs becomes permanent. > > The rest looks good to me. > > Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com> Thanks! Allison > >> >> Signed-off-by: Allison Henderson <allison.henderson@oracle.com> >> --- >> fs/xfs/libxfs/xfs_attr.h | 2 +- >> fs/xfs/xfs_globals.c | 1 + >> fs/xfs/xfs_sysctl.h | 1 + >> fs/xfs/xfs_sysfs.c | 24 ++++++++++++++++++++++++ >> 4 files changed, 27 insertions(+), 1 deletion(-) >> >> diff --git a/fs/xfs/libxfs/xfs_attr.h b/fs/xfs/libxfs/xfs_attr.h >> index efb7ac4fc41c..492762541174 100644 >> --- a/fs/xfs/libxfs/xfs_attr.h >> +++ b/fs/xfs/libxfs/xfs_attr.h >> @@ -30,7 +30,7 @@ struct xfs_attr_list_context; >> >> static inline bool xfs_has_larp(struct xfs_mount *mp) >> { >> - return false; >> + return xfs_globals.larp; >> } >> >> /* >> diff --git a/fs/xfs/xfs_globals.c b/fs/xfs/xfs_globals.c >> index f62fa652c2fd..4d0a98f920ca 100644 >> --- a/fs/xfs/xfs_globals.c >> +++ b/fs/xfs/xfs_globals.c >> @@ -41,5 +41,6 @@ struct xfs_globals xfs_globals = { >> #endif >> #ifdef DEBUG >> .pwork_threads = -1, /* automatic thread detection */ >> + .larp = false, /* log attribute replay */ >> #endif >> }; >> diff --git a/fs/xfs/xfs_sysctl.h b/fs/xfs/xfs_sysctl.h >> index 7692e76ead33..f78ad6b10ea5 100644 >> --- a/fs/xfs/xfs_sysctl.h >> +++ b/fs/xfs/xfs_sysctl.h >> @@ -83,6 +83,7 @@ extern xfs_param_t xfs_params; >> struct xfs_globals { >> #ifdef DEBUG >> int pwork_threads; /* parallel workqueue threads */ >> + bool larp; /* log attribute replay */ >> #endif >> int log_recovery_delay; /* log recovery delay (secs) */ >> int mount_delay; /* mount setup delay (secs) */ >> diff --git a/fs/xfs/xfs_sysfs.c b/fs/xfs/xfs_sysfs.c >> index 18dc5eca6c04..74180e05e8ed 100644 >> --- a/fs/xfs/xfs_sysfs.c >> +++ b/fs/xfs/xfs_sysfs.c >> @@ -227,6 +227,29 @@ pwork_threads_show( >> return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.pwork_threads); >> } >> XFS_SYSFS_ATTR_RW(pwork_threads); >> + >> +static ssize_t >> +larp_store( >> + struct kobject *kobject, >> + const char *buf, >> + size_t count) >> +{ >> + ssize_t ret; >> + >> + ret = kstrtobool(buf, &xfs_globals.larp); >> + if (ret < 0) >> + return ret; >> + return count; >> +} >> + >> +STATIC ssize_t >> +larp_show( >> + struct kobject *kobject, >> + char *buf) >> +{ >> + return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.larp); >> +} >> +XFS_SYSFS_ATTR_RW(larp); >> #endif /* DEBUG */ >> >> static struct attribute *xfs_dbg_attrs[] = { >> @@ -236,6 +259,7 @@ static struct attribute *xfs_dbg_attrs[] = { >> ATTR_LIST(always_cow), >> #ifdef DEBUG >> ATTR_LIST(pwork_threads), >> + ATTR_LIST(larp), >> #endif >> NULL, >> }; > >
diff --git a/fs/xfs/libxfs/xfs_attr.h b/fs/xfs/libxfs/xfs_attr.h index efb7ac4fc41c..492762541174 100644 --- a/fs/xfs/libxfs/xfs_attr.h +++ b/fs/xfs/libxfs/xfs_attr.h @@ -30,7 +30,7 @@ struct xfs_attr_list_context; static inline bool xfs_has_larp(struct xfs_mount *mp) { - return false; + return xfs_globals.larp; } /* diff --git a/fs/xfs/xfs_globals.c b/fs/xfs/xfs_globals.c index f62fa652c2fd..4d0a98f920ca 100644 --- a/fs/xfs/xfs_globals.c +++ b/fs/xfs/xfs_globals.c @@ -41,5 +41,6 @@ struct xfs_globals xfs_globals = { #endif #ifdef DEBUG .pwork_threads = -1, /* automatic thread detection */ + .larp = false, /* log attribute replay */ #endif }; diff --git a/fs/xfs/xfs_sysctl.h b/fs/xfs/xfs_sysctl.h index 7692e76ead33..f78ad6b10ea5 100644 --- a/fs/xfs/xfs_sysctl.h +++ b/fs/xfs/xfs_sysctl.h @@ -83,6 +83,7 @@ extern xfs_param_t xfs_params; struct xfs_globals { #ifdef DEBUG int pwork_threads; /* parallel workqueue threads */ + bool larp; /* log attribute replay */ #endif int log_recovery_delay; /* log recovery delay (secs) */ int mount_delay; /* mount setup delay (secs) */ diff --git a/fs/xfs/xfs_sysfs.c b/fs/xfs/xfs_sysfs.c index 18dc5eca6c04..74180e05e8ed 100644 --- a/fs/xfs/xfs_sysfs.c +++ b/fs/xfs/xfs_sysfs.c @@ -227,6 +227,29 @@ pwork_threads_show( return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.pwork_threads); } XFS_SYSFS_ATTR_RW(pwork_threads); + +static ssize_t +larp_store( + struct kobject *kobject, + const char *buf, + size_t count) +{ + ssize_t ret; + + ret = kstrtobool(buf, &xfs_globals.larp); + if (ret < 0) + return ret; + return count; +} + +STATIC ssize_t +larp_show( + struct kobject *kobject, + char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.larp); +} +XFS_SYSFS_ATTR_RW(larp); #endif /* DEBUG */ static struct attribute *xfs_dbg_attrs[] = { @@ -236,6 +259,7 @@ static struct attribute *xfs_dbg_attrs[] = { ATTR_LIST(always_cow), #ifdef DEBUG ATTR_LIST(pwork_threads), + ATTR_LIST(larp), #endif NULL, };
This patch adds a mount option to enable log attribute replay. Eventually this can be removed when delayed attrs becomes permanent. Signed-off-by: Allison Henderson <allison.henderson@oracle.com> --- fs/xfs/libxfs/xfs_attr.h | 2 +- fs/xfs/xfs_globals.c | 1 + fs/xfs/xfs_sysctl.h | 1 + fs/xfs/xfs_sysfs.c | 24 ++++++++++++++++++++++++ 4 files changed, 27 insertions(+), 1 deletion(-)