]> Git Repo - linux.git/commitdiff
Merge tag 'md-3.5' of git://neil.brown.name/md
authorLinus Torvalds <[email protected]>
Thu, 24 May 2012 00:08:40 +0000 (17:08 -0700)
committerLinus Torvalds <[email protected]>
Thu, 24 May 2012 00:08:40 +0000 (17:08 -0700)
Pull md updates from NeilBrown:
 "It's been a busy cycle for md - lots of fun stuff here..  if you like
  this kind of thing :-)

  Main features:
   - RAID10 arrays can be reshaped - adding and removing devices and
     changing chunks (not 'far' array though)
   - allow RAID5 arrays to be reshaped with a backup file (not tested
     yet, but the priciple works fine for RAID10).
   - arrays can be reshaped while a bitmap is present - you no longer
     need to remove it first
   - SSSE3 support for RAID6 syndrome calculations

  and of course a number of minor fixes etc."

* tag 'md-3.5' of git://neil.brown.name/md: (56 commits)
  md/bitmap: record the space available for the bitmap in the superblock.
  md/raid10: Remove extras after reshape to smaller number of devices.
  md/raid5: improve removal of extra devices after reshape.
  md: check the return of mddev_find()
  MD RAID1: Further conditionalize 'fullsync'
  DM RAID: Use md_error() in place of simply setting Faulty bit
  DM RAID: Record and handle missing devices
  DM RAID: Set recovery flags on resume
  md/raid5: Allow reshape while a bitmap is present.
  md/raid10: resize bitmap when required during reshape.
  md: allow array to be resized while bitmap is present.
  md/bitmap: make sure reshape request are reflected in superblock.
  md/bitmap: add bitmap_resize function to allow bitmap resizing.
  md/bitmap: use DIV_ROUND_UP instead of open-code
  md/bitmap: create a 'struct bitmap_counts' substructure of 'struct bitmap'
  md/bitmap: make bitmap bitops atomic.
  md/bitmap: make _page_attr bitops atomic.
  md/bitmap: merge bitmap_file_unmap and bitmap_file_put.
  md/bitmap: remove async freeing of bitmap file.
  md/bitmap: convert some spin_lock_irqsave to spin_lock_irq
  ...

1  2 
arch/x86/Makefile
crypto/xor.c

diff --combined arch/x86/Makefile
index dc611a40a336eeb4eba02da5d34ea505d969df19,7a1cc9ee5c8a91f6c69e14c9e19e77435bef73bc..1f25214345548584447a607676e61093301df8c8
@@@ -115,9 -115,10 +115,10 @@@ cfi-sections := $(call as-instr,.cfi_se
  
  # does binutils support specific instructions?
  asinstr := $(call as-instr,fxsaveq (%rax),-DCONFIG_AS_FXSAVEQ=1)
+ avx_instr := $(call as-instr,vxorps %ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1)
  
- KBUILD_AFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr)
- KBUILD_CFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr)
+ KBUILD_AFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr)
+ KBUILD_CFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr)
  
  LDFLAGS := -m elf_$(UTS_MACHINE)
  
@@@ -134,9 -135,6 +135,9 @@@ KBUILD_CFLAGS += $(call cc-option,-mno-
  KBUILD_CFLAGS += $(mflags-y)
  KBUILD_AFLAGS += $(mflags-y)
  
 +archscripts:
 +      $(Q)$(MAKE) $(build)=arch/x86/tools relocs
 +
  ###
  # Syscall table generation
  
@@@ -149,6 -147,7 +150,6 @@@ archheaders
  head-y := arch/x86/kernel/head_$(BITS).o
  head-y += arch/x86/kernel/head$(BITS).o
  head-y += arch/x86/kernel/head.o
 -head-y += arch/x86/kernel/init_task.o
  
  libs-y  += arch/x86/lib/
  
@@@ -205,7 -204,6 +206,7 @@@ archclean
        $(Q)rm -rf $(objtree)/arch/i386
        $(Q)rm -rf $(objtree)/arch/x86_64
        $(Q)$(MAKE) $(clean)=$(boot)
 +      $(Q)$(MAKE) $(clean)=arch/x86/tools
  
  define archhelp
    echo  '* bzImage      - Compressed kernel image (arch/x86/boot/bzImage)'
diff --combined crypto/xor.c
index 664b6dfa9e2c1ef492cc5ab96d7c704e25ad471a,84daa1111dad7531089aaae0bf512b2b86a39dfa..65c7b416b4a3e4d9e2ad08c41a1fcec06e222f8e
@@@ -21,6 -21,7 +21,7 @@@
  #include <linux/gfp.h>
  #include <linux/raid/xor.h>
  #include <linux/jiffies.h>
+ #include <linux/preempt.h>
  #include <asm/xor.h>
  
  /* The xor routines to use.  */
@@@ -63,12 -64,14 +64,14 @@@ static voi
  do_xor_speed(struct xor_block_template *tmpl, void *b1, void *b2)
  {
        int speed;
-       unsigned long now;
+       unsigned long now, j;
        int i, count, max;
  
        tmpl->next = template_list;
        template_list = tmpl;
  
+       preempt_disable();
        /*
         * Count the number of XORs done during a whole jiffy, and use
         * this to calculate the speed of checksumming.  We use a 2-page
         */
        max = 0;
        for (i = 0; i < 5; i++) {
-               now = jiffies;
+               j = jiffies;
                count = 0;
-               while (jiffies == now) {
+               while ((now = jiffies) == j)
+                       cpu_relax();
+               while (time_before(jiffies, now + 1)) {
                        mb(); /* prevent loop optimzation */
                        tmpl->do_2(BENCH_SIZE, b1, b2);
                        mb();
@@@ -89,6 -94,8 +94,8 @@@
                        max = count;
        }
  
+       preempt_enable();
        speed = max * (HZ * BENCH_SIZE / 1024);
        tmpl->speed = speed;
  
@@@ -129,9 -136,9 +136,9 @@@ calibrate_xor_blocks(void
  
        if (fastest) {
                printk(KERN_INFO "xor: automatically using best "
 -                      "checksumming function: %s\n",
 -                      fastest->name);
 +                               "checksumming function:\n");
                xor_speed(fastest);
 +              goto out;
        } else {
                printk(KERN_INFO "xor: measuring software checksum speed\n");
                XOR_TRY_TEMPLATES;
  
  #undef xor_speed
  
 + out:
        free_pages((unsigned long)b1, 2);
  
        active_template = fastest;
This page took 0.0711580000000001 seconds and 4 git commands to generate.