|
@@ -251,12 +251,14 @@ void ceph_count_locks(struct inode *inode, int *fcntl_count, int *flock_count)
|
|
|
*fcntl_count = 0;
|
|
|
*flock_count = 0;
|
|
|
|
|
|
+ spin_lock(&inode->i_lock);
|
|
|
for (lock = inode->i_flock; lock != NULL; lock = lock->fl_next) {
|
|
|
if (lock->fl_flags & FL_POSIX)
|
|
|
++(*fcntl_count);
|
|
|
else if (lock->fl_flags & FL_FLOCK)
|
|
|
++(*flock_count);
|
|
|
}
|
|
|
+ spin_unlock(&inode->i_lock);
|
|
|
dout("counted %d flock locks and %d fcntl locks",
|
|
|
*flock_count, *fcntl_count);
|
|
|
}
|
|
@@ -279,6 +281,7 @@ int ceph_encode_locks_to_buffer(struct inode *inode,
|
|
|
dout("encoding %d flock and %d fcntl locks", num_flock_locks,
|
|
|
num_fcntl_locks);
|
|
|
|
|
|
+ spin_lock(&inode->i_lock);
|
|
|
for (lock = inode->i_flock; lock != NULL; lock = lock->fl_next) {
|
|
|
if (lock->fl_flags & FL_POSIX) {
|
|
|
++seen_fcntl;
|
|
@@ -306,6 +309,7 @@ int ceph_encode_locks_to_buffer(struct inode *inode,
|
|
|
}
|
|
|
}
|
|
|
fail:
|
|
|
+ spin_unlock(&inode->i_lock);
|
|
|
return err;
|
|
|
}
|
|
|
|