06 Dec, 2009

11 commits

  • …el/git/tip/linux-2.6-tip

    * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    mutex: Fix missing conditions to build mutex_spin_on_owner()
    mutex: Better control mutex adaptive spinning config
    locking, task_struct: Reduce size on TRACE_IRQFLAGS and 64bit
    locking: Use __[SPIN|RW]_LOCK_UNLOCKED in [spin|rw]_lock_init()
    locking: Remove unused prototype
    locking: Reduce ifdefs in kernel/spinlock.c
    locking: Make inlining decision Kconfig based

    Linus Torvalds
     
  • * 'core-ipi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    generic-ipi: Add smp_call_function_any()
    generic-ipi: Fix misleading smp_call_function*() description

    Linus Torvalds
     
  • …/git/tip/linux-2.6-tip

    * 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (63 commits)
    x86, Calgary IOMMU quirk: Find nearest matching Calgary while walking up the PCI tree
    x86/amd-iommu: Remove amd_iommu_pd_table
    x86/amd-iommu: Move reset_iommu_command_buffer out of locked code
    x86/amd-iommu: Cleanup DTE flushing code
    x86/amd-iommu: Introduce iommu_flush_device() function
    x86/amd-iommu: Cleanup attach/detach_device code
    x86/amd-iommu: Keep devices per domain in a list
    x86/amd-iommu: Add device bind reference counting
    x86/amd-iommu: Use dev->arch->iommu to store iommu related information
    x86/amd-iommu: Remove support for domain sharing
    x86/amd-iommu: Rearrange dma_ops related functions
    x86/amd-iommu: Move some pte allocation functions in the right section
    x86/amd-iommu: Remove iommu parameter from dma_ops_domain_alloc
    x86/amd-iommu: Use get_device_id and check_device where appropriate
    x86/amd-iommu: Move find_protection_domain to helper functions
    x86/amd-iommu: Simplify get_device_resources()
    x86/amd-iommu: Let domain_for_device handle aliases
    x86/amd-iommu: Remove iommu specific handling from dma_ops path
    x86/amd-iommu: Remove iommu parameter from __(un)map_single
    x86/amd-iommu: Make alloc_new_range aware of multiple IOMMUs
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (31 commits)
    GFS2: Fix glock refcount issues
    writeback: remove unused nonblocking and congestion checks (gfs2)
    GFS2: drop rindex glock to refresh rindex list
    GFS2: Tag all metadata with jid
    GFS2: Locking order fix in gfs2_check_blk_state
    GFS2: Remove dirent_first() function
    GFS2: Display nobarrier option in /proc/mounts
    GFS2: add barrier/nobarrier mount options
    GFS2: remove division from new statfs code
    GFS2: Improve statfs and quota usability
    GFS2: Use dquot_send_warning()
    VFS: Export dquot_send_warning
    GFS2: Add set_xquota support
    GFS2: Add get_xquota support
    GFS2: Clean up gfs2_adjust_quota() and do_glock()
    GFS2: Remove constant argument from qd_get()
    GFS2: Remove constant argument from qdsb_get()
    GFS2: Add proper error reporting to quota sync via sysfs
    GFS2: Add get_xstate quota function
    GFS2: Remove obsolete code in quota.c
    ...

    Linus Torvalds
     
  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (30 commits)
    TOMOYO: Add recursive directory matching operator support.
    remove CONFIG_SECURITY_FILE_CAPABILITIES compile option
    SELinux: print denials for buggy kernel with unknown perms
    Silence the existing API for capability version compatibility check.
    LSM: Move security_path_chmod()/security_path_chown() to after mutex_lock().
    SELinux: header generation may hit infinite loop
    selinux: Fix warnings
    security: report the module name to security_module_request
    Config option to set a default LSM
    sysctl: require CAP_SYS_RAWIO to set mmap_min_addr
    tpm: autoload tpm_tis based on system PnP IDs
    tpm_tis: TPM_STS_DATA_EXPECT workaround
    define convenient securebits masks for prctl users (v2)
    tpm: fix header for modular build
    tomoyo: improve hash bucket dispersion
    tpm add default function definitions
    LSM: imbed ima calls in the security hooks
    SELinux: add .gitignore files for dynamic classes
    security: remove root_plug
    SELinux: fix locking issue introduced with c6d3aaa4e35c71a3
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6: (50 commits)
    pcmcia: rework the irq_req_t typedef
    pcmcia: remove deprecated handle_to_dev() macro
    pcmcia: pcmcia_request_window() doesn't need a pointer to a pointer
    pcmcia: remove unused "window_t" typedef
    pcmcia: move some window-related code to pcmcia_ioctl.c
    pcmcia: Change window_handle_t logic to unsigned long
    pcmcia: Pass struct pcmcia_socket to pcmcia_get_mem_page()
    pcmcia: Pass struct pcmcia_device to pcmcia_map_mem_page()
    pcmcia: Pass struct pcmcia_device to pcmcia_release_window()
    drivers/pcmcia: remove unnecessary kzalloc
    pcmcia: correct handling for Zoomed Video registers in topic.h
    pcmcia: fix printk formats
    pcmcia: autoload module pcmcia
    pcmcia/staging: update comedi drivers
    PCMCIA: stop duplicating pci_irq in soc_pcmcia_socket
    PCMCIA: ss: allow PCI IRQs > 255
    PCMCIA: soc_common: remove 'dev' member from soc_pcmcia_socket
    PCMCIA: soc_common: constify soc_pcmcia_socket ops member
    PCMCIA: sa1111: remove duplicated initializers
    PCMCIA: sa1111: wrap soc_pcmcia_socket to contain sa1111 specific data
    ...

    Linus Torvalds
     
  • Use the new unreachable() macro instead of for(;;);

    Signed-off-by: David Daney
    Acked-by: Haavard Skinnemoen
    Signed-off-by: Linus Torvalds

    David Daney
     
  • Use the new unreachable() macro instead of for(;;);

    Signed-off-by: David Daney
    Acked-by: Martin Schwidefsky
    CC: Heiko Carstens
    CC: linux390@de.ibm.com
    CC: linux-s390@vger.kernel.org
    Signed-off-by: Linus Torvalds

    David Daney
     
  • Use the new unreachable() macro instead of while(1);

    Signed-off-by: David Daney
    Acked-by: Ralf Baechle
    CC: linux-mips@linux-mips.org
    Signed-off-by: Linus Torvalds

    David Daney
     
  • Use the new unreachable() macro instead of for(;;);. When
    allyesconfig is built with a GCC-4.5 snapshot on i686 the size of the
    text segment is reduced by 3987 bytes (from 6827019 to 6823032).

    Signed-off-by: David Daney
    Acked-by: "H. Peter Anvin"
    CC: Thomas Gleixner
    CC: Ingo Molnar
    CC: x86@kernel.org
    Signed-off-by: Linus Torvalds

    David Daney
     
  • Starting with version 4.5, GCC has a new built-in function
    __builtin_unreachable() that can be used in places like the kernel's
    BUG() where inline assembly is used to transfer control flow. This
    eliminated the need for an endless loop in these places.

    The patch adds a new macro 'unreachable()' that will expand to either
    __builtin_unreachable() or an endless loop depending on the compiler
    version.

    Change from v1: Simplify unreachable() for non-GCC 4.5 case.

    Signed-off-by: David Daney
    Acked-by: Ralf Baechle
    Signed-off-by: Linus Torvalds

    David Daney
     

