1. 07 1月, 2009 2 次提交
  2. 06 1月, 2009 29 次提交
    • J
      dm snapshot: extend exception store functions · a159c1ac
      Jonathan Brassow 提交于
      Supply dm_add_exception as a callback to the read_metadata function.
      Add a status function ready for a later patch and name the functions
      consistently.
      Signed-off-by: NJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      a159c1ac
    • A
      dm snapshot: split out exception store implementations · 4db6bfe0
      Alasdair G Kergon 提交于
      Move the existing snapshot exception store implementations out into
      separate files.  Later patches will place these behind a new
      interface in preparation for alternative implementations.
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      4db6bfe0
    • J
      dm snapshot: rename struct exception_store · 1ae25f9c
      Jonathan Brassow 提交于
      Rename struct exception_store to dm_exception_store.
      Signed-off-by: NJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      1ae25f9c
    • J
      dm snapshot: separate out exception store interface · aea53d92
      Jonathan Brassow 提交于
      Pull structures that bridge the gap between snapshot and
      exception store out of dm-snap.h and put them in a new
      .h file - dm-exception-store.h.  This file will define the
      API for new exception stores.
      
      Ultimately, dm-snap.h is unnecessary, since only dm-snap.c
      should be using it.
      Signed-off-by: NJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      aea53d92
    • A
      dm mpath: move trigger_event to system workqueue · fe9cf30e
      Alasdair G Kergon 提交于
      The same workqueue is used both for sending uevents and processing queued I/O.
      Deadlock has been reported in RHEL5 when sending a uevent was blocked waiting
      for the queued I/O to be processed.  Use scheduled_work() for the asynchronous
      uevents instead.
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      fe9cf30e
    • M
      dm: add name and uuid to sysfs · 784aae73
      Milan Broz 提交于
      Implement simple read-only sysfs entry for device-mapper block device.
      
      This patch adds a simple sysfs directory named "dm" under block device
      properties and implements
      	- name attribute (string containing mapped device name)
      	- uuid attribute (string containing UUID, or empty string if not set)
      
      The kobject is embedded in mapped_device struct, so no additional
      memory allocation is needed for initializing sysfs entry.
      
      During the processing of sysfs attribute we need to lock mapped device
      which is done by a new function dm_get_from_kobj, which returns the md
      associated with kobject and increases the usage count.
      
      Each 'show attribute' function is responsible for its own locking.
      Signed-off-by: NMilan Broz <mbroz@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      784aae73
    • M
      dm table: rework reference counting · d5816876
      Mikulas Patocka 提交于
      Rework table reference counting.
      
      The existing code uses a reference counter. When the last reference is
      dropped and the counter reaches zero, the table destructor is called.
      Table reference counters are acquired/released from upcalls from other
      kernel code (dm_any_congested, dm_merge_bvec, dm_unplug_all).
      If the reference counter reaches zero in one of the upcalls, the table
      destructor is called from almost random kernel code.
      
      This leads to various problems:
      * dm_any_congested being called under a spinlock, which calls the
        destructor, which calls some sleeping function.
      * the destructor attempting to take a lock that is already taken by the
        same process.
      * stale reference from some other kernel code keeps the table
        constructed, which keeps some devices open, even after successful
        return from "dmsetup remove". This can confuse lvm and prevent closing
        of underlying devices or reusing device minor numbers.
      
      The patch changes reference counting so that the table destructor can be
      called only at predetermined places.
      
      The table has always exactly one reference from either mapped_device->map
      or hash_cell->new_map. After this patch, this reference is not counted
      in table->holders.  A pair of dm_create_table/dm_destroy_table functions
      is used for table creation/destruction.
      
      Temporary references from the other code increase table->holders. A pair
      of dm_table_get/dm_table_put functions is used to manipulate it.
      
      When the table is about to be destroyed, we wait for table->holders to
      reach 0. Then, we call the table destructor.  We use active waiting with
      msleep(1), because the situation happens rarely (to one user in 5 years)
      and removing the device isn't performance-critical task: the user doesn't
      care if it takes one tick more or not.
      
      This way, the destructor is called only at specific points
      (dm_table_destroy function) and the above problems associated with lazy
      destruction can't happen.
      
      Finally remove the temporary protection added to dm_any_congested().
      Signed-off-by: NMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      d5816876
    • A
      dm: support barriers on simple devices · ab4c1424
      Andi Kleen 提交于
      Implement barrier support for single device DM devices
      
      This patch implements barrier support in DM for the common case of dm linear
      just remapping a single underlying device. In this case we can safely
      pass the barrier through because there can be no reordering between
      devices.
      
       NB. Any DM device might cease to support barriers if it gets
           reconfigured so code must continue to allow for a possible
           -EOPNOTSUPP on every barrier bio submitted.  - agk
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      ab4c1424
    • K
      dm request: add caches · 8fbf26ad
      Kiyoshi Ueda 提交于
      This patch prepares some kmem_caches for request-based dm.
      Signed-off-by: NKiyoshi Ueda <k-ueda@ct.jp.nec.com>
      Signed-off-by: NJun'ichi Nomura <j-nomura@ce.jp.nec.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      8fbf26ad
    • M
      dm ioctl: allow dm_copy_name_and_uuid to return only one field · 23d39f63
      Milan Broz 提交于
      Allow NULL buffer in dm_copy_name_and_uuid if you only want to return one of
      the fields.
      
      (Required by a following patch that adds these fields to sysfs.)
      Signed-off-by: NMilan Broz <mbroz@redhat.com>
      Reviewed-by: NAlasdair G Kergon <agk@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      23d39f63
    • M
      dm log: ensure log bitmap fits on log device · ac1f0ac2
      Milan Broz 提交于
      Check that the log bitmap will fit within the log device.
      Signed-off-by: NMilan Broz <mbroz@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      ac1f0ac2
    • M
      dm log: move region_size validation · 2045e88e
      Milan Broz 提交于
      Move log size validation from mirror target to log constructor.
      
      Removed PAGE_SIZE restriction we no longer think necessary.
      Signed-off-by: NMilan Broz <mbroz@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      2045e88e
    • T
      dm log: avoid reinitialising io_req on every operation · 6f3af01c
      Takahiro Yasui 提交于
      rw_header function updates three members of io_req data every time
      when I/O is processed. bi_rw and notify.fn are never modified once
      they get initialized, and so they can be set in advance.
      
      header_to_disk() can also be pulled out of write_header() since only one
      caller needs it and write_header() can be replaced by rw_header()
      directly.
      Signed-off-by: NTakahiro Yasui <tyasui@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      6f3af01c
    • M
      dm: consolidate target deregistration error handling · 10d3bd09
      Mikulas Patocka 提交于
      Change dm_unregister_target to return void and use BUG() for error
      reporting.
      
      dm_unregister_target can only fail because of programming bug in the
      target driver. It can't fail because of user's behavior or disk errors.
      
      This patch changes unregister_target to return void and use BUG if
      someone tries to unregister non-registered target or unregister target
      that is in use.
      
      This patch removes code duplication (testing of error codes in all dm
      targets) and reports bugs in just one place, in dm_unregister_target. In
      some target drivers, these return codes were ignored, which could lead
      to a situation where bugs could be missed.
      Signed-off-by: NMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      10d3bd09
    • J
      dm raid1: fix error count · d460c65a
      Jonathan Brassow 提交于
      Always increase the error count when I/O on a leg of a mirror fails.
      
      The error count is used to decide whether to select an alternative
      mirror leg.  If the target doesn't use the "handle_errors" feature, the
      error count is not updated and the bio can get requeued forever by the
      read callback.
      
      Fix it by increasing error_count before the handle_errors feature
      checking.
      
      Cc: stable@kernel.org
      Signed-off-by: NMilan Broz <mbroz@redhat.com>
      Signed-off-by: NJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      d460c65a
    • T
      dm log: fix dm_io_client leak on error paths · c7a2bd19
      Takahiro Yasui 提交于
      In create_log_context function, dm_io_client_destroy function needs
      to be called, when memory allocation of disk_header, sync_bits and
      recovering_bits failed, but dm_io_client_destroy is not called.
      
      Cc: stable@kernel.org
      Signed-off-by: NTakahiro Yasui <tyasui@redhat.com>
      Acked-by: NJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      c7a2bd19
    • M
      dm snapshot: change yield to msleep · 90fa1527
      Mikulas Patocka 提交于
      Change yield() to msleep(1). If the thread had realtime priority,
      yield() doesn't really yield, so the yielding process would loop
      indefinitely and cause machine lockup.
      Signed-off-by: NMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      90fa1527
    • M
      dm table: drop reference at unbind · a1b51e98
      Mikulas Patocka 提交于
      Move one dm_table_put() so that the last reference in the thread
      gets dropped in __unbind().
      
      This is required for a following patch,
      dm-table-rework-reference-counting.patch, which will change the logic in
      such a way that table destructor is called only at specific points in
      the code.
      Signed-off-by: NMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      a1b51e98
    • L
      igb: fix anoying type mismatch warning on rx/tx queue sizing · e42e4ba0
      Linus Torvalds 提交于
      When using "min()", the types of both sides should match.  With the cpu
      mask changes, the type of num_online_cpus() will now depend on config
      options. Use "min_t()" with an explicit type instead.
      
      And make the rx/tx case look the same too, just for sanity.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e42e4ba0
    • A
      i2o: Update my address · f1b11e50
      Alan Cox 提交于
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f1b11e50
    • R
      qlge: Fix sparse warnings for tx ring indexes. · 3537d54c
      Ron Mercer 提交于
      Warnings:
      drivers/net/qlge/qlge_main.c:1474:34: warning: restricted degrades to integer
      drivers/net/qlge/qlge_main.c:1475:36: warning: restricted degrades to integer
      drivers/net/qlge/qlge_main.c:1592:51: warning: restricted degrades to integer
      drivers/net/qlge/qlge_main.c:1941:20: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:1941:20:    expected restricted unsigned int [usertype] tid
      drivers/net/qlge/qlge_main.c:1941:20:    got int [signed] index
      drivers/net/qlge/qlge_main.c:1945:24: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:1945:24:    expected restricted unsigned int [usertype] txq_idx
      drivers/net/qlge/qlge_main.c:1945:24:    got unsigned int [unsigned] [usertype] tx_ring_idx
      Signed-off-by: NRon Mercer <ron.mercer@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3537d54c
    • R
      qlge: Fix sparse warning regarding rx buffer queues. · 2c9a0d41
      Ron Mercer 提交于
      Warnings:
      drivers/net/qlge/qlge_main.c:909:17: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:909:17:    expected unsigned int [unsigned] [usertype] addr_lo
      drivers/net/qlge/qlge_main.c:909:17:    got restricted unsigned int [usertype] <noident>
      drivers/net/qlge/qlge_main.c:911:17: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:911:17:    expected unsigned int [unsigned] [usertype] addr_hi
      drivers/net/qlge/qlge_main.c:911:17:    got restricted unsigned int [usertype] <noident>
      drivers/net/qlge/qlge_main.c:974:17: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:974:17:    expected unsigned int [unsigned] [usertype] addr_lo
      drivers/net/qlge/qlge_main.c:974:17:    got restricted unsigned int [usertype] <noident>
      drivers/net/qlge/qlge_main.c:975:17: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:975:17:    expected unsigned int [unsigned] [usertype] addr_hi
      drivers/net/qlge/qlge_main.c:975:17:    got restricted unsigned int [usertype] <noident>
      drivers/net/qlge/qlge_main.c:2132:16: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:2132:16:    expected unsigned int [unsigned] [usertype] addr_lo
      drivers/net/qlge/qlge_main.c:2132:16:    got restricted unsigned int [usertype] <noident>
      drivers/net/qlge/qlge_main.c:2133:16: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:2133:16:    expected unsigned int [unsigned] [usertype] addr_hi
      drivers/net/qlge/qlge_main.c:2133:16:    got restricted unsigned int [usertype] <noident>
      drivers/net/qlge/qlge_main.c:2212:15: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:2212:15:    expected unsigned int [unsigned] [usertype] addr_lo
      drivers/net/qlge/qlge_main.c:2212:15:    got restricted unsigned int [usertype] <noident>
      drivers/net/qlge/qlge_main.c:2214:15: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:2214:15:    expected unsigned int [unsigned] [usertype] addr_hi
      drivers/net/qlge/qlge_main.c:2214:15:    got restricted unsigned int [usertype] <noident>
      Signed-off-by: NRon Mercer <ron.mercer@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2c9a0d41
    • R
      qlge: Fix sparse endian warning in ql_hw_csum_setup(). · fd2df4f7
      Ron Mercer 提交于
      Changed u16 to __sum16 usage.
      
      Warnings:
      drivers/net/qlge/qlge_main.c:1897:9: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:1897:9:    expected unsigned short [usertype] *check
      drivers/net/qlge/qlge_main.c:1897:9:    got restricted unsigned short *<noident>
      drivers/net/qlge/qlge_main.c:1903:9: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:1903:9:    expected unsigned short [usertype] *check
      drivers/net/qlge/qlge_main.c:1903:9:    got restricted unsigned short *<noident>
      drivers/net/qlge/qlge_main.c:1909:9: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_main.c:1909:9:    expected unsigned short [unsigned] [short] [usertype] <noident>
      Signed-off-by: NRon Mercer <ron.mercer@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fd2df4f7
    • R
      qlge: Fix sparse endian warning for inbound packet control block flags. · a303ce09
      Ron Mercer 提交于
      Changed flags element from __le32 to 3 reserved bytes and one byte of
      flags.  Changed flags bit definitions to reflect byte width instead of
      __le32 width.
      
      Warnings:
      drivers/net/qlge/qlge_main.c:1206:16: warning: restricted degrades to integer
      drivers/net/qlge/qlge_main.c:1207:16: warning: restricted degrades to integer
      drivers/net/qlge/qlge_main.c:1233:17: warning: restricted degrades to integer
      drivers/net/qlge/qlge_main.c:1276:17: warning: restricted degrades to integer
      drivers/net/qlge/qlge_main.c:1349:19: warning: restricted degrades to integer
      Signed-off-by: NRon Mercer <ron.mercer@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a303ce09
    • R
      qlge: Fix sparse warnings for byte swapping in qlge_ethool.c · 8306c952
      Ron Mercer 提交于
      drivers/net/qlge/qlge_ethtool.c:59:23: warning: cast to restricted type
      drivers/net/qlge/qlge_ethtool.c:59:21: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_ethtool.c:59:21:    expected restricted unsigned short [usertype] irq_delay
      drivers/net/qlge/qlge_ethtool.c:59:21:    got unsigned short [unsigned] [usertype] <noident>
      drivers/net/qlge/qlge_ethtool.c:61:8: warning: cast to restricted type
      drivers/net/qlge/qlge_ethtool.c:60:21: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_ethtool.c:60:21:    expected restricted unsigned short [usertype] pkt_delay
      drivers/net/qlge/qlge_ethtool.c:60:21:    got unsigned short [unsigned] [usertype] <noident>
      drivers/net/qlge/qlge_ethtool.c:82:23: warning: cast to restricted type
      drivers/net/qlge/qlge_ethtool.c:82:21: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_ethtool.c:82:21:    expected restricted unsigned short [usertype] irq_delay
      drivers/net/qlge/qlge_ethtool.c:82:21:    got unsigned short [unsigned] [usertype] <noident>
      drivers/net/qlge/qlge_ethtool.c:84:8: warning: cast to restricted type
      drivers/net/qlge/qlge_ethtool.c:83:21: warning: incorrect type in assignment (different base types)
      drivers/net/qlge/qlge_ethtool.c:83:21:    expected restricted unsigned short [usertype] pkt_delay
      drivers/net/qlge/qlge_ethtool.c:83:21:    got unsigned short [unsigned] [usertype] <noident>
      Signed-off-by: NRon Mercer <ron.mercer@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8306c952
    • B
      myri10ge: print MAC and serial number on probe failure · 0f840011
      Brice Goglin 提交于
      To help board identification and diagnosis, print the MAC
      and serial number on probe failure if they are available.
      Signed-off-by: NBrice Goglin <brice@myri.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0f840011
    • S
      net/ehea: bitops work on unsigned longs · 48e4cc77
      Stephen Rothwell 提交于
      The flags field of struct ehea_port is only used with test_bit(),
      clear_bit() and set_bit() and these interfaces only work on
      "unsigned long"s, so change the field to be an "unsigned long".  Also,
      this field only has two bits defined for it (0 and 1) so will still be
      fine if someone builds this driver for a 32 bit arch (at least as far as
      this flags field is concerned).
      
      Also note that ehea_driver_flags is only used in ehca_main.c, so make it
      static in there.
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      48e4cc77
    • C
      add a vfs_fsync helper · 4c728ef5
      Christoph Hellwig 提交于
      Fsync currently has a fdatawrite/fdatawait pair around the method call,
      and a mutex_lock/unlock of the inode mutex.  All callers of fsync have
      to duplicate this, but we have a few and most of them don't quite get
      it right.  This patch adds a new vfs_fsync that takes care of this.
      It's a little more complicated as usual as ->fsync might get a NULL file
      pointer and just a dentry from nfsd, but otherwise gets afile and we
      want to take the mapping and file operations from it when it is there.
      
      Notes on the fsync callers:
      
       - ecryptfs wasn't calling filemap_fdatawrite / filemap_fdatawait on the
         	lower file
       - coda wasn't calling filemap_fdatawrite / filemap_fdatawait on the host
      	file, and returning 0 when ->fsync was missing
       - shm wasn't calling either filemap_fdatawrite / filemap_fdatawait nor
         taking i_mutex.  Now given that shared memory doesn't have disk
         backing not doing anything in fsync seems fine and I left it out of
         the vfs_fsync conversion for now, but in that case we might just
         not pass it through to the lower file at all but just call the no-op
         simple_sync_file directly.
      
      [and now actually export vfs_fsync]
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      4c728ef5
    • A
      zero i_uid/i_gid on inode allocation · 56ff5efa
      Al Viro 提交于
      ... and don't bother in callers.  Don't bother with zeroing i_blocks,
      while we are at it - it's already been zeroed.
      
      i_mode is not worth the effort; it has no common default value.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      56ff5efa
  3. 05 1月, 2009 9 次提交