Lines Matching defs:hc
115 struct hash_cell *hc;
118 list_for_each_entry (hc, _name_buckets + h, name_list)
119 if (!strcmp(hc->name, str)) {
120 dm_get(hc->md);
121 return hc;
129 struct hash_cell *hc;
132 list_for_each_entry (hc, _uuid_buckets + h, uuid_list)
133 if (!strcmp(hc->uuid, str)) {
134 dm_get(hc->md);
135 return hc;
144 struct hash_cell *hc;
150 hc = dm_get_mdptr(md);
151 if (!hc) {
156 return hc;
165 struct hash_cell *hc;
167 hc = kmalloc(sizeof(*hc), GFP_KERNEL);
168 if (!hc)
171 hc->name = kstrdup(name, GFP_KERNEL);
172 if (!hc->name) {
173 kfree(hc);
178 hc->uuid = NULL;
181 hc->uuid = kstrdup(uuid, GFP_KERNEL);
182 if (!hc->uuid) {
183 kfree(hc->name);
184 kfree(hc);
189 INIT_LIST_HEAD(&hc->name_list);
190 INIT_LIST_HEAD(&hc->uuid_list);
191 hc->md = md;
192 hc->new_map = NULL;
193 return hc;
196 static void free_cell(struct hash_cell *hc)
198 if (hc) {
199 kfree(hc->name);
200 kfree(hc->uuid);
201 kfree(hc);
211 struct hash_cell *cell, *hc;
224 hc = __get_name_cell(name);
225 if (hc) {
226 dm_put(hc->md);
233 hc = __get_uuid_cell(uuid);
234 if (hc) {
236 dm_put(hc->md);
255 static struct dm_table *__hash_remove(struct hash_cell *hc)
261 list_del(&hc->uuid_list);
262 list_del(&hc->name_list);
264 dm_set_mdptr(hc->md, NULL);
267 table = dm_get_live_table(hc->md, &srcu_idx);
270 dm_put_live_table(hc->md, srcu_idx);
273 if (hc->new_map)
274 table = hc->new_map;
275 dm_put(hc->md);
276 free_cell(hc);
284 struct hash_cell *hc;
294 list_for_each_entry(hc, _name_buckets + i, name_list) {
295 md = hc->md;
305 t = __hash_remove(hc);
338 static void __set_cell_uuid(struct hash_cell *hc, char *new_uuid)
341 hc->uuid = new_uuid;
344 list_add(&hc->uuid_list, _uuid_buckets + hash_str(new_uuid));
351 static char *__change_cell_name(struct hash_cell *hc, char *new_name)
358 list_del(&hc->name_list);
359 old_name = hc->name;
362 hc->name = new_name;
365 list_add(&hc->name_list, _name_buckets + hash_str(new_name));
374 struct hash_cell *hc;
393 hc = __get_uuid_cell(new);
395 hc = __get_name_cell(new);
397 if (hc) {
402 dm_put(hc->md);
411 hc = __get_name_cell(param->name);
412 if (!hc) {
423 if (change_uuid && hc->uuid) {
426 param->name, new, hc->uuid);
427 dm_put(hc->md);
434 __set_cell_uuid(hc, new_data);
436 old_name = __change_cell_name(hc, new_data);
441 table = dm_get_live_table(hc->md, &srcu_idx);
444 dm_put_live_table(hc->md, srcu_idx);
446 if (!dm_kobject_uevent(hc->md, KOBJ_CHANGE, param->event_nr))
449 md = hc->md;
510 struct hash_cell *hc;
523 list_for_each_entry (hc, _name_buckets + i, name_list) {
524 needed += align_val(offsetof(struct dm_name_list, name) + strlen(hc->name) + 1);
545 list_for_each_entry (hc, _name_buckets + i, name_list) {
549 disk = dm_disk(hc->md);
552 strcpy(nl->name, hc->name);
555 event_nr = align_ptr(nl->name + strlen(hc->name) + 1);
556 *event_nr = dm_get_event_nr(hc->md);
685 struct hash_cell *hc;
692 hc = dm_get_mdptr(md);
693 if (!hc || hc->md != md) {
698 table = hc->new_map;
809 struct hash_cell *hc = NULL;
815 hc = __get_uuid_cell(param->uuid);
816 if (!hc)
822 hc = __get_name_cell(param->name);
823 if (!hc)
826 hc = __get_dev_cell(param->dev);
827 if (!hc)
836 strlcpy(param->name, hc->name, sizeof(param->name));
837 if (hc->uuid)
838 strlcpy(param->uuid, hc->uuid, sizeof(param->uuid));
842 if (hc->new_map)
847 return hc;
852 struct hash_cell *hc;
856 hc = __find_device_hash_cell(param);
857 if (hc)
858 md = hc->md;
866 struct hash_cell *hc;
872 hc = __find_device_hash_cell(param);
874 if (!hc) {
880 md = hc->md;
892 DMDEBUG_LIMIT("unable to remove open device %s", hc->name);
898 t = __hash_remove(hc);
1039 struct hash_cell *hc;
1045 hc = __find_device_hash_cell(param);
1046 if (!hc) {
1052 md = hc->md;
1054 new_map = hc->new_map;
1055 hc->new_map = NULL;
1333 struct hash_cell *hc;
1383 hc = dm_get_mdptr(md);
1384 if (!hc || hc->md != md) {
1391 if (hc->new_map)
1392 old_map = hc->new_map;
1393 hc->new_map = t;
1420 struct hash_cell *hc;
1426 hc = __find_device_hash_cell(param);
1427 if (!hc) {
1433 if (hc->new_map) {
1434 old_map = hc->new_map;
1435 hc->new_map = NULL;
1438 md = hc->md;
2030 struct hash_cell *hc;
2036 hc = dm_get_mdptr(md);
2037 if (!hc || hc->md != md) {
2043 strcpy(name, hc->name);
2045 strcpy(uuid, hc->uuid ? : "");