[PATCH 1/2] Btrfs-progs: Add support for hot data ioctls

2010-08-12 Thread bchociej
From: Ben Chociej Add support for the new hot data functionality in-kernel. Three ioctls were added to export hot data statistics and turn hot data tracking on and off per inode. This patch enables btrfsctl to interact with those ioctls. Signed-off-by: Ben Chociej Signed-off-by: Matt Lupfer Te

[PATCH 2/2] Btrfs-progs: Add hot data support in mkfs

2010-08-12 Thread bchociej
From: Ben Chociej Modified mkfs.btrfs to add hot data relocation option (-h) which preallocates BTRFS_BLOCK_GROUP_DATA_SSD and BTRFS_BLOCK_GROUP_METADATA_SSD at mkfs time for future use by hot data relocation code. Also added a userspace function to detect whether a block device is an SSD by rea

[PATCH 0/2] Btrfs-progs: Add support for hot data migration

2010-08-12 Thread bchociej
This patch set introduces functionality into btrfsctl and mkfs.btrfs to support the kernel patches for hot data tracking and migration to SSD with Btrfs. New functionality includes a -h option to mkfs.btrfs to preallocate approrpiate block group types for SSD data migration, and also includes addit

[RFC v2 PATCH 3/6] Btrfs: Add hot data relocation facilities

2010-08-12 Thread bchociej
From: Ben Chociej The relocation code operates on the heat hash lists to identify hot or cold data logical file ranges that are candidates for relocation. The triggering mechanism for relocation is controlled by a global heat threshold integer value (fs_root->heat_threshold). Ranges are queued fo

[RFC v2 PATCH 5/6] Btrfs: 3 new ioctls related to hot data features

2010-08-12 Thread bchociej
From: Ben Chociej BTRFS_IOC_GET_HEAT_INFO: return a struct containing the various metrics collected in btrfs_freq_data structs, and also return a calculated data temperature based on those metrics. Optionally, retrieve the temperature from the hot data hash list instead of recalculating it. BTRF

[RFC v2 PATCH 4/6] Btrfs: Add debugfs interface for hot data stats

2010-08-12 Thread bchociej
From: Ben Chociej Add a /sys/kernel/debug/btrfs_data// directory for each volume that contains two files. The first, `inode_data', contains the heat information for inodes that have been brought into the hot data map structures. The second, `range_data', contains similar information for subfile r

[RFC v2 PATCH 2/6] Btrfs: Add data structures for hot data tracking

2010-08-12 Thread bchociej
From: Ben Chociej Adds hot_inode_tree and hot_range_tree structs to keep track of frequently accessed files and ranges within files. Trees contain hot_{inode,range}_items representing those files and ranges, each of which contains a btrfs_freq_data struct with its frequency of access metrics (num

[RFC v2 PATCH 6/6] Btrfs: Add hooks to enable hot data tracking

2010-08-12 Thread bchociej
From: Ben Chociej Miscellaneous features that implement hot data tracking, enable hot data migration to faster media, and generally make the hot data functions a bit more friendly. ctree.h: Add the root hot_inode_tree and heat hashlists. Defines some mount options and inode flags for turning all

[RFC v2 PATCH 1/6] Btrfs: Add experimental hot data hash list index

2010-08-12 Thread bchociej
From: Ben Chociej Adds a hash table structure to efficiently lookup the data temperature of a file. Also adds a function to calculate that temperature based on some metrics kept in custom frequency data structs (in the next patch). Signed-off-by: Ben Chociej Signed-off-by: Matt Lupfer Signed-o

[RFC v2 PATCH 0/6] Btrfs: Add hot data relocation functionality

2010-08-12 Thread bchociej
These patches are a replacement for our previous hot data tracking patches. They include some bugfixes as well as the previously promised hot data relocation code for moving frequently accessed data to SSD. Structurally, the patches are quite similar to the first set, with the notable addition of n

[RFC PATCH 2/5] Btrfs: Add data structures for hot data tracking

2010-07-27 Thread bchociej
From: Ben Chociej Adds hot_inode_tree and hot_range_tree structs to keep track of frequently accessed files and ranges within files. Trees contain hot_{inode,range}_items representing those files and ranges, each of which contains a btrfs_freq_data struct with its frequency of access metrics (num

[RFC PATCH 5/5] Btrfs: Add hooks to enable hot data tracking

2010-07-27 Thread bchociej
From: Ben Chociej Miscellaneous features that enable hot data tracking features, open the door for future hot data migration to faster media, and generally make the hot data functions a bit more friendly. ctree.h: Add the root hot_inode_tree and heat hashlists. Defines some mount options and ino

[RFC PATCH 3/5] Btrfs: 3 new ioctls related to hot data features

2010-07-27 Thread bchociej
From: Ben Chociej BTRFS_IOC_GET_HEAT_INFO: return a struct containing the various metrics collected in btrfs_freq_data structs, and also return a calculated data temperature based on those metrics. Optionally, retrieve the temperature from the hot data hash list instead of recalculating it. BTRF

[RFC PATCH 4/5] Btrfs: Add debugfs interface for hot data stats

2010-07-27 Thread bchociej
From: Ben Chociej Adds a ./btrfs_data// directory in the debugfs directory for each volume. The directory contains two files. The first, `inode_data', contains the heat information for inodes that have been brought into the hot data map structures. The second, `range_data', contains similar infor

[RFC PATCH 1/5] Btrfs: Add experimental hot data hash list index

2010-07-27 Thread bchociej
From: Ben Chociej Adds a hash table structure to efficiently lookup the data temperature of a file. Also adds a function to calculate that temperature based on some metrics kept in custom frequency data structs. Signed-off-by: Ben Chociej Signed-off-by: Matt Lupfer Signed-off-by: Conor Scott

[RFC PATCH 0/5] Btrfs: Add hot data tracking functionality

2010-07-27 Thread bchociej
INTRODUCTION: This patch series adds experimental support for tracking data temperature in Btrfs. Essentially, this means maintaining some key stats (like number of reads/writes, last read/write time, frequency of reads/writes), then distilling those numbers down to a single "temperature" value th