diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c
index a97ceb105cd8..ac69716aad07 100644
--- a/fs/9p/vfs_addr.c
+++ b/fs/9p/vfs_addr.c
@@ -33,8 +33,12 @@
 static void v9fs_begin_writeback(struct netfs_io_request *wreq)
 {
 	struct p9_fid *fid;
+	bool writing = (wreq->origin == NETFS_READ_FOR_WRITE ||
+			wreq->origin == NETFS_WRITETHROUGH ||
+			wreq->origin == NETFS_UNBUFFERED_WRITE ||
+			wreq->origin == NETFS_DIO_WRITE);
 
-	fid = v9fs_fid_find_inode(wreq->inode, true, INVALID_UID, true);
+	fid = v9fs_fid_find_inode(wreq->inode, writing, INVALID_UID, true);
 	if (!fid) {
 		WARN_ONCE(1, "folio expected an open fid inode->i_ino=%lx\n",
 			  wreq->inode->i_ino);