[PATCH] nfsd: Prints a suitable length of filehandle

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



With nfsd_debug on, fh_verify prints a fixed length of filehandle as,
nfsd: fh_verify(8: 00010001 00000000 00000000 00000000 00000000 00000000)
nfsd: fh_verify(28: 00070001 001c0002 00000000 041f9334 9b432a4c 835d4c95)

This patch lets nfsd prints a suitable length of filehandle as, 
nfsd: fh_verify(8: 00010001 00000000)
nfsd: fh_verify(28: 00070001 001c0002 00000000 041f9334 9b432a4c 835d4c95 8cbea40f)

Also, use snprintf insteads sprintf.

Signed-off-by: Kinglong Mee <kinglongmee@xxxxxxxxx>
---
 fs/nfsd/nfsfh.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c
index 350041a..dd6a5c1 100644
--- a/fs/nfsd/nfsfh.c
+++ b/fs/nfsd/nfsfh.c
@@ -650,16 +650,14 @@ fh_put(struct svc_fh *fhp)
 char * SVCFH_fmt(struct svc_fh *fhp)
 {
 	struct knfsd_fh *fh = &fhp->fh_handle;
-
-	static char buf[80];
-	sprintf(buf, "%d: %08x %08x %08x %08x %08x %08x",
-		fh->fh_size,
-		fh->fh_base.fh_pad[0],
-		fh->fh_base.fh_pad[1],
-		fh->fh_base.fh_pad[2],
-		fh->fh_base.fh_pad[3],
-		fh->fh_base.fh_pad[4],
-		fh->fh_base.fh_pad[5]);
+	/* 9 * NFS4_FHSIZE / 4 = 288 for fh_pad, 4 for fh_size, 1 for '\0' */
+	static char buf[293];
+	int pos = 0, i = 0;
+
+	pos = snprintf(buf, sizeof(buf), "%d:", fh->fh_size);
+	for (i = 0; i < fh->fh_size / sizeof(__u32); i++)
+		pos += snprintf(buf + pos, sizeof(buf) - pos,
+				" %08x", fh->fh_base.fh_pad[i]);
 	return buf;
 }
 
-- 
2.4.3

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux