1. 25 Jan, 2008 40 commits
    • 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
    • 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
    • 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
    • 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
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6 · 2d94dfc8
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6:
        mount options: fix jfs
        JFS: simplify types to get rid of sparse warning
        JFS: FIx one more plain integer as NULL pointer warning
        JFS: Remove defconfig ptr comparison to 0
        JFS: use DIV_ROUND_UP where appropriate
        Remove unnecessary kmalloc casts in the jfs filesystem
        JFS is missing a memory barrier
        JFS: Make sure special inode data is written after journal is flushed
        JFS: clear PAGECACHE_TAG_DIRTY for no-write pages
      2d94dfc8
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/selinux-2.6 · b47711bf
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/selinux-2.6:
        selinux: make mls_compute_sid always polyinstantiate
        security/selinux: constify function pointer tables and fields
        security: add a secctx_to_secid() hook
        security: call security_file_permission from rw_verify_area
        security: remove security_sb_post_mountroot hook
        Security: remove security.h include from mm.h
        Security: remove security_file_mmap hook sparse-warnings (NULL as 0).
        Security: add get, set, and cloning of superblock security information
        security/selinux: Add missing "space"
      b47711bf
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 · 7556afa0
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6:
        [AVR32] extint: Set initial irq type to low level
        [AVR32] extint: change set_irq_type() handling
        [AVR32] NMI debugging
        [AVR32] constify function pointer tables
        [AVR32] ATNGW100: Update defconfig
        [AVR32] ATSTK1002: Update defconfig
        [AVR32] Kconfig: Choose daughterboard instead of CPU
        [AVR32] Add support for ATSTK1003 and ATSTK1004
        [AVR32] Clean up external DAC setup code
        [AVR32] ATSTK1000: Move gpio-leds setup to setup.c
        [AVR32] Add support for AT32AP7001 and AT32AP7002
        [AVR32] Provide more CPU information in /proc/cpuinfo and dmesg
        [AVR32] Oprofile support
        [AVR32] Include instrumentation menu
        Disable VGA text console for AVR32 architecture
        [AVR32] Enable debugging only when needed
        ptrace: Call arch_ptrace_attach() when request=PTRACE_TRACEME
        [AVR32] Remove redundant try_to_freeze() call from do_signal()
        [AVR32] Drop GFP_COMP for DMA memory allocations
      7556afa0
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw · e07dd2ad
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (56 commits)
        [GFS2] Allow journal recovery on read-only mount
        [GFS2] Lockup on error
        [GFS2] Fix page_mkwrite truncation race path
        [GFS2] Fix typo
        [GFS2] Fix write alloc required shortcut calculation
        [GFS2] gfs2_alloc_required performance
        [GFS2] Remove unneeded i_spin
        [GFS2] Reduce inode size by moving i_alloc out of line
        [GFS2] Fix assert in log code
        [GFS2] Fix problems relating to execution of files on GFS2
        [GFS2] Initialize extent_list earlier
        [GFS2] Allow page migration for writeback and ordered pages
        [GFS2] Remove unused variable
        [GFS2] Fix log block mapper
        [GFS2] Minor correction
        [GFS2] Eliminate the no longer needed sd_statfs_mutex
        [GFS2] Incremental patch to fix compiler warning
        [GFS2] Function meta_read optimization
        [GFS2] Only fetch the dinode once in block_map
        [GFS2] Reorganize function gfs2_glmutex_lock
        ...
      e07dd2ad
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · eba0e319
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (125 commits)
        [CRYPTO] twofish: Merge common glue code
        [CRYPTO] hifn_795x: Fixup container_of() usage
        [CRYPTO] cast6: inline bloat--
        [CRYPTO] api: Set default CRYPTO_MINALIGN to unsigned long long
        [CRYPTO] tcrypt: Make xcbc available as a standalone test
        [CRYPTO] xcbc: Remove bogus hash/cipher test
        [CRYPTO] xcbc: Fix algorithm leak when block size check fails
        [CRYPTO] tcrypt: Zero axbuf in the right function
        [CRYPTO] padlock: Only reset the key once for each CBC and ECB operation
        [CRYPTO] api: Include sched.h for cond_resched in scatterwalk.h
        [CRYPTO] salsa20-asm: Remove unnecessary dependency on CRYPTO_SALSA20
        [CRYPTO] tcrypt: Add select of AEAD
        [CRYPTO] salsa20: Add x86-64 assembly version
        [CRYPTO] salsa20_i586: Salsa20 stream cipher algorithm (i586 version)
        [CRYPTO] gcm: Introduce rfc4106
        [CRYPTO] api: Show async type
        [CRYPTO] chainiv: Avoid lock spinning where possible
        [CRYPTO] seqiv: Add select AEAD in Kconfig
        [CRYPTO] scatterwalk: Handle zero nbytes in scatterwalk_map_and_copy
        [CRYPTO] null: Allow setkey on digest_null 
        ...
      eba0e319
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6 · df8dc74e
      Linus Torvalds authored
      This can be broken down into these major areas:
       - Documentation updates (language translations and fixes, as
         well as kobject and kset documenatation updates.)
       - major kset/kobject/ktype rework and fixes.  This cleans up the
         kset and kobject and ktype relationship and architecture,
         making sense of things now, and good documenation and samples
         are provided for others to use.  Also the attributes for
         kobjects are much easier to handle now.  This cleaned up a LOT
         of code all through the kernel, making kobjects easier to use
         if you want to.
       - struct bus_type has been reworked to now handle the lifetime
         rules properly, as the kobject is properly dynamic.
       - struct driver has also been reworked, and now the lifetime
         issues are resolved.
       - the block subsystem has been converted to use struct device
         now, and not "raw" kobjects.  This patch has been in the -mm
         tree for over a year now, and finally all the issues are
         worked out with it.  Older distros now properly work with new
         kernels, and no userspace updates are needed at all.
       - nozomi driver is added.  This has also been in -mm for a long
         time, and many people have asked for it to go in.  It is now
         in good enough shape to do so.
       - lots of class_device conversions to use struct device instead.
         The tree is almost all cleaned up now, only SCSI and IB is the
         remaining code to fix up...
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6: (196 commits)
        Driver core: coding style fixes
        Kobject: fix coding style issues in kobject c files
        Kobject: fix coding style issues in kobject.h
        Driver core: fix coding style issues in device.h
        spi: use class iteration api
        scsi: use class iteration api
        rtc: use class iteration api
        power supply : use class iteration api
        ieee1394: use class iteration api
        Driver Core: add class iteration api
        Driver core: Cleanup get_device_parent() in device_add() and device_move()
        UIO: constify function pointer tables
        Driver Core: constify the name passed to platform_device_register_simple
        driver core: fix build with SYSFS=n
        sysfs: make SYSFS_DEPRECATED depend on SYSFS
        Driver core: use LIST_HEAD instead of call to INIT_LIST_HEAD in __init
        kobject: add sample code for how to use ksets/ktypes/kobjects
        kobject: add sample code for how to use kobjects in a simple manner.
        kobject: update the kobject/kset documentation
        kobject: remove old, outdated documentation.
        ...
      df8dc74e
    • Pekka Enberg's avatar
      slab: fix bootstrap on memoryless node · 556a169d
      Pekka Enberg authored
      
      
      If the node we're booting on doesn't have memory, bootstrapping kmalloc()
      caches resorts to fallback_alloc() which requires ->nodelists set for all
      nodes.  Fix that by calling set_up_list3s() for CACHE_CACHE in
      kmem_cache_init().
      
      As kmem_getpages() is called with GFP_THISNODE set, this used to work before
      because of breakage in 2.6.22 and before with GFP_THISNODE returning pages from
      the wrong node if a node had no memory. So it may have worked accidentally and
      in an unsafe manner because the pages would have been associated with the wrong
      node which could trigger bug ons and locking troubles.
      Tested-by: default avatarMel Gorman <mel@csn.ul.ie>
      Tested-by: default avatarOlaf Hering <olaf@aepfle.de>
      Reviewed-by: default avatarChristoph Lameter <clameter@sgi.com>
      Signed-off-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
      [ With additional one-liner by Olaf Hering  - Linus ]
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      556a169d
    • Karsten Keil's avatar
      fix oops on rmmod capidrv · eb36f4fc
      Karsten Keil authored
      
      
      Fix overwriting the stack with the version string
      (it is currently 10 bytes + zero) when unloading the
      capidrv module. Safeguard against overwriting it
      should the version string grow in the future.
      
      Should fix Kernel Bug Tracker Bug 9696.
      Signed-off-by: default avatarGerd v. Egidy <gerd.von.egidy@intra2net.com>
      Acked-by: default avatarKarsten Keil <kkeil@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      eb36f4fc
    • Abhijith Das's avatar
      [GFS2] Allow journal recovery on read-only mount · 7bc5c414
      Abhijith Das authored
      
      
      This patch allows gfs2 to perform journal recovery even if it is mounted
      read-only. Strictly speaking, a read-only mount should not be writing to
      the filesystem, but we do this only to perform journal recovery. A
      read-only mount will fail if we don't recover the dirty journal. Also,
      when gfs2 is used as a root filesystem, it will be mounted read-only
      before being mounted read-write during the boot sequence. A failed
      read-only mount will panic the machine during bootup.
      Signed-off-by: default avatarAbhijith Das <adas@redhat.com>
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      7bc5c414
    • Bob Peterson's avatar
      [GFS2] Lockup on error · 1b8177ec
      Bob Peterson authored
      
      
      I spotted this bug while I was digging around.  Looks like it could cause
      a lockup in some rare error condition.
      Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      1b8177ec
    • Steven Whitehouse's avatar
      [GFS2] Fix page_mkwrite truncation race path · b7fe2e39
      Steven Whitehouse authored
      
      
      There was a bug in the truncation/invalidation race path for
      ->page_mkwrite for gfs2. It ought to return 0 so that the effect is the
      same as if the page was truncated at any of the other points at which
      the page_lock is dropped. This will result in the restart of the whole
      page fault path. If it was due to a real truncation (as opposed to an
      invalidate because we let a glock go) then the ->fault path will pick
      that up when it gets called again.
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      b7fe2e39
    • Bob Peterson's avatar
      [GFS2] Fix typo · 3e5cd087
      Bob Peterson authored
      
      
      This patch fixes a minor typo.  Surprisingly, it still compiled.
      Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      3e5cd087
    • Steven Whitehouse's avatar
      [GFS2] Fix write alloc required shortcut calculation · 1af53572
      Steven Whitehouse authored
      
      
      The comparison was being made against the wrong quantity.
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      1af53572
    • Bob Peterson's avatar
      [GFS2] gfs2_alloc_required performance · 05220535
      Bob Peterson authored
      
      
      This is a small I/O performance enhancement to gfs2.  (Actually, it is a rework of
      an earlier version I got wrong).  The idea here is to check if the write extends
      past the last block in the file.  If so, the function can save itself a lot of
      time and trouble because it knows an allocate will be required.  Benchmarks like
      iozone should see better performance.
      Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      05220535
    • Bob Peterson's avatar
      [GFS2] Remove unneeded i_spin · 598278bd
      Bob Peterson authored
      
      
      This patch removes a vestigial variable "i_spin" from the gfs2_inode
      structure.  This not only saves us memory (>300000 of these in memory
      for the oom test) it also saves us time because we don't have to
      spend time initializing it (i.e. slightly better performance).
      Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      598278bd
    • Steven Whitehouse's avatar
      [GFS2] Reduce inode size by moving i_alloc out of line · 6dbd8224
      Steven Whitehouse authored
      
      
      It is possible to reduce the size of GFS2 inodes by taking the i_alloc
      structure out of the gfs2_inode. This patch allocates the i_alloc
      structure whenever its needed, and frees it afterward. This decreases
      the amount of low memory we use at the expense of requiring a memory
      allocation for each page or partial page that we write. A quick test
      with postmark shows that the overhead is not measurable and I also note
      that OCFS2 use the same approach.
      
      In the future I'd like to solve the problem by shrinking down the size
      of the members of the i_alloc structure, but for now, this reduces the
      immediate problem of using too much low-memory on x86 and doesn't add
      too much overhead.
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      6dbd8224
    • Steven Whitehouse's avatar
      [GFS2] Fix assert in log code · ac39aadd
      Steven Whitehouse authored
      
      
      Although the values were all being calculated correctly, there was a
      race in the assert due to the way it was using atomic variables. This
      changes the value we assert on so that we get the same effect by testing
      a different variable. This prevents the assert triggering when it shouldn't.
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      ac39aadd