NFSv4.2/pnfs: Make the layoutstats timer configurable
Allow advanced users to set the layoutstats timer in order to lengthen or shorten the period between layoutstat transmissions to the server. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
parent
266d12d42e
commit
bbf58bf348
|
@ -2279,6 +2279,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||||
The default parameter value of '0' causes the kernel
|
The default parameter value of '0' causes the kernel
|
||||||
not to attempt recovery of lost locks.
|
not to attempt recovery of lost locks.
|
||||||
|
|
||||||
|
nfs4.layoutstats_timer =
|
||||||
|
[NFSv4.2] Change the rate at which the kernel sends
|
||||||
|
layoutstats to the pNFS metadata server.
|
||||||
|
|
||||||
|
Setting this to value to 0 causes the kernel to use
|
||||||
|
whatever value is the default set by the layout
|
||||||
|
driver. A non-zero value sets the minimum interval
|
||||||
|
in seconds between layoutstats transmissions.
|
||||||
|
|
||||||
nfsd.nfs4_disable_idmapping=
|
nfsd.nfs4_disable_idmapping=
|
||||||
[NFSv4] When set to the default of '1', the NFSv4
|
[NFSv4] When set to the default of '1', the NFSv4
|
||||||
server will return only numeric uids and gids to
|
server will return only numeric uids and gids to
|
||||||
|
|
|
@ -533,14 +533,17 @@ nfs4_ff_layoutstat_start_io(struct nfs4_ff_layout_mirror *mirror,
|
||||||
ktime_t now)
|
ktime_t now)
|
||||||
{
|
{
|
||||||
static const ktime_t notime = {0};
|
static const ktime_t notime = {0};
|
||||||
|
s64 report_interval = FF_LAYOUTSTATS_REPORT_INTERVAL;
|
||||||
|
|
||||||
nfs4_ff_start_busy_timer(&layoutstat->busy_timer, now);
|
nfs4_ff_start_busy_timer(&layoutstat->busy_timer, now);
|
||||||
if (ktime_equal(mirror->start_time, notime))
|
if (ktime_equal(mirror->start_time, notime))
|
||||||
mirror->start_time = now;
|
mirror->start_time = now;
|
||||||
if (ktime_equal(mirror->last_report_time, notime))
|
if (ktime_equal(mirror->last_report_time, notime))
|
||||||
mirror->last_report_time = now;
|
mirror->last_report_time = now;
|
||||||
|
if (layoutstats_timer != 0)
|
||||||
|
report_interval = (s64)layoutstats_timer * 1000LL;
|
||||||
if (ktime_to_ms(ktime_sub(now, mirror->last_report_time)) >=
|
if (ktime_to_ms(ktime_sub(now, mirror->last_report_time)) >=
|
||||||
FF_LAYOUTSTATS_REPORT_INTERVAL) {
|
report_interval) {
|
||||||
mirror->last_report_time = now;
|
mirror->last_report_time = now;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2285,3 +2285,7 @@ pnfs_report_layoutstat(struct inode *inode, gfp_t gfp_flags)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(pnfs_report_layoutstat);
|
EXPORT_SYMBOL_GPL(pnfs_report_layoutstat);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
unsigned int layoutstats_timer;
|
||||||
|
module_param(layoutstats_timer, uint, 0644);
|
||||||
|
EXPORT_SYMBOL_GPL(layoutstats_timer);
|
||||||
|
|
|
@ -528,12 +528,15 @@ pnfs_use_threshold(struct nfs4_threshold **dst, struct nfs4_threshold *src,
|
||||||
nfss->pnfs_curr_ld->id == src->l_type);
|
nfss->pnfs_curr_ld->id == src->l_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern unsigned int layoutstats_timer;
|
||||||
|
|
||||||
#ifdef NFS_DEBUG
|
#ifdef NFS_DEBUG
|
||||||
void nfs4_print_deviceid(const struct nfs4_deviceid *dev_id);
|
void nfs4_print_deviceid(const struct nfs4_deviceid *dev_id);
|
||||||
#else
|
#else
|
||||||
static inline void nfs4_print_deviceid(const struct nfs4_deviceid *dev_id)
|
static inline void nfs4_print_deviceid(const struct nfs4_deviceid *dev_id)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* NFS_DEBUG */
|
#endif /* NFS_DEBUG */
|
||||||
#else /* CONFIG_NFS_V4_1 */
|
#else /* CONFIG_NFS_V4_1 */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue