1. 08 3月, 2012 6 次提交
    • J
      dm thin metadata: decrement counter after removing mapped block · af63bcb8
      Joe Thornber 提交于
      Correct the number of mapped sectors shown on a thin device's
      status line by decrementing td->mapped_blocks in __remove() each time
      a block is removed.
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      Acked-by: NMike Snitzer <snitzer@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      af63bcb8
    • J
      dm thin metadata: unlock superblock in init_pmd error path · 4469a5f3
      Joe Thornber 提交于
      If dm_sm_disk_create() fails the superblock must be unlocked.
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      Acked-by: NMike Snitzer <snitzer@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      4469a5f3
    • M
      dm thin metadata: remove incorrect close_device on creation error paths · 1f3db25d
      Mike Snitzer 提交于
      The __open_device() error paths in __create_thin() and __create_snap()
      incorrectly call __close_device() even if td was not initialized by
      __open_device().  Remove this.
      
      Also document __open_device() return values, remove a redundant
      td->changed = 1 in __create_thin(), and insert an additional
      safeguard against creating an already-existing device.
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      1f3db25d
    • M
      dm flakey: fix crash on read when corrupt_bio_byte not set · 1212268f
      Mike Snitzer 提交于
      The following BUG is hit on the first read that is submitted to a dm
      flakey test device while the device is "down" if the corrupt_bio_byte
      feature wasn't requested when the device's table was loaded.
      
      Example DM table that will hit this BUG:
      0 2097152 flakey 8:0 2048 0 30
      
      This bug was introduced by commit a3998799
      (dm flakey: add corrupt_bio_byte feature) in v3.1-rc1.
      
      BUG: unable to handle kernel paging request at ffff8801cfce3fff
      IP: [<ffffffffa008c233>] corrupt_bio_data+0x6e/0xae [dm_flakey]
      PGD 1606063 PUD 0
      Oops: 0002 [#1] SMP
      ...
      Call Trace:
       <IRQ>
       [<ffffffffa008c2b5>] flakey_end_io+0x42/0x48 [dm_flakey]
       [<ffffffffa00dca98>] clone_endio+0x54/0xb6 [dm_mod]
       [<ffffffff81130587>] bio_endio+0x2d/0x2f
       [<ffffffff811c819a>] req_bio_endio+0x96/0x9f
       [<ffffffff811c94b9>] blk_update_request+0x1dc/0x3a9
       [<ffffffff812f5ee2>] ? rcu_read_unlock+0x21/0x23
       [<ffffffff811c96a6>] blk_update_bidi_request+0x20/0x6e
       [<ffffffff811c9713>] blk_end_bidi_request+0x1f/0x5d
       [<ffffffff811c978d>] blk_end_request+0x10/0x12
       [<ffffffff8128f450>] scsi_io_completion+0x1e5/0x4b1
       [<ffffffff812882a9>] scsi_finish_command+0xec/0xf5
       [<ffffffff8128f830>] scsi_softirq_done+0xff/0x108
       [<ffffffff811ce284>] blk_done_softirq+0x84/0x98
       [<ffffffff81048d19>] __do_softirq+0xe3/0x1d5
       [<ffffffff8138f83f>] ? _raw_spin_lock+0x62/0x69
       [<ffffffff810997cf>] ? handle_irq_event+0x4c/0x61
       [<ffffffff8139833c>] call_softirq+0x1c/0x30
       [<ffffffff81003b37>] do_softirq+0x4b/0xa3
       [<ffffffff81048a39>] irq_exit+0x53/0xca
       [<ffffffff81398acd>] do_IRQ+0x9d/0xb4
       [<ffffffff81390333>] common_interrupt+0x73/0x73
      ...
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      Cc: stable@vger.kernel.org # 3.1+
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      1212268f
    • M
      dm io: fix discard support · 0c535e0d
      Milan Broz 提交于
      This patch fixes a crash by recognising discards in dm_io.
      
      Currently dm_mirror can send REQ_DISCARD bios if running over a
      discard-enabled device and without support in dm_io the system
      crashes badly.
      
      BUG: unable to handle kernel paging request at 00800000
      IP:  __bio_add_page.part.17+0xf5/0x1e0
      ...
       bio_add_page+0x56/0x70
       dispatch_io+0x1cf/0x240 [dm_mod]
       ? km_get_page+0x50/0x50 [dm_mod]
       ? vm_next_page+0x20/0x20 [dm_mod]
       ? mirror_flush+0x130/0x130 [dm_mirror]
       dm_io+0xdc/0x2b0 [dm_mod]
      ...
      
      Introduced in 2.6.38-rc1 by commit 5fc2ffea
      (dm raid1: support discard).
      Signed-off-by: NMilan Broz <mbroz@redhat.com>
      Cc: stable@kernel.org
      Acked-by: NMike Snitzer <snitzer@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      0c535e0d
    • J
      dm ioctl: do not leak argv if target message only contains whitespace · 902c6a96
      Jesper Juhl 提交于
      If 'argc' is zero we jump to the 'out:' label, but this leaks the
      (unused) memory that 'dm_split_args()' allocated for 'argv' if the
      string being split consisted entirely of whitespace.  Jump to the
      'out_argv:' label instead to free up that memory.
      Signed-off-by: NJesper Juhl <jj@chaosbits.net>
      Cc: stable@kernel.org
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      902c6a96
  2. 07 2月, 2012 1 次提交
    • N
      md: two small fixes to handling interrupt resync. · db91ff55
      NeilBrown 提交于
      1/ If a resync is aborted we should record how far we got
       (recovery_cp) the last request that we know has completed
       (->curr_resync_completed) rather than the last request that was
       submitted (->curr_resync).
      
      2/ When a resync aborts we still want to update the metadata with
       any changes, so set MD_CHANGE_DEVS even if we 'skip'.
      Signed-off-by: NNeilBrown <neilb@suse.de>
      db91ff55
  3. 31 1月, 2012 1 次提交
    • J
      Prevent DM RAID from loading bitmap twice. · 34f8ac6d
      Jonathan Brassow 提交于
      The life cycle of a device-mapper target is:
      1) create
      2) resume
      3) suspend
      *) possibly repeat from 2
      4) destroy
      
      The dm-raid target is unconditionally calling MD's bitmap_load function upon
      every resume.  If steps 2 & 3 above are repeated, bitmap_load is called
      multiple times.  It is only written to be called once; otherwise, it allocates
      new memory for the bitmap (without freeing the old) and incrementing the number
      of pages it thinks it has without zeroing first.  This ultimately leads to
      access beyond allocated memory and lost memory.
      
      Simply avoiding the bitmap_load call upon resume is not sufficient.  If the
      target was suspended while the initial recovery was only partially complete,
      it needs to be restarted when the target is resumed.  This is why
      'md_wakeup_thread' is called before issuing the 'mddev_resume'.
      Signed-off-by: NJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: NNeilBrown <neilb@suse.de>
      34f8ac6d
  4. 15 1月, 2012 1 次提交
  5. 11 1月, 2012 3 次提交
  6. 04 1月, 2012 1 次提交
  7. 23 12月, 2011 27 次提交