diff --git a/libc/kernel/common/linux/raid/md.h b/libc/kernel/common/linux/raid/md.h
index d609c06..7e9bfc5 100644
--- a/libc/kernel/common/linux/raid/md.h
+++ b/libc/kernel/common/linux/raid/md.h
@@ -7,43 +7,52 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MD_H
 #define _MD_H
-
 #include <linux/blkdev.h>
 #include <asm/semaphore.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/major.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/bitops.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/module.h>
 #include <linux/hdreg.h>
 #include <linux/proc_fs.h>
 #include <linux/seq_file.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/smp_lock.h>
 #include <linux/delay.h>
 #include <net/checksum.h>
 #include <linux/random.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/kernel_stat.h>
 #include <asm/io.h>
 #include <linux/completion.h>
 #include <linux/mempool.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/list.h>
 #include <linux/reboot.h>
 #include <linux/vmalloc.h>
 #include <linux/blkpg.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/bio.h>
-
 #include <linux/raid/md_p.h>
 #include <linux/raid/md_u.h>
 #include <linux/raid/md_k.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_MAJOR_VERSION 0
 #define MD_MINOR_VERSION 90
-
 #define MD_PATCHLEVEL_VERSION 3
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/raid/md_k.h b/libc/kernel/common/linux/raid/md_k.h
index c8b858c..2298b55 100644
--- a/libc/kernel/common/linux/raid/md_k.h
+++ b/libc/kernel/common/linux/raid/md_k.h
@@ -7,178 +7,210 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MD_K_H
 #define _MD_K_H
-
 #include "../../../drivers/md/dm-bio-list.h"
-
 #define LEVEL_MULTIPATH (-4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LEVEL_LINEAR (-1)
 #define LEVEL_FAULTY (-5)
-
 #define LEVEL_NONE (-1000000)
-
 #define MaxSector (~(sector_t)0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_THREAD_NAME_MAX 14
-
 typedef struct mddev_s mddev_t;
 typedef struct mdk_rdev_s mdk_rdev_t;
-
 #define MAX_MD_DEVS 256  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_CHUNK_SIZE (1<<30)
