CHROMIUM: fs: fuse: print expired request opcode

Print expired request's opcode so that we can have a slightly
better understanding of what is hanging.

UPSTREAM-TASK=b:450762520
BUG=b:450763888
TEST=compile tested

Change-Id: Icccf9318c1f096dd6d7f651a1524869de8f08cbb
Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/7706446
Reviewed-by: Tomasz Figa <tfiga@chromium.org>
(cherry picked from commit 76091000d6201c434cd2edd84733a213fa3be3c0)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/7714298
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index ddd8d6e..b6d1449 100644
--- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c
@@ -61,7 +61,12 @@ static bool request_expired(struct fuse_conn *fc, struct list_head *list)
 	req = list_first_entry_or_null(list, struct fuse_req, list);
 	if (!req)
 		return false;
-	return time_after(jiffies, req->create_time + fuse_watchdog_timeout());
+	if (time_after(jiffies, req->create_time + fuse_watchdog_timeout())) {
+		pr_warn("%s: request (opcode %u, unique: %llu) expired\n",
+			current->comm, req->in.h.opcode, req->in.h.unique);
+		return true;
+	}
+	return false;
 }
 
 static struct task_struct *fuse_watchdog_detach(struct fuse_conn *fc)