Lines Matching +full:attr +full:- +full:cnt +full:- +full:name

1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * Copyright (c) 2014 - 2018 ProfitBricks GmbH. All rights reserved.
6 * Copyright (c) 2018 - 2019 1&1 IONOS Cloud GmbH. All rights reserved.
7 * Copyright (c) 2019 - 2020 1&1 IONOS SE. All rights reserved.
12 #include "rtrs-pri.h"
13 #include "rtrs-srv.h"
14 #include "rtrs-log.h"
30 struct kobj_attribute *attr, char *buf) in rtrs_srv_disconnect_show() argument
32 return sysfs_emit(buf, "Usage: echo 1 > %s\n", attr->attr.name); in rtrs_srv_disconnect_show()
36 struct kobj_attribute *attr, in rtrs_srv_disconnect_store() argument
44 s = &srv_path->s; in rtrs_srv_disconnect_store()
47 attr->attr.name, buf); in rtrs_srv_disconnect_store()
48 return -EINVAL; in rtrs_srv_disconnect_store()
51 sockaddr_to_str((struct sockaddr *)&srv_path->s.dst_addr, str, in rtrs_srv_disconnect_store()
56 sysfs_remove_file_self(&srv_path->kobj, &attr->attr); in rtrs_srv_disconnect_store()
67 struct kobj_attribute *attr, in rtrs_srv_hca_port_show() argument
74 usr_con = srv_path->s.con[0]; in rtrs_srv_hca_port_show()
76 return sysfs_emit(page, "%u\n", usr_con->cm_id->port_num); in rtrs_srv_hca_port_show()
83 struct kobj_attribute *attr, in rtrs_srv_hca_name_show() argument
90 return sysfs_emit(page, "%s\n", srv_path->s.dev->ib_dev->name); in rtrs_srv_hca_name_show()
97 struct kobj_attribute *attr, in rtrs_srv_src_addr_show() argument
101 int cnt; in rtrs_srv_src_addr_show() local
104 cnt = sockaddr_to_str((struct sockaddr *)&srv_path->s.dst_addr, in rtrs_srv_src_addr_show()
106 return cnt + sysfs_emit_at(page, cnt, "\n"); in rtrs_srv_src_addr_show()
113 struct kobj_attribute *attr, in rtrs_srv_dst_addr_show() argument
120 len = sockaddr_to_str((struct sockaddr *)&srv_path->s.src_addr, page, in rtrs_srv_dst_addr_show()
130 &rtrs_srv_hca_name_attr.attr,
131 &rtrs_srv_hca_port_attr.attr,
132 &rtrs_srv_src_addr_attr.attr,
133 &rtrs_srv_dst_addr_attr.attr,
134 &rtrs_srv_disconnect_attr.attr,
147 &rdma_attr.attr,
157 struct rtrs_srv_sess *srv = srv_path->srv; in rtrs_srv_create_once_sysfs_root_folders()
160 mutex_lock(&srv->paths_mutex); in rtrs_srv_create_once_sysfs_root_folders()
161 if (srv->dev_ref++) { in rtrs_srv_create_once_sysfs_root_folders()
167 srv->dev.class = &rtrs_dev_class; in rtrs_srv_create_once_sysfs_root_folders()
168 err = dev_set_name(&srv->dev, "%s", srv_path->s.sessname); in rtrs_srv_create_once_sysfs_root_folders()
176 dev_set_uevent_suppress(&srv->dev, true); in rtrs_srv_create_once_sysfs_root_folders()
177 err = device_add(&srv->dev); in rtrs_srv_create_once_sysfs_root_folders()
180 put_device(&srv->dev); in rtrs_srv_create_once_sysfs_root_folders()
183 srv->kobj_paths = kobject_create_and_add("paths", &srv->dev.kobj); in rtrs_srv_create_once_sysfs_root_folders()
184 if (!srv->kobj_paths) { in rtrs_srv_create_once_sysfs_root_folders()
185 err = -ENOMEM; in rtrs_srv_create_once_sysfs_root_folders()
187 device_del(&srv->dev); in rtrs_srv_create_once_sysfs_root_folders()
188 put_device(&srv->dev); in rtrs_srv_create_once_sysfs_root_folders()
191 dev_set_uevent_suppress(&srv->dev, false); in rtrs_srv_create_once_sysfs_root_folders()
192 kobject_uevent(&srv->dev.kobj, KOBJ_ADD); in rtrs_srv_create_once_sysfs_root_folders()
194 mutex_unlock(&srv->paths_mutex); in rtrs_srv_create_once_sysfs_root_folders()
202 struct rtrs_srv_sess *srv = srv_path->srv; in rtrs_srv_destroy_once_sysfs_root_folders()
204 mutex_lock(&srv->paths_mutex); in rtrs_srv_destroy_once_sysfs_root_folders()
205 if (!--srv->dev_ref) { in rtrs_srv_destroy_once_sysfs_root_folders()
206 kobject_put(srv->kobj_paths); in rtrs_srv_destroy_once_sysfs_root_folders()
207 mutex_unlock(&srv->paths_mutex); in rtrs_srv_destroy_once_sysfs_root_folders()
208 device_del(&srv->dev); in rtrs_srv_destroy_once_sysfs_root_folders()
209 put_device(&srv->dev); in rtrs_srv_destroy_once_sysfs_root_folders()
211 put_device(&srv->dev); in rtrs_srv_destroy_once_sysfs_root_folders()
212 mutex_unlock(&srv->paths_mutex); in rtrs_srv_destroy_once_sysfs_root_folders()
222 free_percpu(stats->rdma_stats); in rtrs_srv_path_stats_release()
235 struct rtrs_path *s = &srv_path->s; in rtrs_srv_create_stats_files()
237 err = kobject_init_and_add(&srv_path->stats->kobj_stats, &ktype_stats, in rtrs_srv_create_stats_files()
238 &srv_path->kobj, "stats"); in rtrs_srv_create_stats_files()
241 kobject_put(&srv_path->stats->kobj_stats); in rtrs_srv_create_stats_files()
244 err = sysfs_create_group(&srv_path->stats->kobj_stats, in rtrs_srv_create_stats_files()
254 kobject_del(&srv_path->stats->kobj_stats); in rtrs_srv_create_stats_files()
255 kobject_put(&srv_path->stats->kobj_stats); in rtrs_srv_create_stats_files()
262 struct rtrs_srv_sess *srv = srv_path->srv; in rtrs_srv_create_path_files()
263 struct rtrs_path *s = &srv_path->s; in rtrs_srv_create_path_files()
267 .src = &srv_path->s.dst_addr, in rtrs_srv_create_path_files()
268 .dst = &srv_path->s.src_addr, in rtrs_srv_create_path_files()
276 err = kobject_init_and_add(&srv_path->kobj, &ktype, srv->kobj_paths, in rtrs_srv_create_path_files()
282 err = sysfs_create_group(&srv_path->kobj, &rtrs_srv_path_attr_group); in rtrs_srv_create_path_files()
294 sysfs_remove_group(&srv_path->kobj, &rtrs_srv_path_attr_group); in rtrs_srv_create_path_files()
296 kobject_del(&srv_path->kobj); in rtrs_srv_create_path_files()
298 kobject_put(&srv_path->kobj); in rtrs_srv_create_path_files()
306 if (srv_path->stats->kobj_stats.state_in_sysfs) { in rtrs_srv_destroy_path_files()
307 sysfs_remove_group(&srv_path->stats->kobj_stats, in rtrs_srv_destroy_path_files()
309 kobject_del(&srv_path->stats->kobj_stats); in rtrs_srv_destroy_path_files()
310 kobject_put(&srv_path->stats->kobj_stats); in rtrs_srv_destroy_path_files()
313 if (srv_path->kobj.state_in_sysfs) { in rtrs_srv_destroy_path_files()
314 sysfs_remove_group(&srv_path->kobj, &rtrs_srv_path_attr_group); in rtrs_srv_destroy_path_files()
315 kobject_put(&srv_path->kobj); in rtrs_srv_destroy_path_files()