Message ID | CAH2r5mui-uk5XVnJMM2UQ40VJM5dyA=+YChGpDcLAapBTCk4kw@mail.gmail.com |
---|---|
State | New |
Headers | show |
Series | [SMB3,client] fix touch -h of symlink | expand |
On Mon, Oct 16, 2023 at 12:26:23PM -0500, Steve French wrote: > For example: > touch -h -t 02011200 testfile > where testfile is a symlink would not change the timestamp, but > touch -t 02011200 testfile > does work to change the timestamp of the target > > Looks like some symlink inode operations are missing for other fs as well Do we have an xfstests for this?
On Mon, Oct 16, 2023 at 12:30 PM Matthew Wilcox <willy@infradead.org> wrote: > > On Mon, Oct 16, 2023 at 12:26:23PM -0500, Steve French wrote: > > For example: > > touch -h -t 02011200 testfile > > where testfile is a symlink would not change the timestamp, but > > touch -t 02011200 testfile > > does work to change the timestamp of the target > > > > Looks like some symlink inode operations are missing for other fs as well > > Do we have an xfstests for this? I was thinking the same thing - would be useful to add an xfstest for this. I actually noticed this old bug when someone reported an unrelated problem (where "find . -type l" doesn't show the symlink but "ls" and "stat" do) and the other unrelated symlink bug could be useful to add to the same test Are there other scenarios we could repro problems to an fs that doesn't have a .getattr method (like cifs.ko, afs) or .permission (like nfs and ext4)?
From 6af5f835ba4987994aecbba0d7c060160c892856 Mon Sep 17 00:00:00 2001 From: Steve French <stfrench@microsoft.com> Date: Mon, 16 Oct 2023 12:18:23 -0500 Subject: [PATCH] smb3: fix touch -h of symlink For example: touch -h -t 02011200 testfile where testfile is a symlink would not change the timestamp, but touch -t 02011200 testfile does work to change the timestamp of the target Reported-by: Micah Veilleux <micah.veilleux@iba-group.com> Closes: https://bugzilla.samba.org/show_bug.cgi?id=14476 Cc: Stable <stable@vger.kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com> --- fs/smb/client/cifsfs.c | 1 + 1 file changed, 1 insertion(+) diff --git a/fs/smb/client/cifsfs.c b/fs/smb/client/cifsfs.c index 22869cda1356..ea3a7a668b45 100644 --- a/fs/smb/client/cifsfs.c +++ b/fs/smb/client/cifsfs.c @@ -1191,6 +1191,7 @@ const char *cifs_get_link(struct dentry *dentry, struct inode *inode, const struct inode_operations cifs_symlink_inode_ops = { .get_link = cifs_get_link, + .setattr = cifs_setattr, .permission = cifs_permission, .listxattr = cifs_listxattr, }; -- 2.39.2