On Wed, Dec 06, 2006 at 10:47:46PM -0800, Marc Eshel wrote: > Here is a rewrite of gdlm_plock_callback(). We still need to add the > lock cancel. > Marc. > > int gdlm_plock_callback(struct plock_op *op) > { > struct file *file; > struct file_lock *fl; > int (*notify)(void *, void *, int) = NULL; > int rv; > > spin_lock(&ops_lock); > if (!list_empty(&op->list)) { > printk(KERN_INFO "plock op on list\n"); > list_del(&op->list); > } > spin_unlock(&ops_lock); > > rv = op->info.rv; > > /* check if the following 2 are still valid or make a copy */ > file = op->info.file; > fl = op->info.fl; > notify = op->info.callback; > > if (!rv) { /* got fs lock */ > rv = posix_lock_file(file, fl); > if (rv) { /* did not get posix lock */ If we never request the local lock until after we've gotten the lock from GFS, then this should never happen. So I think this could just be a BUG_ON(rv)--except that would mean a failure in the lock manager could oops the kernel, so maybe it'd be better just to printk. --b. - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html