forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Pull linus#master to merge PER_CPU_DEF_ATTRIBUTES and alpha build fix changes. As alpha in percpu tree uses 'weak' attribute instead of inline assembly, there's no need for __used attribute. Conflicts: arch/alpha/include/asm/percpu.h arch/mn10300/kernel/vmlinux.lds.S include/linux/percpu-defs.h
- Loading branch information
Showing
1,365 changed files
with
55,248 additions
and
17,552 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -122,3 +122,10 @@ Description: | |
This symbolic link appears when a device is a Virtual Function. | ||
The symbolic link points to the PCI device sysfs entry of the | ||
Physical Function this device associates with. | ||
|
||
What: /sys/bus/pci/slots/.../module | ||
Date: June 2009 | ||
Contact: [email protected] | ||
Description: | ||
This symbolic link points to the PCI hotplug controller driver | ||
module that manages the hotplug slot. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
What: /sys/class/mtd/ | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
The mtd/ class subdirectory belongs to the MTD subsystem | ||
(MTD core). | ||
|
||
What: /sys/class/mtd/mtdX/ | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
The /sys/class/mtd/mtd{0,1,2,3,...} directories correspond | ||
to each /dev/mtdX character device. These may represent | ||
physical/simulated flash devices, partitions on a flash | ||
device, or concatenated flash devices. They exist regardless | ||
of whether CONFIG_MTD_CHAR is actually enabled. | ||
|
||
What: /sys/class/mtd/mtdXro/ | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
These directories provide the corresponding read-only device | ||
nodes for /sys/class/mtd/mtdX/ . They are only created | ||
(for the benefit of udev) if CONFIG_MTD_CHAR is enabled. | ||
|
||
What: /sys/class/mtd/mtdX/dev | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
Major and minor numbers of the character device corresponding | ||
to this MTD device (in <major>:<minor> format). This is the | ||
read-write device so <minor> will be even. | ||
|
||
What: /sys/class/mtd/mtdXro/dev | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
Major and minor numbers of the character device corresponding | ||
to the read-only variant of thie MTD device (in | ||
<major>:<minor> format). In this case <minor> will be odd. | ||
|
||
What: /sys/class/mtd/mtdX/erasesize | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
"Major" erase size for the device. If numeraseregions is | ||
zero, this is the eraseblock size for the entire device. | ||
Otherwise, the MEMGETREGIONCOUNT/MEMGETREGIONINFO ioctls | ||
can be used to determine the actual eraseblock layout. | ||
|
||
What: /sys/class/mtd/mtdX/flags | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
A hexadecimal value representing the device flags, ORed | ||
together: | ||
|
||
0x0400: MTD_WRITEABLE - device is writable | ||
0x0800: MTD_BIT_WRITEABLE - single bits can be flipped | ||
0x1000: MTD_NO_ERASE - no erase necessary | ||
0x2000: MTD_POWERUP_LOCK - always locked after reset | ||
|
||
What: /sys/class/mtd/mtdX/name | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
A human-readable ASCII name for the device or partition. | ||
This will match the name in /proc/mtd . | ||
|
||
What: /sys/class/mtd/mtdX/numeraseregions | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
For devices that have variable eraseblock sizes, this | ||
provides the total number of erase regions. Otherwise, | ||
it will read back as zero. | ||
|
||
What: /sys/class/mtd/mtdX/oobsize | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
Number of OOB bytes per page. | ||
|
||
What: /sys/class/mtd/mtdX/size | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
Total size of the device/partition, in bytes. | ||
|
||
What: /sys/class/mtd/mtdX/type | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
One of the following ASCII strings, representing the device | ||
type: | ||
|
||
absent, ram, rom, nor, nand, dataflash, ubi, unknown | ||
|
||
What: /sys/class/mtd/mtdX/writesize | ||
Date: April 2009 | ||
KernelVersion: 2.6.29 | ||
Contact: [email protected] | ||
Description: | ||
Minimal writable flash unit size. This will always be | ||
a positive integer. | ||
|
||
In the case of NOR flash it is 1 (even though individual | ||
bits can be cleared). | ||
|
||
In the case of NAND flash it is one NAND page (or a | ||
half page, or a quarter page). | ||
|
||
In the case of ECC NOR, it is the ECC block size. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
Device-Mapper Logging | ||
===================== | ||
The device-mapper logging code is used by some of the device-mapper | ||
RAID targets to track regions of the disk that are not consistent. | ||
A region (or portion of the address space) of the disk may be | ||
inconsistent because a RAID stripe is currently being operated on or | ||
a machine died while the region was being altered. In the case of | ||
mirrors, a region would be considered dirty/inconsistent while you | ||
are writing to it because the writes need to be replicated for all | ||
the legs of the mirror and may not reach the legs at the same time. | ||
Once all writes are complete, the region is considered clean again. | ||
|
||
There is a generic logging interface that the device-mapper RAID | ||
implementations use to perform logging operations (see | ||
dm_dirty_log_type in include/linux/dm-dirty-log.h). Various different | ||
logging implementations are available and provide different | ||
capabilities. The list includes: | ||
|
||
Type Files | ||
==== ===== | ||
disk drivers/md/dm-log.c | ||
core drivers/md/dm-log.c | ||
userspace drivers/md/dm-log-userspace* include/linux/dm-log-userspace.h | ||
|
||
The "disk" log type | ||
------------------- | ||
This log implementation commits the log state to disk. This way, the | ||
logging state survives reboots/crashes. | ||
|
||
The "core" log type | ||
------------------- | ||
This log implementation keeps the log state in memory. The log state | ||
will not survive a reboot or crash, but there may be a small boost in | ||
performance. This method can also be used if no storage device is | ||
available for storing log state. | ||
|
||
The "userspace" log type | ||
------------------------ | ||
This log type simply provides a way to export the log API to userspace, | ||
so log implementations can be done there. This is done by forwarding most | ||
logging requests to userspace, where a daemon receives and processes the | ||
request. | ||
|
||
The structure used for communication between kernel and userspace are | ||
located in include/linux/dm-log-userspace.h. Due to the frequency, | ||
diversity, and 2-way communication nature of the exchanges between | ||
kernel and userspace, 'connector' is used as the interface for | ||
communication. | ||
|
||
There are currently two userspace log implementations that leverage this | ||
framework - "clustered_disk" and "clustered_core". These implementations | ||
provide a cluster-coherent log for shared-storage. Device-mapper mirroring | ||
can be used in a shared-storage environment when the cluster log implementations | ||
are employed. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
dm-queue-length | ||
=============== | ||
|
||
dm-queue-length is a path selector module for device-mapper targets, | ||
which selects a path with the least number of in-flight I/Os. | ||
The path selector name is 'queue-length'. | ||
|
||
Table parameters for each path: [<repeat_count>] | ||
<repeat_count>: The number of I/Os to dispatch using the selected | ||
path before switching to the next path. | ||
If not given, internal default is used. To check | ||
the default value, see the activated table. | ||
|
||
Status for each path: <status> <fail-count> <in-flight> | ||
<status>: 'A' if the path is active, 'F' if the path is failed. | ||
<fail-count>: The number of path failures. | ||
<in-flight>: The number of in-flight I/Os on the path. | ||
|
||
|
||
Algorithm | ||
========= | ||
|
||
dm-queue-length increments/decrements 'in-flight' when an I/O is | ||
dispatched/completed respectively. | ||
dm-queue-length selects a path with the minimum 'in-flight'. | ||
|
||
|
||
Examples | ||
======== | ||
In case that 2 paths (sda and sdb) are used with repeat_count == 128. | ||
|
||
# echo "0 10 multipath 0 0 1 1 queue-length 0 2 1 8:0 128 8:16 128" \ | ||
dmsetup create test | ||
# | ||
# dmsetup table | ||
test: 0 10 multipath 0 0 1 1 queue-length 0 2 1 8:0 128 8:16 128 | ||
# | ||
# dmsetup status | ||
test: 0 10 multipath 2 0 0 0 1 1 E 0 2 1 8:0 A 0 0 8:16 A 0 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
dm-service-time | ||
=============== | ||
|
||
dm-service-time is a path selector module for device-mapper targets, | ||
which selects a path with the shortest estimated service time for | ||
the incoming I/O. | ||
|
||
The service time for each path is estimated by dividing the total size | ||
of in-flight I/Os on a path with the performance value of the path. | ||
The performance value is a relative throughput value among all paths | ||
in a path-group, and it can be specified as a table argument. | ||
|
||
The path selector name is 'service-time'. | ||
|
||
Table parameters for each path: [<repeat_count> [<relative_throughput>]] | ||
<repeat_count>: The number of I/Os to dispatch using the selected | ||
path before switching to the next path. | ||
If not given, internal default is used. To check | ||
the default value, see the activated table. | ||
<relative_throughput>: The relative throughput value of the path | ||
among all paths in the path-group. | ||
The valid range is 0-100. | ||
If not given, minimum value '1' is used. | ||
If '0' is given, the path isn't selected while | ||
other paths having a positive value are available. | ||
|
||
Status for each path: <status> <fail-count> <in-flight-size> \ | ||
<relative_throughput> | ||
<status>: 'A' if the path is active, 'F' if the path is failed. | ||
<fail-count>: The number of path failures. | ||
<in-flight-size>: The size of in-flight I/Os on the path. | ||
<relative_throughput>: The relative throughput value of the path | ||
among all paths in the path-group. | ||
|
||
|
||
Algorithm | ||
========= | ||
|
||
dm-service-time adds the I/O size to 'in-flight-size' when the I/O is | ||
dispatched and substracts when completed. | ||
Basically, dm-service-time selects a path having minimum service time | ||
which is calculated by: | ||
|
||
('in-flight-size' + 'size-of-incoming-io') / 'relative_throughput' | ||
|
||
However, some optimizations below are used to reduce the calculation | ||
as much as possible. | ||
|
||
1. If the paths have the same 'relative_throughput', skip | ||
the division and just compare the 'in-flight-size'. | ||
|
||
2. If the paths have the same 'in-flight-size', skip the division | ||
and just compare the 'relative_throughput'. | ||
|
||
3. If some paths have non-zero 'relative_throughput' and others | ||
have zero 'relative_throughput', ignore those paths with zero | ||
'relative_throughput'. | ||
|
||
If such optimizations can't be applied, calculate service time, and | ||
compare service time. | ||
If calculated service time is equal, the path having maximum | ||
'relative_throughput' may be better. So compare 'relative_throughput' | ||
then. | ||
|
||
|
||
Examples | ||
======== | ||
In case that 2 paths (sda and sdb) are used with repeat_count == 128 | ||
and sda has an average throughput 1GB/s and sdb has 4GB/s, | ||
'relative_throughput' value may be '1' for sda and '4' for sdb. | ||
|
||
# echo "0 10 multipath 0 0 1 1 service-time 0 2 2 8:0 128 1 8:16 128 4" \ | ||
dmsetup create test | ||
# | ||
# dmsetup table | ||
test: 0 10 multipath 0 0 1 1 service-time 0 2 2 8:0 128 1 8:16 128 4 | ||
# | ||
# dmsetup status | ||
test: 0 10 multipath 2 0 0 0 1 1 E 0 2 2 8:0 A 0 0 1 8:16 A 0 0 4 | ||
|
||
|
||
Or '2' for sda and '8' for sdb would be also true. | ||
|
||
# echo "0 10 multipath 0 0 1 1 service-time 0 2 2 8:0 128 2 8:16 128 8" \ | ||
dmsetup create test | ||
# | ||
# dmsetup table | ||
test: 0 10 multipath 0 0 1 1 service-time 0 2 2 8:0 128 2 8:16 128 8 | ||
# | ||
# dmsetup status | ||
test: 0 10 multipath 2 0 0 0 1 1 E 0 2 2 8:0 A 0 0 2 8:16 A 0 0 8 |
Oops, something went wrong.