-
 struct mdk_rdev_s
 {
  struct list_head same_set;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t size;
  mddev_t *mddev;
  unsigned long last_events;
-
  struct block_device *bdev;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct page *sb_page;
  int sb_loaded;
  __u64 sb_events;
  sector_t data_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t sb_offset;
  int sb_size;
  int preferred_minor;
-
  struct kobject kobj;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long flags;
 #define Faulty 1  
 #define In_sync 2  
 #define WriteMostly 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BarriersNotsupp 5  
-
  int desc_nr;
  int raid_disk;
  int saved_raid_disk;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t recovery_offset;
-
  atomic_t nr_pending;
  atomic_t read_errors;
  atomic_t corrected_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct mddev_s
 {
  void *private;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mdk_personality *pers;
  dev_t unit;
  int md_minor;
  struct list_head disks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int sb_dirty;
  int ro;
-
  struct gendisk *gendisk;
-
  struct kobject kobj;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int major_version,
  minor_version,
  patch_version;
  int persistent;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int chunk_size;
  time_t ctime, utime;
  int level, layout;
  char clevel[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int raid_disks;
  int max_disks;
  sector_t size;
  sector_t array_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 events;
-
  char uuid[16];
-
  sector_t reshape_position;
  int delta_disks, new_level, new_layout, new_chunk;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mdk_thread_s *thread;
  struct mdk_thread_s *sync_thread;
  sector_t curr_resync;
  unsigned long resync_mark;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t resync_mark_cnt;
  sector_t curr_mark_cnt;
-
  sector_t resync_max_sectors;
-
  sector_t resync_mismatches;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t suspend_lo;
  sector_t suspend_hi;
-
  int sync_speed_min;
  int sync_speed_max;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int ok_start_degraded;
-
 #define MD_RECOVERY_RUNNING 0
 #define MD_RECOVERY_SYNC 1
 #define MD_RECOVERY_ERR 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_RECOVERY_INTR 3
 #define MD_RECOVERY_DONE 4
 #define MD_RECOVERY_NEEDED 5
 #define MD_RECOVERY_REQUESTED 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_RECOVERY_CHECK 7
 #define MD_RECOVERY_RESHAPE 8
 #define MD_RECOVERY_FROZEN 9
-
  unsigned long recovery;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int in_sync;
  struct mutex reconfig_mutex;
  atomic_t active;
-
  int changed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int degraded;
  int barriers_work;
  struct bio *biolist;
-
  atomic_t recovery_active;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  wait_queue_head_t recovery_wait;
  sector_t recovery_cp;
-
  spinlock_t write_lock;
  wait_queue_head_t sb_wait;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t pending_writes;
-
  unsigned int safemode;
  unsigned int safemode_delay;
  struct timer_list safemode_timer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t writes_pending;
  request_queue_t *queue;
-
  atomic_t write_behind;
  unsigned int max_write_behind;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct bitmap *bitmap;
  struct file *bitmap_file;
  long bitmap_offset;
  long default_bitmap_offset;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct list_head all_mddevs;
 };
-
+struct mdk_personality
+{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char *name;
+ int level;
+ struct list_head list;
+ struct module *owner;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int (*make_request)(request_queue_t *q, struct bio *bio);
+ int (*run)(mddev_t *mddev);
+ int (*stop)(mddev_t *mddev);
+ void (*status)(struct seq_file *seq, mddev_t *mddev);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ void (*error_handler)(mddev_t *mddev, mdk_rdev_t *rdev);
+ int (*hot_add_disk) (mddev_t *mddev, mdk_rdev_t *rdev);
+ int (*hot_remove_disk) (mddev_t *mddev, int number);
+ int (*spare_active) (mddev_t *mddev);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ sector_t (*sync_request)(mddev_t *mddev, sector_t sector_nr, int *skipped, int go_faster);
+ int (*resize) (mddev_t *mddev, sector_t sectors);
+ int (*check_reshape) (mddev_t *mddev);
+ int (*start_reshape) (mddev_t *mddev);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int (*reconfig) (mddev_t *mddev, int layout, int chunk_size);
+ void (*quiesce) (mddev_t *mddev, int state);
+};
 struct md_sysfs_entry {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct attribute attr;
  ssize_t (*show)(mddev_t *, char *);
  ssize_t (*store)(mddev_t *, const char *, size_t);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ITERATE_RDEV_GENERIC(head,rdev,tmp)     for ((tmp) = (head).next;   (rdev) = (list_entry((tmp), mdk_rdev_t, same_set)),   (tmp) = (tmp)->next, (tmp)->prev != &(head)   ; )
 #define ITERATE_RDEV(mddev,rdev,tmp)   ITERATE_RDEV_GENERIC((mddev)->disks,rdev,tmp)
 #define ITERATE_RDEV_PENDING(rdev,tmp)   ITERATE_RDEV_GENERIC(pending_raid_disks,rdev,tmp)
-
+typedef struct mdk_thread_s {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ void (*run) (mddev_t *mddev);
+ mddev_t *mddev;
+ wait_queue_head_t wqueue;
+ unsigned long flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct task_struct *tsk;
+ unsigned long timeout;
+} mdk_thread_t;
 #define THREAD_WAKEUP 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __wait_event_lock_irq(wq, condition, lock, cmd)  do {   wait_queue_t __wait;   init_waitqueue_entry(&__wait, current);     add_wait_queue(&wq, &__wait);   for (;;) {   set_current_state(TASK_UNINTERRUPTIBLE);   if (condition)   break;   spin_unlock_irq(&lock);   cmd;   schedule();   spin_lock_irq(&lock);   }   current->state = TASK_RUNNING;   remove_wait_queue(&wq, &__wait);  } while (0)
-
 #define wait_event_lock_irq(wq, condition, lock, cmd)  do {   if (condition)   break;   __wait_event_lock_irq(wq, condition, lock, cmd);  } while (0)
-
 #endif
diff --git a/libc/kernel/common/linux/raid/md_p.h b/libc/kernel/common/linux/raid/md_p.h
index ab856a7..a30e293 100644
--- a/libc/kernel/common/linux/raid/md_p.h
+++ b/libc/kernel/common/linux/raid/md_p.h
@@ -7,129 +7,182 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MD_P_H
 #define _MD_P_H
-
 #define MD_RESERVED_BYTES (64 * 1024)
 #define MD_RESERVED_SECTORS (MD_RESERVED_BYTES / 512)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_RESERVED_BLOCKS (MD_RESERVED_BYTES / BLOCK_SIZE)
-
 #define MD_NEW_SIZE_SECTORS(x) ((x & ~(MD_RESERVED_SECTORS - 1)) - MD_RESERVED_SECTORS)
 #define MD_NEW_SIZE_BLOCKS(x) ((x & ~(MD_RESERVED_BLOCKS - 1)) - MD_RESERVED_BLOCKS)
-
 #define MD_SB_BYTES 4096
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_SB_WORDS (MD_SB_BYTES / 4)
 #define MD_SB_BLOCKS (MD_SB_BYTES / BLOCK_SIZE)
 #define MD_SB_SECTORS (MD_SB_BYTES / 512)
-
 #define MD_SB_GENERIC_OFFSET 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_SB_PERSONALITY_OFFSET 64
 #define MD_SB_DISKS_OFFSET 128
 #define MD_SB_DESCRIPTOR_OFFSET 992
-
 #define MD_SB_GENERIC_CONSTANT_WORDS 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_SB_GENERIC_STATE_WORDS 32
 #define MD_SB_GENERIC_WORDS (MD_SB_GENERIC_CONSTANT_WORDS + MD_SB_GENERIC_STATE_WORDS)
 #define MD_SB_PERSONALITY_WORDS 64
 #define MD_SB_DESCRIPTOR_WORDS 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_SB_DISKS 27
 #define MD_SB_DISKS_WORDS (MD_SB_DISKS*MD_SB_DESCRIPTOR_WORDS)
 #define MD_SB_RESERVED_WORDS (1024 - MD_SB_GENERIC_WORDS - MD_SB_PERSONALITY_WORDS - MD_SB_DISKS_WORDS - MD_SB_DESCRIPTOR_WORDS)
 #define MD_SB_EQUAL_WORDS (MD_SB_GENERIC_WORDS + MD_SB_PERSONALITY_WORDS + MD_SB_DISKS_WORDS)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_DISK_FAULTY 0  
 #define MD_DISK_ACTIVE 1  
 #define MD_DISK_SYNC 2  
 #define MD_DISK_REMOVED 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_DISK_WRITEMOSTLY 9  
-
 typedef struct mdp_device_descriptor_s {
  __u32 number;
  __u32 major;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 minor;
  __u32 raid_disk;
  __u32 state;
  __u32 reserved[MD_SB_DESCRIPTOR_WORDS - 5];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mdp_disk_t;
-
 #define MD_SB_MAGIC 0xa92b4efc
-
 #define MD_SB_CLEAN 0
 #define MD_SB_ERRORS 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_SB_BITMAP_PRESENT 8  
-
 typedef struct mdp_superblock_s {
-
  __u32 md_magic;
  __u32 major_version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 minor_version;
  __u32 patch_version;
  __u32 gvalid_words;
  __u32 set_uuid0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ctime;
  __u32 level;
  __u32 size;
  __u32 nr_disks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 raid_disks;
  __u32 md_minor;
  __u32 not_persistent;
  __u32 set_uuid1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 set_uuid2;
  __u32 set_uuid3;
  __u32 gstate_creserved[MD_SB_GENERIC_CONSTANT_WORDS - 16];
-
  __u32 utime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 state;
  __u32 active_disks;
  __u32 working_disks;
  __u32 failed_disks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 spare_disks;
  __u32 sb_csum;
 #ifdef __BIG_ENDIAN
  __u32 events_hi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 events_lo;
  __u32 cp_events_hi;
  __u32 cp_events_lo;
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 events_lo;
  __u32 events_hi;
  __u32 cp_events_lo;
  __u32 cp_events_hi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  __u32 recovery_cp;
-
  __u64 reshape_position;
  __u32 new_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 delta_disks;
  __u32 new_layout;
  __u32 new_chunk;
  __u32 gstate_sreserved[MD_SB_GENERIC_STATE_WORDS - 18];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 layout;
  __u32 chunk_size;
  __u32 root_pv;
  __u32 root_block;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 pstate_reserved[MD_SB_PERSONALITY_WORDS - 4];
-
  mdp_disk_t disks[MD_SB_DISKS];
-
  __u32 reserved[MD_SB_RESERVED_WORDS];
-
  mdp_disk_t this_disk;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mdp_super_t;
-
+struct mdp_superblock_1 {
+ __u32 magic;
+ __u32 major_version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 feature_map;
+ __u32 pad0;
+ __u8 set_uuid[16];
+ char set_name[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 ctime;
+ __u32 level;
+ __u32 layout;
+ __u64 size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 chunksize;
+ __u32 raid_disks;
+ __u32 bitmap_offset;
+ __u32 new_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 reshape_position;
+ __u32 delta_disks;
+ __u32 new_layout;
+ __u32 new_chunk;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u8 pad1[128-124];
+ __u64 data_offset;
+ __u64 data_size;
+ __u64 super_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 recovery_offset;
+ __u32 dev_number;
+ __u32 cnt_corrected_read;
+ __u8 device_uuid[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u8 devflags;
 #define WriteMostly1 1  
-
+ __u8 pad2[64-57];
+ __u64 utime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 events;
+ __u64 resync_offset;
+ __u32 sb_csum;
+ __u32 max_dev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u8 pad3[64-32];
+ __u16 dev_roles[0];
+};
 #define MD_FEATURE_BITMAP_OFFSET 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_FEATURE_RECOVERY_OFFSET 2  
 #define MD_FEATURE_RESHAPE_ACTIVE 4
-
 #define MD_FEATURE_ALL (1|2|4)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/raid/md_u.h b/libc/kernel/common/linux/raid/md_u.h
index 3671187..fd86ba5 100644
--- a/libc/kernel/common/linux/raid/md_u.h
+++ b/libc/kernel/common/linux/raid/md_u.h
@@ -7,98 +7,104 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MD_U_H
 #define _MD_U_H
-
 #define RAID_VERSION _IOR (MD_MAJOR, 0x10, mdu_version_t)
 #define GET_ARRAY_INFO _IOR (MD_MAJOR, 0x11, mdu_array_info_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GET_DISK_INFO _IOR (MD_MAJOR, 0x12, mdu_disk_info_t)
 #define PRINT_RAID_DEBUG _IO (MD_MAJOR, 0x13)
 #define RAID_AUTORUN _IO (MD_MAJOR, 0x14)
 #define GET_BITMAP_FILE _IOR (MD_MAJOR, 0x15, mdu_bitmap_file_t)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLEAR_ARRAY _IO (MD_MAJOR, 0x20)
 #define ADD_NEW_DISK _IOW (MD_MAJOR, 0x21, mdu_disk_info_t)
 #define HOT_REMOVE_DISK _IO (MD_MAJOR, 0x22)
 #define SET_ARRAY_INFO _IOW (MD_MAJOR, 0x23, mdu_array_info_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SET_DISK_INFO _IO (MD_MAJOR, 0x24)
 #define WRITE_RAID_INFO _IO (MD_MAJOR, 0x25)
 #define UNPROTECT_ARRAY _IO (MD_MAJOR, 0x26)
 #define PROTECT_ARRAY _IO (MD_MAJOR, 0x27)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HOT_ADD_DISK _IO (MD_MAJOR, 0x28)
 #define SET_DISK_FAULTY _IO (MD_MAJOR, 0x29)
 #define HOT_GENERATE_ERROR _IO (MD_MAJOR, 0x2a)
 #define SET_BITMAP_FILE _IOW (MD_MAJOR, 0x2b, int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RUN_ARRAY _IOW (MD_MAJOR, 0x30, mdu_param_t)
 #define START_ARRAY _IO (MD_MAJOR, 0x31)
 #define STOP_ARRAY _IO (MD_MAJOR, 0x32)
 #define STOP_ARRAY_RO _IO (MD_MAJOR, 0x33)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RESTART_ARRAY_RW _IO (MD_MAJOR, 0x34)
-
 typedef struct mdu_version_s {
  int major;
  int minor;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int patchlevel;
 } mdu_version_t;
-
 typedef struct mdu_array_info_s {
-
  int major_version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int minor_version;
  int patch_version;
  int ctime;
  int level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int size;
  int nr_disks;
  int raid_disks;
  int md_minor;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int not_persistent;
-
  int utime;
  int state;
  int active_disks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int working_disks;
  int failed_disks;
  int spare_disks;
-
  int layout;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int chunk_size;
-
 } mdu_array_info_t;
-
 typedef struct mdu_disk_info_s {
-
  int number;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int major;
  int minor;
  int raid_disk;
  int state;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mdu_disk_info_t;
-
 typedef struct mdu_start_info_s {
-
  int major;
  int minor;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int raid_disk;
  int state;
-
 } mdu_start_info_t;
-
 typedef struct mdu_bitmap_file_s
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  char pathname[4096];
 } mdu_bitmap_file_t;
-
 typedef struct mdu_param_s
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  int personality;
  int chunk_size;
  int max_fault;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mdu_param_t;
-
 #endif
-
diff --git a/libc/kernel/common/linux/raid/xor.h b/libc/kernel/common/linux/raid/xor.h
index 01e9f45..0c8bca9 100644
--- a/libc/kernel/common/linux/raid/xor.h
+++ b/libc/kernel/common/linux/raid/xor.h
@@ -7,26 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XOR_H
 #define _XOR_H
-
 #include <linux/raid/md.h>
-
 #define MAX_XOR_BLOCKS 5
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xor_block_template {
  struct xor_block_template *next;
  const char *name;
  int speed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*do_2)(unsigned long, unsigned long *, unsigned long *);
  void (*do_3)(unsigned long, unsigned long *, unsigned long *,
  unsigned long *);
  void (*do_4)(unsigned long, unsigned long *, unsigned long *,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long *, unsigned long *);
  void (*do_5)(unsigned long, unsigned long *, unsigned long *,
  unsigned long *, unsigned long *, unsigned long *);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
