cregit-Linux how code gets into the kernel

Release 4.12 include/linux/raid_class.h

Directory: include/linux
/*
 * raid_class.h - a generic raid visualisation class
 *
 * Copyright (c) 2005 - James Bottomley <James.Bottomley@steeleye.com>
 *
 * This file is licensed under GPLv2
 */
#include <linux/transport_class.h>


struct raid_template {
	
struct transport_container raid_attrs;
};


struct raid_function_template {
	
void *cookie;
	
int (*is_raid)(struct device *);
	
void (*get_resync)(struct device *);
	
void (*get_state)(struct device *);
};


enum raid_state {
	
RAID_STATE_UNKNOWN = 0,
	
RAID_STATE_ACTIVE,
	
RAID_STATE_DEGRADED,
	
RAID_STATE_RESYNCING,
	
RAID_STATE_OFFLINE,
};


enum raid_level {
	
RAID_LEVEL_UNKNOWN = 0,
	
RAID_LEVEL_LINEAR,
	
RAID_LEVEL_0,
	
RAID_LEVEL_1,
	
RAID_LEVEL_10,
	
RAID_LEVEL_1E,
	
RAID_LEVEL_3,
	
RAID_LEVEL_4,
	
RAID_LEVEL_5,
	
RAID_LEVEL_50,
	
RAID_LEVEL_6,
};


struct raid_data {
	
struct list_head component_list;
	
int component_count;
	
enum raid_level level;
	
enum raid_state state;
	
int resync;
};

/* resync complete goes from 0 to this */

#define RAID_MAX_RESYNC		(10000)


#define DEFINE_RAID_ATTRIBUTE(type, attr)				      \
static inline void                                                            \
raid_set_##attr(struct raid_template *r, struct device *dev, type value) {    \
        struct device *device =                                               \
                attribute_container_find_class_device(&r->raid_attrs.ac, dev);\
        struct raid_data *rd;                                                 \
        BUG_ON(!device);                                                      \
        rd = dev_get_drvdata(device);                                         \
        rd->attr = value;                                                     \
}                                                                             \
static inline type                                                            \
raid_get_##attr(struct raid_template *r, struct device *dev) {                \
        struct device *device =                                               \
                attribute_container_find_class_device(&r->raid_attrs.ac, dev);\
        struct raid_data *rd;                                                 \
        BUG_ON(!device);                                                      \
        rd = dev_get_drvdata(device);                                         \
        return rd->attr;                                                      \
}

DEFINE_RAID_ATTRIBUTE(enum raid_level, level)
DEFINE_RAID_ATTRIBUTE(int, resync)
DEFINE_RAID_ATTRIBUTE(enum raid_state, state)
	
struct raid_template *raid_class_attach(struct raid_function_template *);
void raid_class_release(struct raid_template *);

int __must_check raid_component_add(struct raid_template *, struct device *,
				    struct device *);


Overall Contributors

PersonTokensPropCommitsCommitProp
James Bottomley18195.26%233.33%
Eric Moore42.11%116.67%
Kashyap Desai21.05%116.67%
Jeff Garzik21.05%116.67%
Tony Jones10.53%116.67%
Total190100.00%6100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.