1. 26 Jan, 2008 6 commits
  2. 25 Jan, 2008 34 commits
    • Mark Fasheh's avatar
      ocfs2: clean up bh null checks · 2fe5c1d7
      Mark Fasheh authored
      If we know a buffer_head is non-null, then brelse() is unnecessary and
      put_bh() can be used instead. Also, an explicit check for NULL is
      unnecessary when using brelse(). This patch only covers buffer_head_io.c and
      resize.c, which have recently added code which exhibits this problem.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      2fe5c1d7
    • Mark Fasheh's avatar
      ocfs2: document access rules for blocked_lock_list · 7ec373cf
      Mark Fasheh authored
      ocfs2_super->blocked_lock_list and ocfs2_super->blocked_lock_count have some
      usage restrictions which aren't immediately obvious to anyone reading the
      code. It's a good idea to document this so that we avoid making costly
      mistakes in the future.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      7ec373cf
    • Joonwoo Park's avatar
      configfs: file.c fix possible recursive locking · 116ba5d5
      Joonwoo Park authored
      configfs_register_subsystem() with default_groups triggers recursive locking.
      it seems that mutex_lock_nested is needed.
      
      =============================================
      [ INFO: possible recursive locking detected ]
      2.6.24-rc6 #145
      ---------------------------------------------
      swapper/1 is trying to acquire lock:
       (&sb->s_type->i_mutex_key#3){--..}, at: [<c40c9a9e>] configfs_add_file+0x2e/0x70
      
      but task is already holding lock:
       (&sb->s_type->i_mutex_key#3){--..}, at: [<c40ca985>] configfs_register_subsystem+0x55/0x130
      
      other info that might help us debug this:
      1 lock held by swapper/1:
       #0:  (&sb->s_type->i_mutex_key#3){--..}, at: [<c40ca985>] configfs_register_subsystem+0x55/0x130
      
      stack backtrace:
      Pid: 1, comm: swapper Not tainted 2.6.24-rc6 #145
       [<c40053ba>] show_trace_log_lvl+0x1a/0x30
       [<c4005e82>] show_trace+0x12/0x20
       [<c400687e>] dump_stack+0x6e/0x80
       [<c404ec72>] __lock_acquire+0xe62/0x1120
       [<c404efb2>] lock_acquire+0x82/0xa0
       [<c43fda88>] mutex_lock_nested+0x98/0x2e0
       [<c40c9a9e>] configfs_add_file+0x2e/0x70
       [<c40c9b0c>] configfs_create_file+0x2c/0x40
       [<c40ca639>] configfs_attach_item+0x139/0x220
       [<c40ca734>] configfs_attach_group+0x14/0x140
       [<c40ca7e9>] configfs_attach_group+0xc9/0x140
       [<c40ca9f6>] configfs_register_subsystem+0xc6/0x130
       [<c45c8186>] init_netconsole+0x2b6/0x300
       [<c45a75f2>] kernel_init+0x142/0x320
       [<c4004fb3>] kernel_thread_helper+0x7/0x14
       =======================
      Signed-off-by: default avatarJoonwoo Park <joonwpark81@gmail.com>
      Signed-off-by: default avatarJoel Becker <joel.becker@oracle.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      116ba5d5
    • Joonwoo Park's avatar
      configfs: dir.c fix possible recursive locking · ba611edf
      Joonwoo Park authored
      configfs_register_subsystem() with default_groups triggers recursive locking.
      it seems that mutex_lock_nested is needed.
      
      =============================================
      [ INFO: possible recursive locking detected ]
      2.6.24-rc6 #141
      ---------------------------------------------
      swapper/1 is trying to acquire lock:
       (&sb->s_type->i_mutex_key#3){--..}, at: [<c40ca76f>] configfs_attach_group+0x4f/0x190
      
      but task is already holding lock:
       (&sb->s_type->i_mutex_key#3){--..}, at: [<c40ca9d5>] configfs_register_subsystem+0x55/0x130
      
      other info that might help us debug this:
      1 lock held by swapper/1:
       #0:  (&sb->s_type->i_mutex_key#3){--..}, at: [<c40ca9d5>] configfs_register_subsystem+0x55/0x130
      
      stack backtrace:
      Pid: 1, comm: swapper Not tainted 2.6.24-rc6 #141
       [<c40053ba>] show_trace_log_lvl+0x1a/0x30
       [<c4005e82>] show_trace+0x12/0x20
       [<c400687e>] dump_stack+0x6e/0x80
       [<c404ec72>] __lock_acquire+0xe62/0x1120
       [<c404efb2>] lock_acquire+0x82/0xa0
       [<c43fdad8>] mutex_lock_nested+0x98/0x2e0
       [<c40ca76f>] configfs_attach_group+0x4f/0x190
       [<c40caa46>] configfs_register_subsystem+0xc6/0x130
       [<c45c8186>] init_netconsole+0x2b6/0x300
       [<c45a75f2>] kernel_init+0x142/0x320
       [<c4004fb3>] kernel_thread_helper+0x7/0x14
       =======================
      Signed-off-by: default avatarJoonwoo Park <joonwpark81@gmail.com>
      Signed-off-by: default avatarJoel Becker <joel.becker@oracle.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      ba611edf
    • Joel Becker's avatar
      configfs: Remove EXPERIMENTAL · 02ac0499
      Joel Becker authored
      configfs has been alive and kicking for a while now.  It underpins some
      non-EXPERIMENTAL subsystems, such as OCFS2's cluster stack.
      Signed-off-by: default avatarJoel Becker <joel.becker@oracle.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      02ac0499
    • Mark Fasheh's avatar
      ocfs2: bump version number · 0e5ae032
      Mark Fasheh authored
      Bump the printed version to 1.5.0. This helps us quickly identify which
      version of Ocfs2 a bug filer is running.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      0e5ae032
    • Tao Ma's avatar
      ocfs2/dlm: Clear joining_node on hearbeat node down · 2d4b1cbb
      Tao Ma authored
      Currently the process of dlm join contains 2 steps: query join and assert join.
      After query join, the joined node will set its joining_node. So if the joining
      node happens to panic before the 2nd step, the joined node will fail to clear
      its joining_node flag because that node isn't in the domain map. It at least
      cause 2 problems.
      1. All the new join request will fail. So no new node can mount the volume.
      2. The joined node can't umount the volume since during the umount process it
         has to wait for the joining_node to be unknown. So the umount will be hanged.
      
      The solution is to clear the joining_node before we check the domain map.
      Signed-off-by: default avatarTao Ma <tao.ma@oracle.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      2d4b1cbb
    • Marcin Slusarz's avatar
      ocfs2: convert byte order of constant instead of variable · 4092d49f
      Marcin Slusarz authored
      Convert byte order of constant instead of variable it will be done at
      compile time vs run time. Remove unused le32_and_cpu.
      Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      4092d49f
    • Sunil Mushran's avatar
      ocfs2: Update default cluster timeouts · 17104683
      Sunil Mushran authored
      Lots of people are having trouble with the default timeouts, which are too
      low. These new values are derived from an informal survey taken on
      ocfs2-users, as well as data from bug reports. This should reduce the amount
      of cluster disconnects and subsequent fencing seen during normal workloads.
      Signed-off-by: default avatarSunil Mushran <sunil.mushran@oracle.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      17104683
    • Jan Kara's avatar
      ocfs2: printf fixes · 634bf74d
      Jan Kara authored
      Explicitely convert loff_t to long long in printf. Just for sure...
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      634bf74d
    • Jan Kara's avatar
      ocfs2: Use generic_file_llseek · 32c3c0e2
      Jan Kara authored
      We should use generic_file_llseek() and not default_llseek() so that
      s_maxbytes gets properly checked when seeking.
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      32c3c0e2
    • Jan Kara's avatar
      ocfs2: Safer read_inline_data() · d2849fb2
      Jan Kara authored
      In ocfs2_read_inline_data() we should store file size in loff_t. Although
      the file size should fit in 32 bits we cannot be sure in case filesystem is
      corrupted.
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      d2849fb2
    • Jan Kara's avatar
      ocfs2: Silence false lockdep warnings · 5fa0613e
      Jan Kara authored
      Create separate lockdep lock classes for system file's i_mutexes. They are
      used to guard allocations and similar things and thus rank differently
      than i_mutex of a regular file or directory.
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      5fa0613e
    • Mark Fasheh's avatar
      [PATCH 2/2] ocfs2: cluster aware flock() · 53fc622b
      Mark Fasheh authored
      Hook up ocfs2_flock(), using the new flock lock type in dlmglue.c. A new
      mount option, "localflocks" is added so that users can revert to old
      functionality as need be.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      53fc622b
    • Mark Fasheh's avatar
      [PATCH 1/2] ocfs2: add flock lock type · cf8e06f1
      Mark Fasheh authored
      This adds a new dlmglue lock type which is intended to back flock()
      requests.
      
      Since these locks are driven from userspace, usage rules are much more
      liberal than the typical Ocfs2 internal cluster lock. As a result, we can't
      make use of most dlmglue features - lock caching and lock level
      optimizations in particular. Additionally, userspace is free to deadlock
      itself, so we have to deal with that in the same way as the rest of the
      kernel - by allowing a signal to abort a lock request.
      
      In order to keep ocfs2_cluster_lock() complexity down, ocfs2_file_lock()
      does it's own dlm coordination. We still use the same helper functions
      though, so duplicated code is kept to a minimum.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      cf8e06f1
    • Sunil Mushran's avatar
      ocfs2: Local alloc window size changeable via mount option · 2fbe8d1e
      Sunil Mushran authored
      Local alloc is a performance optimization in ocfs2 in which a node
      takes a window of bits from the global bitmap and then uses that for
      all small local allocations. This window size is fixed to 8MB currently.
      This patch allows users to specify the window size in MB including
      disabling it by passing in 0. If the number specified is too large,
      the fs will use the default value of 8MB.
      
      mount -o localalloc=X /dev/sdX /mntpoint
      Signed-off-by: default avatarSunil Mushran <sunil.mushran@oracle.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      2fbe8d1e
    • Mark Fasheh's avatar
      ocfs2: Support commit= mount option · d147b3d6
      Mark Fasheh authored
      Mostly taken from ext3. This allows the user to set the jbd commit interval,
      in seconds. The default of 5 seconds stays the same, but now users can
      easily increase the commit interval. Typically, this would be increased in
      order to benefit performance at the expense of data-safety.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      d147b3d6
    • Mark Fasheh's avatar
      ocfs2: Add missing permission checks · 0957f007
      Mark Fasheh authored
      Check that an online resize is being driven by a user with permission to
      change system resource limits.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      0957f007
    • Tao Ma's avatar
      [PATCH 2/2] ocfs2: Implement group add for online resize · 7909f2bf
      Tao Ma authored
      This patch adds the ability for a userspace program to request that a
      properly formatted cluster group be added to the main allocation bitmap for
      an Ocfs2 file system. The request is made via an ioctl, OCFS2_IOC_GROUP_ADD.
      On a high level, this is similar to ext3, but we use a different ioctl as
      the structure which has to be passed through is different.
      
      During an online resize, tunefs.ocfs2 will format any new cluster groups
      which must be added to complete the resize, and call OCFS2_IOC_GROUP_ADD on
      each one. Kernel verifies that the core cluster group information is valid
      and then does the work of linking it into the global allocation bitmap.
      Signed-off-by: default avatarTao Ma <tao.ma@oracle.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      7909f2bf
    • Tao Ma's avatar
      [PATCH 1/2] ocfs2: Add group extend for online resize · d659072f
      Tao Ma authored
      This patch adds the ability for a userspace program to request an extend of
      last cluster group on an Ocfs2 file system. The request is made via ioctl,
      OCFS2_IOC_GROUP_EXTEND. This is derived from EXT3_IOC_GROUP_EXTEND, but is
      obviously Ocfs2 specific.
      
      tunefs.ocfs2 would call this for an online-resize operation if the last
      cluster group isn't full.
      Signed-off-by: default avatarTao Ma <tao.ma@oracle.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      d659072f
    • Hans de Goede's avatar
      [SCSI] usbstorage: use last_sector_bug flag universally · 23c3e290
      Hans de Goede authored
      This patch sets the last_sector_bug flag to 1 for all USB disks. This is
      needed to makes the cardreader on various HP multifunction printers work.
      
      Since the performance impact is negible we set this flag for all USB disks to
      avoid an unusual_devs.h nightmare.
      Signed-off-by: default avatarHans de Goede <j.w.r.degoede@hhs.nl>
      Acked-by: default avatarMatthew Dharm <mdharm-usb@one-eyed-alien.net>
      Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
      23c3e290
    • Tao Ma's avatar
      ocfs2: Reserve ioctl range · 7f68fc28
      Tao Ma authored
      We need to reserve at least two ioctls for online-resize. Reserve a small
      range of ioctls for Ocfs2 use in Documentation/ioctl-number.txt. This should
      give us enough room for future growth.
      Signed-off-by: default avatarTao Ma <tao.ma@oracle.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      7f68fc28
    • Tao Ma's avatar
      ocfs2: Initalize bitmap_cpg of ocfs2_super to be the maximum. · e9d578a8
      Tao Ma authored
      This value is initialized from global_bitmap->id2.i_chain.cl_cpg. If there
      is only 1 group, it will be equal to the total clusters in the volume. So
      as for online resize, it should change for all the nodes in the cluster.
      It isn't easy and there is no corresponding lock for it.
      
      bitmap_cpg is only used in 2 areas:
      1. Check whether the suballoc is too large for us to allocate from the global
         bitmap, so it is little used. And now the suballoc size is 2048, it rarely
         meet this situation and the check is almost useless.
      2. Calculate which group a cluster belongs to. We use it during truncate to
         figure out which cluster group an extent belongs too. But we should be OK
         if we increase it though as the cluster group calculated shouldn't change
         and we only ever have a small bitmap_cpg on file systems with a single
         cluster group.
      Signed-off-by: default avatarTao Ma <tao.ma@oracle.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      e9d578a8
    • Herbert Xu's avatar
      [CRYPTO] hifn795x: Disallow built-in hifn795x when HW_RANDOM is m · 946fef4e
      Herbert Xu authored
      Currently it is possible to select HW_RANDOM as a module and have
      hifn795x built-in.  This causes a build problem because hifn795x
      will then call hwrng_register which isn't built-in.
      
      This patch introduces a new config option to control the hifn795x
      RNG which lets us avoid this problem.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      946fef4e
    • Mark Fasheh's avatar
      ocfs2: Documentation update · 1252c434
      Mark Fasheh authored
      Remove 'readpages' from the list in ocfs2.txt. Instead of having two
      identical lists, I just removed the list in the OCFS2 section of fs/Kconfig
      and added a pointer to Documentation/filesystems/ocfs2.txt.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      1252c434
    • Mark Fasheh's avatar
      ocfs2: Readpages support · 628a24f5
      Mark Fasheh authored
      Add ->readpages support to Ocfs2. This is rather trivial - all it required
      is a small update to ocfs2_get_block (for mapping full extents via b_size)
      and an ocfs2_readpages() function which partially mirrors ocfs2_readpage().
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      628a24f5
    • Joel Becker's avatar
      dlm: Split lock mode and flag constants into a sharable header. · d69a3ad6
      Joel Becker authored
      This allows others to use the DLM constants without being tied to the
      function API of fs/dlm.
      Signed-off-by: default avatarJoel Becker <joel.becker@oracle.com>
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      Signed-off-by: default avatarDavid Teigland <teigland@redhat.com>
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      d69a3ad6
    • Mark Fasheh's avatar
      ocfs2: Rename ocfs2_meta_[un]lock · e63aecb6
      Mark Fasheh authored
      Call this the "inode_lock" now, since it covers both data and meta data.
      This patch makes no functional changes.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      e63aecb6
    • Mark Fasheh's avatar
      ocfs2: Remove data locks · c934a92d
      Mark Fasheh authored
      The meta lock now covers both meta data and data, so this just removes the
      now-redundant data lock.
      
      Combining locks saves us a round of lock mastery per inode and one less lock
      to ping between nodes during read/write.
      
      We don't lose much - since meta locks were always held before a data lock
      (and at the same level) ordered writeout mode (the default) ensured that
      flushing for the meta data lock also pushed out data anyways.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      c934a92d
    • Mark Fasheh's avatar
      ocfs2: Add data downconvert worker to inode lock · f1f54068
      Mark Fasheh authored
      In order to extend inode lock coverage to inode data, we use the same data
      downconvert worker with only a small modification to only do work for
      regular files.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      f1f54068
    • Mark Fasheh's avatar
      ocfs2: Remove mount/unmount votes · 34d024f8
      Mark Fasheh authored
      The node maps that are set/unset by these votes are no longer relevant, thus
      we can remove the mount and umount votes. Since those are the last two
      remaining votes, we can also remove the entire vote infrastructure.
      
      The vote thread has been renamed to the downconvert thread, and the small
      amount of functionality related to managing it has been moved into
      fs/ocfs2/dlmglue.c. All references to votes have been removed or updated.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      34d024f8
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 99f1c97d
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (81 commits)
        RDMA/cxgb3: Fix the T3A workaround checks
        IB/ipath: Remove unnecessary cast
        IPoIB: Constify seq_operations function pointer tables
        RDMA/cxgb3: Mark QP as privileged based on user capabilities
        RDMA/cxgb3: Fix page shift calculation in build_phys_page_list()
        RDMA/cxgb3: Flush the receive queue when closing
        IB/ipath: Trivial simplification of ipath_make_ud_req()
        IB/mthca: Update latest "native Arbel" firmware revision
        IPoIB: Remove redundant check of netif_queue_stopped() in xmit handler
        IB/ipath: Add mappings from HW register to PortInfo port physical state
        IB/ipath: Changes to support PIO bandwidth check on IBA7220
        IB/ipath: Minor cleanup of unused fields and chip-specific errors
        IB/ipath: New sysfs entries to control 7220 features
        IB/ipath: Add new chip-specific functions to older chips, consistent init
        IB/ipath: Remove unused MDIO interface code
        IB/ehca: Prevent RDMA-related connection failures on some eHCA2 hardware
        IB/ehca: Add "port connection autodetect mode"
        IB/ehca: Define array to store SMI/GSI QPs
        IB/ehca: Remove CQ-QP-link before destroying QP in error path of create_qp()
        IB/iser: Add change_queue_depth method
        ...
      99f1c97d
    • Mark Fasheh's avatar
      ocfs2: Remove fs dependency on ocfs2_heartbeat module · 6f7b056e
      Mark Fasheh authored
      Now that the dlm exposes domain information to us, we don't need generic
      node up / node down callbacks. And since the DLM is only telling us when a
      node goes down unexpectedly, we no longer need to optimize away node down
      callbacks via the umount map.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      6f7b056e
    • Mark Fasheh's avatar
      ocfs2_dlm: Call node eviction callbacks from heartbeat handler · 6561168c
      Mark Fasheh authored
      With this, a dlm client can take advantage of the group protocol in the dlm
      to get full notification whenever a node within the dlm domain leaves
      unexpectedly.
      Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
      6561168c