@@ -23,11 +23,11 @@ struct plock_op {
2323 struct list_head list ;
2424 int done ;
2525 struct dlm_plock_info info ;
26+ int (* callback )(struct file_lock * fl , int result );
2627};
2728
2829struct plock_xop {
2930 struct plock_op xop ;
30- int (* callback )(struct file_lock * fl , int result );
3131 void * fl ;
3232 void * file ;
3333 struct file_lock flc ;
@@ -129,19 +129,18 @@ int dlm_posix_lock(dlm_lockspace_t *lockspace, u64 number, struct file *file,
129129 /* fl_owner is lockd which doesn't distinguish
130130 processes on the nfs client */
131131 op -> info .owner = (__u64 ) fl -> fl_pid ;
132- xop -> callback = fl -> fl_lmops -> lm_grant ;
132+ op -> callback = fl -> fl_lmops -> lm_grant ;
133133 locks_init_lock (& xop -> flc );
134134 locks_copy_lock (& xop -> flc , fl );
135135 xop -> fl = fl ;
136136 xop -> file = file ;
137137 } else {
138138 op -> info .owner = (__u64 )(long ) fl -> fl_owner ;
139- xop -> callback = NULL ;
140139 }
141140
142141 send_op (op );
143142
144- if (xop -> callback == NULL ) {
143+ if (! op -> callback ) {
145144 rv = wait_event_interruptible (recv_wq , (op -> done != 0 ));
146145 if (rv == - ERESTARTSYS ) {
147146 log_debug (ls , "dlm_posix_lock: wait killed %llx" ,
@@ -203,7 +202,7 @@ static int dlm_plock_callback(struct plock_op *op)
203202 file = xop -> file ;
204203 flc = & xop -> flc ;
205204 fl = xop -> fl ;
206- notify = xop -> callback ;
205+ notify = op -> callback ;
207206
208207 if (op -> info .rv ) {
209208 notify (fl , op -> info .rv );
@@ -436,10 +435,9 @@ static ssize_t dev_write(struct file *file, const char __user *u, size_t count,
436435 if (op -> info .fsid == info .fsid &&
437436 op -> info .number == info .number &&
438437 op -> info .owner == info .owner ) {
439- struct plock_xop * xop = (struct plock_xop * )op ;
440438 list_del_init (& op -> list );
441439 memcpy (& op -> info , & info , sizeof (info ));
442- if (xop -> callback )
440+ if (op -> callback )
443441 do_callback = 1 ;
444442 else
445443 op -> done = 1 ;
0 commit comments