From 2f713b5c7d2a90baba6c88174c81fb9a96bfde21 Mon Sep 17 00:00:00 2001
From: Martin Brandenburg <martin@omnibond.com>
Date: Thu, 4 May 2017 13:16:04 -0400
Subject: [PATCH] orangefs: count directory pieces correctly

A large directory full of differently sized file names triggered this.
Most directories, even very large directories with shorter names, would
be lucky enough to fit in one server response.

Signed-off-by: Martin Brandenburg <martin@omnibond.com>
Signed-off-by: Mike Marshall <hubcap@omnibond.com>
---
 fs/orangefs/dir.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/fs/orangefs/dir.c b/fs/orangefs/dir.c
index cac601498925f..d327cbd17756d 100644
--- a/fs/orangefs/dir.c
+++ b/fs/orangefs/dir.c
@@ -135,9 +135,12 @@ static int parse_readdir(struct orangefs_dir *od,
 
 	count = 1;
 	part = od->part;
-	while (part && part->next) {
-		part = part->next;
+	while (part) {
 		count++;
+		if (part->next)
+			part = part->next;
+		else
+			break;
 	}
 
 	new = (void *)op->downcall.trailer_buf;
-- 
GitLab