[Ocfs2-devel] Is ocfs2_create_new_lock() broken?

Joel Becker Joel.Becker at oracle.com
Thu Jan 29 15:56:45 PST 2009


Quick question:
	In ocfs2_create_new_inode_locks(), we claim:

1436         /*
1437          * We don't want to use DLM_LKF_LOCAL on a meta data lock as they
1438          * don't use a generation in their lock names.
1439          */
1440         ret = ocfs2_create_new_lock(osb, &OCFS2_I(inode)->ip_inode_lockres, 1, 0);

Ass you can see, we pass '0' for the 'local' argument to
ocfs2_create_new_lock().
	ocfs2_create_new_lock() certainly sets lkm_flags based on the
'local' argument.  But then it calls lockres_or_flags() with the
explicit flag, not with lkm_flags.  Is this wrong?

1387 static int ocfs2_create_new_lock(struct ocfs2_super *osb,
1388                                  struct ocfs2_lock_res *lockres,
1389                                  int ex,
1390                                  int local)
1391 {
1392         int level =  ex ? DLM_LOCK_EX : DLM_LOCK_PR;
1393         unsigned long flags;
1394         u32 lkm_flags = local ? DLM_LKF_LOCAL : 0;
1395 
1396         spin_lock_irqsave(&lockres->l_lock, flags);
1397         BUG_ON(lockres->l_flags & OCFS2_LOCK_ATTACHED);
1398         lockres_or_flags(lockres, OCFS2_LOCK_LOCAL);
1399         spin_unlock_irqrestore(&lockres->l_lock, flags);
1400 
1401         return ocfs2_lock_create(osb, lockres, level, lkm_flags);
1402 }

Joel

-- 

"Egotist: a person more interested in himself than in me."
         - Ambrose Bierce 

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127



More information about the Ocfs2-devel mailing list