forked from Minki/linux
3e83b65bb9
When an rbd image gets mapped a device entry gets created for it under /sys/bus/rbd/devices/<id>/. Inside that directory there are sysfs files that contain information about the image: its size, feature bits, major device number, and so on. Additionally, if that image has any snapshots, a device entry gets created for each of those as a "child" of the mapped device. Each of these is a subdirectory of the mapped device, and each directory contains a few files with information about the snapshot (its snapshot id, size, and feature mask). There is no clear benefit to having those device entries for the snapshots. The information provided via sysfs of of little real value--and all of it is available via rbd CLI commands. If we still wanted to see the kernel's view of this information it could be done much more simply by including it in a single sysfs file for the mapped image. But there *is* a clear cost to supporting them. Every time a snapshot context changes, these entries need to be updated (deleted snapshots removed, new snapshots created). The rbd driver is notified of changes to the snapshot context via callbacks from an osd, and care must be taken to coordinate removal of snapshot data structures with the possibility of one these notifications occurring. Things would be considerably simpler if we just didn't have to maintain device entries for the snapshots. So get rid of them. The ability to map a snapshot of an rbd image will remain; the only thing lost will be the ability to query these sysfs directories for information about snapshots of mapped images. This resolves: http://tracker.ceph.com/issues/4796 Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
73 lines
1.6 KiB
Plaintext
73 lines
1.6 KiB
Plaintext
What: /sys/bus/rbd/
|
|
Date: November 2010
|
|
Contact: Yehuda Sadeh <yehuda@newdream.net>,
|
|
Sage Weil <sage@newdream.net>
|
|
Description:
|
|
|
|
Being used for adding and removing rbd block devices.
|
|
|
|
Usage: <mon ip addr> <options> <pool name> <rbd image name> [snap name]
|
|
|
|
$ echo "192.168.0.1 name=admin rbd foo" > /sys/bus/rbd/add
|
|
|
|
The snapshot name can be "-" or omitted to map the image read/write. A <dev-id>
|
|
will be assigned for any registered block device. If snapshot is used, it will
|
|
be mapped read-only.
|
|
|
|
Removal of a device:
|
|
|
|
$ echo <dev-id> > /sys/bus/rbd/remove
|
|
|
|
Entries under /sys/bus/rbd/devices/<dev-id>/
|
|
--------------------------------------------
|
|
|
|
client_id
|
|
|
|
The ceph unique client id that was assigned for this specific session.
|
|
|
|
features
|
|
|
|
A hexadecimal encoding of the feature bits for this image.
|
|
|
|
major
|
|
|
|
The block device major number.
|
|
|
|
name
|
|
|
|
The name of the rbd image.
|
|
|
|
image_id
|
|
|
|
The unique id for the rbd image. (For rbd image format 1
|
|
this is empty.)
|
|
|
|
pool
|
|
|
|
The name of the storage pool where this rbd image resides.
|
|
An rbd image name is unique within its pool.
|
|
|
|
pool_id
|
|
|
|
The unique identifier for the rbd image's pool. This is
|
|
a permanent attribute of the pool. A pool's id will never
|
|
change.
|
|
|
|
size
|
|
|
|
The size (in bytes) of the mapped block device.
|
|
|
|
refresh
|
|
|
|
Writing to this file will reread the image header data and set
|
|
all relevant datastructures accordingly.
|
|
|
|
current_snap
|
|
|
|
The current snapshot for which the device is mapped.
|
|
|
|
parent
|
|
|
|
Information identifying the pool, image, and snapshot id for
|
|
the parent image in a layered rbd image (format 2 only).
|