]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - include/linux/raid_class.h
coredump masking: add an interface for core dump filter
[karo-tx-linux.git] / include / linux / raid_class.h
index a71123c282728389fdc9b0e0d2e3d3d6ea44cce2..d22ad392242ac811bf1c432c89b4c18592dbd987 100644 (file)
@@ -1,4 +1,9 @@
 /*
+ * 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>
 
@@ -14,20 +19,37 @@ struct raid_function_template {
 };
 
 enum raid_state {
-       RAID_ACTIVE = 1,
-       RAID_DEGRADED,
-       RAID_RESYNCING,
-       RAID_OFFLINE,
+       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_3,
+       RAID_LEVEL_4,
+       RAID_LEVEL_5,
+       RAID_LEVEL_50,
+       RAID_LEVEL_6,
 };
 
 struct raid_data {
        struct list_head component_list;
        int component_count;
-       int level;
+       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) {    \
@@ -48,12 +70,13 @@ raid_get_##attr(struct raid_template *r, struct device *dev) {                    \
        return rd->attr;                                                      \
 }
 
-DEFINE_RAID_ATTRIBUTE(int, level)
+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 *);
 
-void raid_component_add(struct raid_template *, struct device *,
-                       struct device *);
+int __must_check raid_component_add(struct raid_template *, struct device *,
+                                   struct device *);
+