Re: [PATCH rdma-next 03/16] RDMA/restrack: Add an API to attach a task to a resource

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01-Apr-19 11:47, Leon Romanovsky wrote:
> From: Mark Zhang <markz@xxxxxxxxxxxx>
> 
> Add rdma_restrack_attach_task() which is able to attach a task
> other then "current" to a resource.
> 
> Signed-off-by: Mark Zhang <markz@xxxxxxxxxxxx>
> Reviewed-by: Majd Dibbiny <majd@xxxxxxxxxxxx>
> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> ---
>  drivers/infiniband/core/restrack.c | 14 ++++++++++++++
>  drivers/infiniband/core/restrack.h |  2 ++
>  2 files changed, 16 insertions(+)
> 
> diff --git a/drivers/infiniband/core/restrack.c b/drivers/infiniband/core/restrack.c
> index 95573f292aae..3714634ae296 100644
> --- a/drivers/infiniband/core/restrack.c
> +++ b/drivers/infiniband/core/restrack.c
> @@ -194,6 +194,20 @@ void rdma_restrack_set_task(struct rdma_restrack_entry *res,
>  }
>  EXPORT_SYMBOL(rdma_restrack_set_task);
>  
> +/**
> + * rdma_restrack_attach_task() - attach the task onto this resource
> + * @res:  resource entry
> + * @task: the task to attach, the current task will be used if it is NULL.
> + */
> +void rdma_restrack_attach_task(struct rdma_restrack_entry *res,
> +			       struct task_struct *task)
> +{
> +	if (res->task)
> +		put_task_struct(res->task);
> +	get_task_struct(task);
> +	res->task = task;
> +}

Don't we need a detach API as well?

> +
>  static void rdma_restrack_add(struct rdma_restrack_entry *res)
>  {
>  	struct ib_device *dev = res_to_dev(res);
> diff --git a/drivers/infiniband/core/restrack.h b/drivers/infiniband/core/restrack.h
> index 09a1fbdf578e..d084e5f89849 100644
> --- a/drivers/infiniband/core/restrack.h
> +++ b/drivers/infiniband/core/restrack.h
> @@ -25,4 +25,6 @@ struct rdma_restrack_root {
>  
>  int rdma_restrack_init(struct ib_device *dev);
>  void rdma_restrack_clean(struct ib_device *dev);
> +void rdma_restrack_attach_task(struct rdma_restrack_entry *res,
> +			       struct task_struct *task);
>  #endif /* _RDMA_CORE_RESTRACK_H_ */
> 




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux