@@ -63,8 +63,8 @@
void ceph_get_snap_realm(struct ceph_mds_client *mdsc,
struct ceph_snap_realm *realm)
{
- dout("get_realm %p %d -> %d\n", realm,
- atomic_read(&realm->nref), atomic_read(&realm->nref)+1);
+ int nref = atomic_read(&realm->nref);
+ dout("get_realm %p %d -> %d\n", realm, nref, nref + 1);
/*
* since we _only_ increment realm refs or empty the empty
* list with snap_rwsem held, adjusting the empty list here is
@@ -193,8 +193,9 @@ static void __destroy_snap_realm(struct ceph_mds_client *mdsc,
static void __put_snap_realm(struct ceph_mds_client *mdsc,
struct ceph_snap_realm *realm)
{
+ int nref = atomic_read(&realm->nref);
dout("__put_snap_realm %llx %p %d -> %d\n", realm->ino, realm,
- atomic_read(&realm->nref), atomic_read(&realm->nref)-1);
+ nref, nref - 1);
if (atomic_dec_and_test(&realm->nref))
__destroy_snap_realm(mdsc, realm);
}
@@ -205,8 +206,9 @@ static void __put_snap_realm(struct ceph_mds_client *mdsc,
void ceph_put_snap_realm(struct ceph_mds_client *mdsc,
struct ceph_snap_realm *realm)
{
+ int nref = atomic_read(&realm->nref);
dout("put_snap_realm %llx %p %d -> %d\n", realm->ino, realm,
- atomic_read(&realm->nref), atomic_read(&realm->nref)-1);
+ nref, nref - 1);
if (!atomic_dec_and_test(&realm->nref))
return;
Calling atomic_read() twice in a debug message may return different value each time, so introduce a variable to avoid it. Signed-off-by: Chengguang Xu <cgxu519@gmx.com> --- v1->v2: - Keep atomic_t type as it is and only fix the problem of calling atomic_read() twice in a debug message. fs/ceph/snap.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)