03 Dec, 2009

29 commits

  • This patch fixes some ref counting issues. Firstly by moving
    the point at which we drop the ref count after a dlm lock
    operation has completed we ensure that we never call
    gfs2_glock_hold() on a lock with a zero ref count.

    Secondly, by using atomic_dec_and_lock() in gfs2_glock_put()
    we ensure that at no time will a glock with zero ref count
    appear on the lru_list. That means that we can remove the
    check for this in our shrinker (which was racy).

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • No one is calling wb_writeback and write_cache_pages with
    wbc.nonblocking=1 any more. And lumpy pageout will want to do
    nonblocking writeback without the congestion wait.

    Signed-off-by: Wu Fengguang
    Signed-off-by: Steven Whitehouse

    Wu Fengguang
     
  • When a gfs2 filesystem is grown, it needs to rebuild the rindex list to be able
    to use the new space. gfs2 does this when the rindex is marked not uptodate,
    which happens when the rindex glock is dropped. However, on a single node
    setup, there is never any reason to drop the rindex glock, so gfs2 never
    invalidates the the rindex. This patch makes gfs2 automatically drop the
    rindex glock after filesystem grows, so it can refresh the rindex list.

    Signed-off-by: Benjamin Marzinski
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     
  • There are two spare field in the header common to all GFS2
    metadata. One is just the right size to fit a journal id
    in it, and this patch updates the journal code so that each
    time a metadata block is modified, we tag it with the journal
    id of the node which is performing the modification.

    The reason for this is that it should make it much easier to
    debug issues which arise if we can tell which node was the
    last to modify a particular metadata block.

    Since the field is updated before the block is written into
    the journal, each journal should only contain metadata which
    is tagged with its own journal id. The one exception to this
    is the journal header block, which might have a different node's
    id in it, if that journal was recovered by another node in the
    cluster.

    Thus each journal will contain a record of which nodes recovered
    it, via the journal header.

    The other field in the metadata header could potentially be
    used to hold information about what kind of operation was
    performed, but for the time being we just zero it on each
    transaction so that if we use it for that in future, we'll
    know that the information (where it exists) is reliable.

    I did consider using the other field to hold the journal
    sequence number, however since in GFS2's journaling we write
    the modified data into the journal and not the original
    data, this gives no information as to what action caused the
    modification, so I think we can probably come up with a better
    use for those 64 bits in the future.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • In some cases we already have the rindex lock when
    we enter this function.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • This function only had one caller left, and that caller only
    called it for leaf blocks, hence one branch of the "if" was
    never taken. In addition the call to get_left had already
    verified the metadata type, so the function can be reduced
    to a single line of code in its caller.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • Since the default is barriers on, this only displays the
    nobarrier option when that is active.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • Currently gfs2 issues barrier unconditionally. There are various reasons
    to disable them, be that just for testing or for stupid devices flushing
    large battert backed caches. Add a nobarrier option that matches xfs and
    btrfs for this. Also add a symmetric barrier option to turn it back on
    at remount time.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Steven Whitehouse

    Christoph Hellwig
     
  • It's not necessary to do any 64bit division for the statfs sync code, so
    remove it.

    Signed-off-by: Benjamin Marzinski
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     
  • GFS2 now has three new mount options, statfs_quantum, quota_quantum and
    statfs_percent. statfs_quantum and quota_quantum simply allow you to
    set the tunables of the same name. Setting setting statfs_quantum to 0
    will also turn on the statfs_slow tunable. statfs_percent accepts an
    integer between 0 and 100. Numbers between 1 and 100 will cause GFS2 to
    do any early sync when the local number of blocks free changes by at
    least statfs_percent from the totoal number of blocks free. Setting
    statfs_percent to 0 disables this.

    Signed-off-by: Benjamin Marzinski
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     
  • This adds support to GFS2 to send quota warnings via netlink.
    Also it removes a stray \r which was left over from when the
    code used to print warnings on the console.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • Sending a message to userspace in a generic format to warn
    of events (e.g. quota exceeded) in the quota subsystem is
    a generically useful feature. This patch makes some minor
    changes to the send_message function from dquot.c renaming
    it quota_send_message, moving it to quota.c and exporting it
    for use by filesystems which do not use the dquot code.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • This patch adds the ability to set GFS2 quota limit and
    warning levels via the XFS quota API.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • This adds support for viewing the current GFS2 quota settings
    via the XFS quota API. The setting of quotas will be addressed
    in a later patch. Fields which are not supported here are left
    set to zero.

    Signed-off-by: Steven Whitehouse
    Reviewed-by: Bob Peterson

    Steven Whitehouse
     
  • Both of these functions contained confusing and in one case
    duplicate code. This patch adds a new check in do_glock()
    so that we report -ENOENT if we are asked to sync a quota
    entry which doesn't exist. Due to the previous patch this is
    now reported correctly to userspace.

    Also there are a few new comments, and I hope that the code
    is easier to understand now.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • This function was only ever called with the "create"
    argument set to true, so we can remove it.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • The "create" argument to qdsb_get() was only ever set to true,
    so this patch removes that argument.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • For some reason, the errors were not making it to userspace.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • This allows querying of the quota state via the XFS quota
    API.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • There is no point in testing for GLF_DEMOTE here, we might as
    well always release the glock at that point.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • The plan is to add further operations to the gfs2_quotactl_ops
    in future patches. The sync operation is easy, so we start with
    that one.

    We plan to use the XFS quota control functions because they more
    closely match the GFS2 ones.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • These two functions are altered so that gfs2_quota_sync may
    in future be called directly from the VFS. The GFS2 superblock
    changes to a VFS super block and there is an addition of an int
    argument which is currently ignored.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • GFS2 needs to call this from under a glock, so we need GFP_NOFS
    and I suspect that other filesystems might require this too.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • The other patches in this series have been building towards
    being able to support cached ACLs like other filesystems. The
    only real difference with GFS2 is that we have to invalidate
    the cache when we drop a glock, but that is dealt with in earlier
    patches.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • To prepare for support for caching of ACLs, this cleans up the GFS2
    ACL support by pushing the xattr code back into xattr.c and changing
    the acl_get function into one which only returns ACLs so that we
    can drop the caching function into it shortly.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • These two functions do the same thing, so lets only use
    one of them.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • Invalidate all the cached ACLs when we drop the glock.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • This is required for cluster filesystems which want to use
    cached ACLs so that they can invalidate the cache when
    required.

    Signed-off-by: Steven Whitehouse
    Cc: Alexander Viro
    Cc: Christoph Hellwig

    Steven Whitehouse
     
  • This code has been shamelessly stolen from XFS at the suggestion
    of Christoph Hellwig. I've not added support for cached ACLs so
    far... watch for that in a later patch, although this is designed
    in such a way that they should be easy to add.

    Signed-off-by: Steven Whitehouse
    Cc: Christoph Hellwig

    Steven Whitehouse