Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a9a80ba authored by Bruce Korb's avatar Bruce Korb Committed by Greg Kroah-Hartman
Browse files

staging: lustre: ldlm: use accessor macros for l_flags



Convert most of the ldlm lock's l_flags references from direct
bit twiddling to using bit specific macros.  A few multi-bit
operations are left as an exercise for the reader.

The changes are mostly in ldlm, but also in llite, osc and quota.
Also add a multi-bit (mask) test.

Signed-off-by: default avatarBruce Korb <bruce.korb@gmail.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-2906


Reviewed-by: default avatarKeith Mannthey <Keith.Mannthey@intel.com>
Reviewed-on: http://review.whamcloud.com/7963


Reviewed-by: default avatarDoug Oucharek <doug.s.oucharek@intel.com>
Reviewed-by: default avatarAndreas Dilger <andreas.dilger@intel.com>
Signed-off-by: default avatarJames Simmons <jsimmons@infradead.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0fdd2b8d
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -381,6 +381,9 @@
/** test for ldlm_lock flag bit set */
#define LDLM_TEST_FLAG(_l, _b)        (((_l)->l_flags & (_b)) != 0)

/** multi-bit test: are any of mask bits set? */
#define LDLM_HAVE_MASK(_l, _m)		((_l)->l_flags & LDLM_FL_##_m##_MASK)

/** set a ldlm_lock flag bit */
#define LDLM_SET_FLAG(_l, _b)         ((_l)->l_flags |= (_b))

+2 −2
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ struct ldlm_resource *lock_res_and_lock(struct ldlm_lock *lock)

	lock_res(lock->l_resource);

	lock->l_flags |= LDLM_FL_RES_LOCKED;
	ldlm_set_res_locked(lock);
	return lock->l_resource;
}
EXPORT_SYMBOL(lock_res_and_lock);
@@ -65,7 +65,7 @@ EXPORT_SYMBOL(lock_res_and_lock);
void unlock_res_and_lock(struct ldlm_lock *lock)
{
	/* on server-side resource of lock doesn't change */
	lock->l_flags &= ~LDLM_FL_RES_LOCKED;
	ldlm_clear_res_locked(lock);

	unlock_res(lock->l_resource);
	spin_unlock(&lock->l_lock);
+2 −2
Original line number Diff line number Diff line
@@ -75,12 +75,12 @@ __u64 ldlm_extent_shift_kms(struct ldlm_lock *lock, __u64 old_kms)
	 * just after we finish and take our lock into account in its
	 * calculation of the kms
	 */
	lock->l_flags |= LDLM_FL_KMS_IGNORE;
	ldlm_set_kms_ignore(lock);

	list_for_each(tmp, &res->lr_granted) {
		lck = list_entry(tmp, struct ldlm_lock, l_res_link);

		if (lck->l_flags & LDLM_FL_KMS_IGNORE)
		if (ldlm_is_kms_ignore(lck))
			continue;

		if (lck->l_policy_data.l_extent.end >= old_kms)
+5 −6
Original line number Diff line number Diff line
@@ -101,8 +101,7 @@ ldlm_flock_destroy(struct ldlm_lock *lock, enum ldlm_mode mode, __u64 flags)
	LASSERT(hlist_unhashed(&lock->l_exp_flock_hash));

	list_del_init(&lock->l_res_link);
	if (flags == LDLM_FL_WAIT_NOREPROC &&
	    !(lock->l_flags & LDLM_FL_FAILED)) {
	if (flags == LDLM_FL_WAIT_NOREPROC && !ldlm_is_failed(lock)) {
		/* client side - set a flag to prevent sending a CANCEL */
		lock->l_flags |= LDLM_FL_LOCAL_ONLY | LDLM_FL_CBPENDING;

@@ -436,7 +435,7 @@ ldlm_flock_interrupted_wait(void *data)
	lock_res_and_lock(lock);

	/* client side - set flag to prevent lock from being put on LRU list */
	lock->l_flags |= LDLM_FL_CBPENDING;
	ldlm_set_cbpending(lock);
	unlock_res_and_lock(lock);
}

@@ -520,7 +519,7 @@ ldlm_flock_completion_ast(struct ldlm_lock *lock, __u64 flags, void *data)
granted:
	OBD_FAIL_TIMEOUT(OBD_FAIL_LDLM_CP_CB_WAIT, 10);

	if (lock->l_flags & LDLM_FL_FAILED) {
	if (ldlm_is_failed(lock)) {
		LDLM_DEBUG(lock, "client-side enqueue waking up: failed");
		return -EIO;
	}
@@ -533,7 +532,7 @@ ldlm_flock_completion_ast(struct ldlm_lock *lock, __u64 flags, void *data)
	 * Protect against race where lock could have been just destroyed
	 * due to overlap in ldlm_process_flock_lock().
	 */
	if (lock->l_flags & LDLM_FL_DESTROYED) {
	if (ldlm_is_destroyed(lock)) {
		unlock_res_and_lock(lock);
		LDLM_DEBUG(lock, "client-side enqueue waking up: destroyed");
		return 0;
@@ -542,7 +541,7 @@ ldlm_flock_completion_ast(struct ldlm_lock *lock, __u64 flags, void *data)
	/* ldlm_lock_enqueue() has already placed lock on the granted list. */
	list_del_init(&lock->l_res_link);

	if (lock->l_flags & LDLM_FL_FLOCK_DEADLOCK) {
	if (ldlm_is_flock_deadlock(lock)) {
		LDLM_DEBUG(lock, "client-side enqueue deadlock received");
		rc = -EDEADLK;
	} else if (flags & LDLM_FL_TEST_LOCK) {
+4 −3
Original line number Diff line number Diff line
@@ -305,9 +305,10 @@ static inline int is_granted_or_cancelled(struct ldlm_lock *lock)
	int ret = 0;

	lock_res_and_lock(lock);
	if (((lock->l_req_mode == lock->l_granted_mode) &&
	     !(lock->l_flags & LDLM_FL_CP_REQD)) ||
	    (lock->l_flags & (LDLM_FL_FAILED | LDLM_FL_CANCEL)))
	if ((lock->l_req_mode == lock->l_granted_mode) &&
	     !ldlm_is_cp_reqd(lock))
		ret = 1;
	else if (ldlm_is_failed(lock) || ldlm_is_cancel(lock))
		ret = 1;
	unlock_res_and_lock(lock);

Loading