From 748777dd41283d686989903f69a65305448afc35 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Mon, 26 Sep 2016 21:20:26 +0800 Subject: [PATCH] client: protect InodeRef with client_lock Fixes: http://tracker.ceph.com/issues/17392 Signed-off-by: Yan, Zheng --- src/client/Client.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index 94213eada7f9..f0a36e643eb5 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -9947,8 +9947,6 @@ int Client::ll_getattrx(Inode *in, struct ceph_statx *stx, unsigned int want, int Client::_ll_setattrx(Inode *in, struct ceph_statx *stx, int mask, int uid, int gid, InodeRef *inp) { - Mutex::Locker lock(client_lock); - vinodeno_t vino = _get_vino(in); ldout(cct, 3) << "ll_setattrx " << vino << " mask " << hex << mask << dec @@ -9978,6 +9976,7 @@ int Client::_ll_setattrx(Inode *in, struct ceph_statx *stx, int mask, int uid, int Client::ll_setattrx(Inode *in, struct ceph_statx *stx, int mask, int uid, int gid) { + Mutex::Locker lock(client_lock); InodeRef target(in); int res = _ll_setattrx(in, stx, mask, uid, gid, &target); if (res == 0) { @@ -9993,9 +9992,9 @@ int Client::ll_setattr(Inode *in, struct stat *attr, int mask, int uid, int gid) { struct ceph_statx stx; - stat_to_statx(attr, &stx); + Mutex::Locker lock(client_lock); InodeRef target(in); int res = _ll_setattrx(in, &stx, mask, uid, gid, &target); if (res == 0) { -- 2.47.3