Whamcloud - gitweb
LU-13470 ptlrpc: return proper write count from ping_store 04/38304/2
authorOleg Drokin <green@whamcloud.com>
Tue, 21 Apr 2020 22:28:33 +0000 (18:28 -0400)
committerOleg Drokin <green@whamcloud.com>
Thu, 7 May 2020 05:41:44 +0000 (05:41 +0000)
If we return 0 as a measure of success, that is actually taken
by userspace as "we wrote 0 bytes, but there's no error, so
they want us to retry". So tell them we ate all their data
instead to make them happy.

Interesting that when you do shell-redirect it enters the
retry loop, but badarea_io does not.

Change-Id: Ieb0f8bcd4f010ab4375ea6f65f6ea00248a236cb
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/38304
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/ptlrpc/lproc_ptlrpc.c

index 579a175..ce7d386 100644 (file)
@@ -1330,7 +1330,9 @@ EXPORT_SYMBOL(ping_show);
 ssize_t ping_store(struct kobject *kobj, struct attribute *attr,
                   const char *buffer, size_t count)
 {
-       return ping_show(kobj, attr, (char *)buffer);
+       int rc = ping_show(kobj, attr, (char *)buffer);
+
+       return (rc < 0) ? rc : count;
 }
 EXPORT_SYMBOL(ping_store);