On Fri, 2016-06-10 at 16:54 -0600, Logan Gunthorpe wrote: > Instead of returning immediately with an error when the link is > down, wait for the link to come up (or the user sends a SIGINT). > > This is to make scripting ntb_perf easier. > > Signed-off-by: Logan Gunthorpe <logang@xxxxxxxxxxxx> Acked-by: Dave Jiang <dave.jiang@xxxxxxxxx> > --- > drivers/ntb/test/ntb_perf.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/ntb/test/ntb_perf.c > b/drivers/ntb/test/ntb_perf.c > index 05a8705..f0784e5 100644 > --- a/drivers/ntb/test/ntb_perf.c > +++ b/drivers/ntb/test/ntb_perf.c > @@ -135,6 +135,7 @@ struct perf_ctx { > bool link_is_up; > struct work_struct link_cleanup; > struct delayed_work link_work; > + wait_queue_head_t link_wq; > struct dentry *debugfs_node_dir; > struct dentry *debugfs_run; > struct dentry *debugfs_threads; > @@ -533,6 +534,7 @@ static void perf_link_work(struct work_struct > *work) > goto out1; > > perf->link_is_up = true; > + wake_up(&perf->link_wq); > > return; > > @@ -653,7 +655,7 @@ static ssize_t debugfs_run_write(struct file > *filp, const char __user *ubuf, > int node, i; > DECLARE_WAIT_QUEUE_HEAD(wq); > > - if (!perf->link_is_up) > + if (wait_event_interruptible(perf->link_wq, perf- > >link_is_up)) > return -ENOLINK; > > if (perf->perf_threads == 0) > @@ -783,6 +785,7 @@ static int perf_probe(struct ntb_client *client, > struct ntb_dev *ntb) > mutex_init(&perf->run_mutex); > spin_lock_init(&perf->db_lock); > perf_setup_mw(ntb, perf); > + init_waitqueue_head(&perf->link_wq); > INIT_DELAYED_WORK(&perf->link_work, perf_link_work); > INIT_WORK(&perf->link_cleanup, perf_link_cleanup); > > -- > 2.1.4 > ��.n��������+%������w��{.n�����{��K����n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