Function report |
Source Code:block\partition-generic.c |
Create Date:2022-07-28 17:21:10 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:Must be called either with bd_mutex held, before a disk can be opened or* after all disk users are gone.
Proto:struct hd_struct *add_partition(struct gendisk *disk, int partno, sector_t start, sector_t len, int flags, struct partition_meta_info *info)
Type:struct hd_struct
Parameter:
Type | Parameter | Name |
---|---|---|
struct gendisk * | disk | |
int | partno | |
sector_t | start | |
sector_t | len | |
int | flags | |
struct partition_meta_info * | info |
318 | ddev = disk_to_dev(disk) |
329 | Case zoned == Host-managed zoned block device |
330 | pr_warn("%s: partitions not supported on host managed zoned block device\n", name of major driver ) |
333 | Case zoned == Host-aware zoned block device |
334 | pr_info("%s: disabling host aware zoned block device support due to partitions\n", name of major driver ) |
336 | zoned = Regular block device |
337 | Break |
338 | Case zoned == Regular block device |
339 | Break |
350 | p = kzalloc - allocate memory. The memory is set to zero.*@size: how many bytes of memory are required.*@flags: the type of memory to allocate (see kmalloc). |
354 | If Not init_part_stats(p) Then |
359 | seqcount_init( & nr_sects_seq) |
360 | pdev = part_to_dev(p) |
362 | start_sect = start |
363 | alignment_offset = queue_limit_alignment_offset( & limits, start) |
367 | * nr_sects is protected by sequence counter. One might extend a * partition while IO is happening to it and update of nr_sects * can be non-atomic on 32bit machines with 64bit sector_t. = len |
369 | policy = get_disk_ro(disk) |
371 | If info Then |
382 | If isdigit(dname[strlen - Find the length of a string*@s: The string to be sized - 1]) Then dev_set_name(pdev, "%sp%d", dname, partno) |
384 | Else dev_set_name(pdev, "%s%d", dname, partno) |
387 | device_initialize(pdev) |
388 | class = block_class |
392 | err = lk_alloc_devt - allocate a dev_t for a partition*@part: partition to allocate dev_t for*@devt: out parameter for resulting dev_t* Allocate a dev_t for block device |
393 | If err Then Go to out_free_info |
398 | dev_set_uevent_suppress(pdev, 1) |
399 | err = device_add(pdev) |
405 | If Not holder_dir Then Go to out_del |
408 | dev_set_uevent_suppress(pdev, 0) |
409 | If flags & ADDPART_FLAG_WHOLEDISK Then |
410 | err = device_create_file(pdev, & dev_attr_whole_disk) |
415 | err = hd_ref_init(p) |
416 | If err Then |
417 | If flags & ADDPART_FLAG_WHOLEDISK Then Go to out_remove_file |
419 | Go to out_del |
428 | Return p |
430 | out_free_info : |
431 | free_part_info(p) |
432 | out_free_stats : |
433 | free_part_stats(p) |
434 | out_free : |
437 | out_remove_file : |
439 | out_del : |
441 | device_del(pdev) |
442 | out_put : |
443 | put_device(pdev) |
Name | Describe |
---|---|
blk_add_partition |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |