Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bbf58bf3 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

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: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
parent 266d12d4
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -2279,6 +2279,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
			The default parameter value of '0' causes the kernel
			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=
			[NFSv4] When set to the default of '1', the NFSv4
			server will return only numeric uids and gids to
+4 −1
Original line number Diff line number Diff line
@@ -533,14 +533,17 @@ nfs4_ff_layoutstat_start_io(struct nfs4_ff_layout_mirror *mirror,
			    ktime_t now)
{
	static const ktime_t notime = {0};
	s64 report_interval = FF_LAYOUTSTATS_REPORT_INTERVAL;

	nfs4_ff_start_busy_timer(&layoutstat->busy_timer, now);
	if (ktime_equal(mirror->start_time, notime))
		mirror->start_time = now;
	if (ktime_equal(mirror->last_report_time, notime))
		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)) >=
			FF_LAYOUTSTATS_REPORT_INTERVAL) {
			report_interval) {
		mirror->last_report_time = now;
		return true;
	}
+4 −0
Original line number Diff line number Diff line
@@ -2285,3 +2285,7 @@ pnfs_report_layoutstat(struct inode *inode, gfp_t gfp_flags)
}
EXPORT_SYMBOL_GPL(pnfs_report_layoutstat);
#endif

unsigned int layoutstats_timer;
module_param(layoutstats_timer, uint, 0644);
EXPORT_SYMBOL_GPL(layoutstats_timer);
+3 −0
Original line number Diff line number Diff line
@@ -528,12 +528,15 @@ pnfs_use_threshold(struct nfs4_threshold **dst, struct nfs4_threshold *src,
					nfss->pnfs_curr_ld->id == src->l_type);
}

extern unsigned int layoutstats_timer;

#ifdef NFS_DEBUG
void nfs4_print_deviceid(const struct nfs4_deviceid *dev_id);
#else
static inline void nfs4_print_deviceid(const struct nfs4_deviceid *dev_id)
{
}

#endif /* NFS_DEBUG */
#else  /* CONFIG_NFS_V4_1 */