ceph: don't clobber i_snap_caps on non-I_NEW inode
authorJeff Layton <jlayton@kernel.org>
Mon, 1 Mar 2021 12:38:01 +0000 (07:38 -0500)
committerIlya Dryomov <idryomov@gmail.com>
Tue, 27 Apr 2021 21:52:22 +0000 (23:52 +0200)
commitd3c51ae1b8cce5bdaf91a1ce32b33cf5626075dc
tree47f0721d76ea133f42adb216f90d171d1aa79dcc
parentfcaddb1d851bf69c94b3046227341d9684e276b1
ceph: don't clobber i_snap_caps on non-I_NEW inode

We want the snapdir to mirror the non-snapped directory's attributes for
most things, but i_snap_caps represents the caps granted on the snapshot
directory by the MDS itself. A misbehaving MDS could issue different
caps for the snapdir and we lose them here.

Only reset i_snap_caps when the inode is I_NEW. Also, move the setting
of i_op and i_fop inside the if block since they should never change
anyway.

Reported-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/inode.c