diff options
Diffstat (limited to 'fs/ceph/mds_client.c')
| -rw-r--r-- | fs/ceph/mds_client.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index d2171f4a6980..5f62fb7a5d0a 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c | |||
| @@ -2700,20 +2700,16 @@ static int encode_caps_cb(struct inode *inode, struct ceph_cap *cap, | |||
| 2700 | struct ceph_filelock *flocks; | 2700 | struct ceph_filelock *flocks; |
| 2701 | 2701 | ||
| 2702 | encode_again: | 2702 | encode_again: |
| 2703 | spin_lock(&inode->i_lock); | ||
| 2704 | ceph_count_locks(inode, &num_fcntl_locks, &num_flock_locks); | 2703 | ceph_count_locks(inode, &num_fcntl_locks, &num_flock_locks); |
| 2705 | spin_unlock(&inode->i_lock); | ||
| 2706 | flocks = kmalloc((num_fcntl_locks+num_flock_locks) * | 2704 | flocks = kmalloc((num_fcntl_locks+num_flock_locks) * |
| 2707 | sizeof(struct ceph_filelock), GFP_NOFS); | 2705 | sizeof(struct ceph_filelock), GFP_NOFS); |
| 2708 | if (!flocks) { | 2706 | if (!flocks) { |
| 2709 | err = -ENOMEM; | 2707 | err = -ENOMEM; |
| 2710 | goto out_free; | 2708 | goto out_free; |
| 2711 | } | 2709 | } |
| 2712 | spin_lock(&inode->i_lock); | ||
| 2713 | err = ceph_encode_locks_to_buffer(inode, flocks, | 2710 | err = ceph_encode_locks_to_buffer(inode, flocks, |
| 2714 | num_fcntl_locks, | 2711 | num_fcntl_locks, |
| 2715 | num_flock_locks); | 2712 | num_flock_locks); |
| 2716 | spin_unlock(&inode->i_lock); | ||
| 2717 | if (err) { | 2713 | if (err) { |
| 2718 | kfree(flocks); | 2714 | kfree(flocks); |
| 2719 | if (err == -ENOSPC) | 2715 | if (err == -ENOSPC) |
