Generic Block Device Capability

This file documents the sysfs file block/<disk>/capability.

capability is a bitfield, printed in hexadecimal, indicating which capabilities a specific block device supports:

genhd capability flags

GENHD_FL_REMOVABLE: indicates that the block device gives access to removable media. When set, the device remains present even when media is not inserted. Shall not be set for devices which are removed entirely when the media is removed.

GENHD_FL_HIDDEN: the block device is hidden; it doesn’t produce events, doesn’t appear in sysfs, and can’t be opened from userspace or using blkdev_get*. Used for the underlying components of multipath devices.

GENHD_FL_NO_PART: partition support is disabled. The kernel will not scan for partitions from add_disk, and users can’t add partitions manually.

unsigned int disk_openers(struct gendisk *disk)

returns how many openers are there for a disk


struct gendisk *disk

disk to check


This returns the number of openers for a disk. Note that this value is only stable if disk->open_mutex is held.


Due to a quirk in the block layer open code, each open partition is only counted once even if there are multiple openers.


blk_alloc_disk (node_id)

allocate a gendisk structure



numa node to allocate on


Allocate and pre-initialize a gendisk structure for use with BIO based drivers.


can sleep

void bio_end_io_acct(struct bio *bio, unsigned long start_time)

end I/O accounting for bio based drivers


struct bio *bio

bio to end account for

unsigned long start_time

start time returned by bio_start_io_acct()