[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20221218232217.1713283-10-evanhensbergen@icloud.com>
Date: Sun, 18 Dec 2022 23:22:25 +0000
From: Eric Van Hensbergen <evanhensbergen@...oud.com>
To: v9fs-developer@...ts.sourceforge.net, asmadeus@...ewreck.org,
rminnich@...il.com, lucho@...kov.net
Cc: linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org,
linux_oss@...debyte.com,
Eric Van Hensbergen <evanhensbergen@...oud.com>
Subject: [PATCH v2 09/10] fix error reporting in v9fs_dir_release
Checking the p9_fid_put value allows us to pass back errors
involved if we end up clunking the fid as part of dir_release.
This can help with more graceful response to errors in writeback
among other things.
Signed-off-by: Eric Van Hensbergen <evanhensbergen@...oud.com>
---
fs/9p/vfs_dir.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/fs/9p/vfs_dir.c b/fs/9p/vfs_dir.c
index 536769cdf7c8..b5495d6d0eff 100644
--- a/fs/9p/vfs_dir.c
+++ b/fs/9p/vfs_dir.c
@@ -197,7 +197,7 @@ static int v9fs_dir_readdir_dotl(struct file *file, struct dir_context *ctx)
/**
- * v9fs_dir_release - close a directory
+ * v9fs_dir_release - called on a close of a file or directory
* @inode: inode of the directory
* @filp: file pointer to a directory
*
@@ -209,6 +209,7 @@ int v9fs_dir_release(struct inode *inode, struct file *filp)
struct p9_fid *fid;
__le32 version;
loff_t i_size;
+ int retval = 0;
fid = filp->private_data;
p9_debug(P9_DEBUG_VFS, "inode: %p filp: %p fid: %d\n",
@@ -226,7 +227,7 @@ int v9fs_dir_release(struct inode *inode, struct file *filp)
spin_lock(&inode->i_lock);
hlist_del(&fid->ilist);
spin_unlock(&inode->i_lock);
- p9_fid_put(fid);
+ retval = p9_fid_put(fid);
}
if ((filp->f_mode & FMODE_WRITE)) {
@@ -237,7 +238,7 @@ int v9fs_dir_release(struct inode *inode, struct file *filp)
} else {
fscache_unuse_cookie(v9fs_inode_cookie(v9inode), NULL, NULL);
}
- return 0;
+ return retval;
}
const struct file_operations v9fs_dir_operations = {
--
2.37.2
Powered by blists - more mailing lists