Commit 9ea74602 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag '9p-for-6.18-rc3-v2' of https://github.com/martinetd/linux

Pull 9pfs fix from Dominique Martinet:
 "Fix 9p cache=mmap regression by revert

  This reverts the problematic commit instead of trying to fix it in a
  rush"

* tag '9p-for-6.18-rc3-v2' of https://github.com/martinetd/linux:
  Revert "fs/9p: Refresh metadata in d_revalidate for uncached mode too"
parents 552c5071 43c36a56
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -66,7 +66,6 @@ static int __v9fs_lookup_revalidate(struct dentry *dentry, unsigned int flags)
	struct p9_fid *fid;
	struct inode *inode;
	struct v9fs_inode *v9inode;
	unsigned int cached;

	if (flags & LOOKUP_RCU)
		return -ECHILD;
@@ -76,11 +75,7 @@ static int __v9fs_lookup_revalidate(struct dentry *dentry, unsigned int flags)
		goto out_valid;

	v9inode = V9FS_I(inode);
	struct v9fs_session_info *v9ses = v9fs_inode2v9ses(inode);

	cached = v9ses->cache & (CACHE_META | CACHE_LOOSE);

	if (!cached || v9inode->cache_validity & V9FS_INO_INVALID_ATTR) {
	if (v9inode->cache_validity & V9FS_INO_INVALID_ATTR) {
		int retval;
		struct v9fs_session_info *v9ses;

@@ -114,6 +109,7 @@ static int __v9fs_lookup_revalidate(struct dentry *dentry, unsigned int flags)
			p9_debug(P9_DEBUG_VFS,
				"refresh inode: dentry = %pd (%p), got error %pe\n",
				dentry, dentry, ERR_PTR(retval));
		if (retval < 0)
			return retval;
		}
	}
@@ -150,8 +146,6 @@ const struct dentry_operations v9fs_cached_dentry_operations = {
};

const struct dentry_operations v9fs_dentry_operations = {
	.d_revalidate = v9fs_lookup_revalidate,
	.d_weak_revalidate = __v9fs_lookup_revalidate,
	.d_release = v9fs_dentry_release,
	.d_unalias_trylock = v9fs_dentry_unalias_trylock,
	.d_unalias_unlock = v9fs_dentry_unalias_unlock,
+1 −7
Original line number Diff line number Diff line
@@ -1339,14 +1339,8 @@ int v9fs_refresh_inode(struct p9_fid *fid, struct inode *inode)
	 * Don't update inode if the file type is different
	 */
	umode = p9mode2unixmode(v9ses, st, &rdev);
	if (inode_wrong_type(inode, umode)) {
		/*
		 * Do this as a way of letting the caller know the inode should not
		 * be reused
		 */
		v9fs_invalidate_inode_attr(inode);
	if (inode_wrong_type(inode, umode))
		goto out;
	}

	/*
	 * We don't want to refresh inode->i_size,
+1 −7
Original line number Diff line number Diff line
@@ -897,14 +897,8 @@ int v9fs_refresh_inode_dotl(struct p9_fid *fid, struct inode *inode)
	/*
	 * Don't update inode if the file type is different
	 */
	if (inode_wrong_type(inode, st->st_mode)) {
		/*
		 * Do this as a way of letting the caller know the inode should not
		 * be reused
		 */
		v9fs_invalidate_inode_attr(inode);
	if (inode_wrong_type(inode, st->st_mode))
		goto out;
	}

	/*
	 * We don't want to refresh inode->i_size,