Lines Matching refs:part
268 struct hd_struct *part = dev_to_part(dev);
270 add_uevent_var(env, "PARTN=%u", part->partno);
271 if (part->info && part->info->volname[0])
272 add_uevent_var(env, "PARTNAME=%s", part->info->volname);
285 struct hd_struct *part =
287 struct gendisk *disk = part_to_disk(part);
297 part->start_sect = 0;
298 part->nr_sects = 0;
299 part_stat_set_all(part, 0);
300 put_device(part_to_dev(part));
305 struct hd_struct *part = container_of(ref, struct hd_struct, ref);
306 struct gendisk *disk = part_to_disk(part);
312 INIT_RCU_WORK(&part->rcu_work, hd_struct_free_work);
313 queue_rcu_work(system_wq, &part->rcu_work);
316 int hd_ref_init(struct hd_struct *part)
318 if (percpu_ref_init(&part->ref, hd_struct_free, 0, GFP_KERNEL))
327 void delete_partition(struct hd_struct *part)
329 struct gendisk *disk = part_to_disk(part);
335 * ->part_tbl is referenced in this part's release handler, so
339 rcu_assign_pointer(ptbl->part[part->partno], NULL);
340 kobject_put(part->holder_dir);
341 device_del(part_to_dev(part));
349 blk_invalidate_devt(part_devt(part));
351 bdev = bdget_part(part);
356 percpu_ref_kill(&part->ref);
405 if (ptbl->part[partno])
480 rcu_assign_pointer(ptbl->part[partno], p);
508 struct hd_struct *part;
512 while ((part = disk_part_iter_next(&piter))) {
513 if (part->partno == skip_partno ||
514 start >= part->start_sect + part->nr_sects ||
515 start + length <= part->start_sect)
528 struct hd_struct *part;
543 part = add_partition(disk, partno, start, length,
545 ret = PTR_ERR_OR_ZERO(part);
554 struct hd_struct *part = NULL;
565 part = disk_get_part(bdev->bd_disk, partno);
566 if (!part)
576 delete_partition(part);
582 if (part)
583 disk_put_part(part);
591 struct hd_struct *part;
594 part = disk_get_part(bdev->bd_disk, partno);
595 if (!part)
599 bdevp = bdget_part(part);
607 if (start != part->start_sect)
614 part_nr_sects_write(part, length);
623 disk_put_part(part);
646 struct hd_struct *part;
655 while ((part = disk_part_iter_next(&piter)))
656 delete_partition(part);
671 struct hd_struct *part;
701 part = add_partition(disk, p, from, size, state->parts[p].flags,
703 if (IS_ERR(part) && PTR_ERR(part) != -ENXIO) {
705 disk->disk_name, p, -PTR_ERR(part));
711 md_autodetect_dev(part_to_dev(part)->devt);