14 Oct, 2008

40 commits

  • We now have three different kinds of extent trees in ocfs2: inode data
    (dinode), extended attributes (xattr_tree), and extended attribute
    values (xattr_value). There is a nice abstraction for them,
    ocfs2_extent_tree, but it is hidden in alloc.c. All the calling
    functions have to pick amongst a varied API and pass in type bits and
    often extraneous pointers.

    A better way is to make ocfs2_extent_tree a first-class object.
    Everyone converts their object to an ocfs2_extent_tree() via the
    ocfs2_get_*_extent_tree() calls, then uses the ocfs2_extent_tree for all
    tree calls to alloc.c.

    This simplifies a lot of callers, making for readability. It also
    provides an easy way to add additional extent tree types, as they only
    need to be defined in alloc.c with a ocfs2_get__extent_tree()
    function.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • A couple places check an extent_tree for a valid inode. We move that
    out to add an eo_insert_check() operation. It can be called from
    ocfs2_insert_extent() and elsewhere.

    We also have the wrapper calls ocfs2_et_insert_check() and
    ocfs2_et_sanity_check() ignore NULL ops. That way we don't have to
    provide useless operations for xattr types.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • A caller knows what kind of extent tree they have. There's no reason
    they have to call ocfs2_get_extent_tree() with a NULL when they could
    just as easily call a specific function to their type of extent tree.

    Introduce ocfs2_dinode_get_extent_tree(),
    ocfs2_xattr_tree_get_extent_tree(), and
    ocfs2_xattr_value_get_extent_tree(). They only take the necessary
    arguments, calling into the underlying __ocfs2_get_extent_tree() to do
    the real work.

    __ocfs2_get_extent_tree() is the old ocfs2_get_extent_tree(), but
    without needing any switch-by-type logic.

    ocfs2_get_extent_tree() is now a wrapper around the specific calls. It
    exists because a couple alloc.c functions can take et_type. This will
    go later.

    Another benefit is that ocfs2_xattr_value_get_extent_tree() can take a
    struct ocfs2_xattr_value_root* instead of void*. This gives us
    typechecking where we didn't have it before.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • Provide an optional extent_tree_operation to specify the
    max_leaf_clusters of an ocfs2_extent_tree. If not provided, the value
    is 0 (unlimited).

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • ocfs2_num_free_extents() re-implements the logic of
    ocfs2_get_extent_tree(). Now that ocfs2_get_extent_tree() does not
    allocate, let's use it in ocfs2_num_free_extents() to simplify the code.

    The inode validation code in ocfs2_num_free_extents() is not needed.
    All callers are passing in pre-validated inodes.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • The root_el of an ocfs2_extent_tree needs to be calculated from
    et->et_object. Make it an operation on et->et_ops.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • The 'private' pointer was a way to store off xattr values, which don't
    live at a set place in the bh. But the concept of "the object
    containing the extent tree" is much more generic. For an inode it's the
    struct ocfs2_dinode, for an xattr value its the value. Let's save off
    the 'object' at all times. If NULL is passed to
    ocfs2_get_extent_tree(), 'object' is set to bh->b_data;

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • Rather than allocating a struct ocfs2_extent_tree, just put it on the
    stack. Fill it with ocfs2_get_extent_tree() and drop it with
    ocfs2_put_extent_tree(). Now the callers don't have to ENOMEM, yet
    still safely ref the root_bh.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • The members of the ocfs2_extent_tree structure gain a prefix of 'et_'.
    All users are updated.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • The ocfs2_extent_tree_operations structure gains a field prefix on its
    members. The ->eo_sanity_check() operation gains a wrapper function for
    completeness. All of the extent tree operation wrappers gain a
    consistent name (ocfs2_et_*()).

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • This patch fixes the following build warnings:

    fs/ocfs2/xattr.c: In function 'ocfs2_half_xattr_bucket':
    fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 7 has type 'long int'
    fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 8 has type 'long int'
    fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 7 has type 'long int'
    fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 8 has type 'long int'
    fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 7 has type 'long int'
    fs/ocfs2/xattr.c:3282: warning: format '%d' expects type 'int', but argument 8 has type 'long int'
    fs/ocfs2/xattr.c: In function 'ocfs2_xattr_set_entry_in_bucket':
    fs/ocfs2/xattr.c:4092: warning: format '%d' expects type 'int', but argument 6 has type 'size_t'
    fs/ocfs2/xattr.c:4092: warning: format '%d' expects type 'int', but argument 6 has type 'size_t'
    fs/ocfs2/xattr.c:4092: warning: format '%d' expects type 'int', but argument 6 has type 'size_t'

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • This patch adds the s_incompat flag for extended attribute support. This
    helps us ensure that older versions of Ocfs2 or ocfs2-tools will not be able
    to mount a volume with xattr support.

    Signed-off-by: Tiger Yang
    Signed-off-by: Mark Fasheh

    Tiger Yang
     
  • In inode removal, we need to iterate all the buckets, remove any
    externally-stored EA values and delete the xattr buckets.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • Where the previous patches added the ability of list/get xattr in buckets
    for ocfs2, this patch enables ocfs2 to store large numbers of EAs.

    The original design doc is written by Mark Fasheh, and it can be found in
    http://oss.oracle.com/osswiki/OCFS2/DesignDocs/IndexedEATrees. I only had to
    make small modifications to it.

    First, because the bucket size is 4K, a new field named xh_free_start is added
    in ocfs2_xattr_header to indicate the next valid name/value offset in a bucket.
    It is used when we store new EA name/value. With this field, we can find the
    place more quickly and what's more, we don't need to sort the name/value every
    time to let the last entry indicate the next unused space. This makes the
    insert operation more efficient for blocksizes smaller than 4k.

    Because of the new xh_free_start, another field named as xh_name_value_len is
    also added in ocfs2_xattr_header. It records the total length of all the
    name/values in the bucket. We need this so that we can check it and defragment
    the bucket if there is not enough contiguous free space.

    An xattr insertion looks like this:
    1. xattr_index_block_find: find the right bucket by the name_hash, say bucketA.
    2. check whether there is enough space in bucketA. If yes, insert it directly
    and modify xh_free_start and xh_name_value_len accordingly. If not, check
    xh_name_value_len to see whether we can store this by defragment the bucket.
    If yes, defragment it and go on insertion.
    3. If defragement doesn't work, check whether there is new empty bucket in
    the clusters within this extent record. If yes, init the new bucket and move
    all the buckets after bucketA one by one to the next bucket. Move half of the
    entries in bucketA to the next bucket and go on insertion.
    4. If there is no new bucket, grow the extent tree.

    As for xattr deletion, we will delete an xattr bucket when all it's xattrs
    are removed and move all the buckets after it to the previous one. When all
    the xattr buckets in an extend record are freed, free this extend records
    from ocfs2_xattr_tree.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • In xattr bucket, we want to limit the maximum size of a btree leaf,
    otherwise we'll lose the benefits of hashing because we'll have to search
    large leaves.

    So add a new field in ocfs2_extent_tree which indicates the maximum leaf cluster
    size we want so that we can prevent ocfs2_insert_extent() from merging the leaf
    record even if it is contiguous with an adjacent record.

    Other btree types are not affected by this change.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • Add code to lookup a given extended attribute in the xattr btree. Lookup
    follows this general scheme:

    1. Use ocfs2_xattr_get_rec to find the xattr extent record

    2. Find the xattr bucket within the extent which may contain this xattr

    3. Iterate the bucket to find the xattr. In ocfs2_xattr_block_get(), we need
    to recalcuate the block offset and name offset for the right position of
    name/value.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • Ocfs2 breaks up xattr index tree leaves into 4k regions, called buckets.
    Attributes are stored within a given bucket, depending on hash value.

    After a discussion with Mark, we decided that the per-bucket index
    (xe_entry[]) would only exist in the 1st block of a bucket. Likewise,
    name/value pairs will not straddle more than one block. This allows the
    majority of operations to work directly on the buffer heads in a leaf block.

    This patch adds code to iterate the buckets in an EA. A new abstration of
    ocfs2_xattr_bucket is added. It records the bhs in this bucket and
    ocfs2_xattr_header. This keeps the code neat, improving readibility.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • When necessary, an ocfs2_xattr_block will embed an ocfs2_extent_list to
    store large numbers of EAs. This patch adds a new type in
    ocfs2_extent_tree_type and adds the implementation so that we can re-use the
    b-tree code to handle the storage of many EAs.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • This patch implements storing extended attributes both in inode or a single
    external block. We only store EA's in-inode when blocksize > 512 or that
    inode block has free space for it. When an EA's value is larger than 80
    bytes, we will store the value via b-tree outside inode or block.

    Signed-off-by: Tiger Yang
    Signed-off-by: Mark Fasheh

    Tiger Yang
     
  • Add the structures and helper functions we want for handling inline extended
    attributes. We also update the inline-data handlers so that they properly
    function in the event that we have both inline data and inline attributes
    sharing an inode block.

    Signed-off-by: Tiger Yang
    Signed-off-by: Mark Fasheh

    Tiger Yang
     
  • Add some thin wrappers around ocfs2_insert_extent() for each of the 3
    different btree types, ocfs2_inode_insert_extent(),
    ocfs2_xattr_value_insert_extent() and ocfs2_xattr_tree_insert_extent(). The
    last is for the xattr index btree, which will be used in a followup patch.

    All the old callers in file.c etc will call ocfs2_dinode_insert_extent(),
    while the other two handle the xattr issue. And the init of extent tree are
    handled by these functions.

    When storing xattr value which is too large, we will allocate some clusters
    for it and here ocfs2_extent_list and ocfs2_extent_rec will also be used. In
    order to re-use the b-tree operation code, a new parameter named "private"
    is added into ocfs2_extent_tree and it is used to indicate the root of
    ocfs2_exent_list. The reason is that we can't deduce the root from the
    buffer_head now. It may be in an inode, an ocfs2_xattr_block or even worse,
    in any place in an ocfs2_xattr_bucket.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • The old uptodate only handles the issue of removing one buffer_head from
    ocfs2 inode's buffer cache. With xattr clusters, we may need to remove
    multiple buffer_head's at a time.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • Ocfs2 uses a very flexible structure for storing extended attributes on
    disk. Small amount of attributes are stored directly in the inode block - up
    to 256 bytes worth. If that fills up, attributes are also stored in an
    external block, linked to from the inode block. That block can in turn
    expand to a btree, capable of storing large numbers of attributes.

    Individual attribute values are stored inline if they're small enough
    (currently about 80 bytes, this can be changed though), and otherwise are
    expanded to a btree. The theoretical limit to the size of an individual
    attribute is about the same as an inode, though the kernel's upper bound on
    the size of an attributes data is far smaller.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • Factor out the non-inode specifics of ocfs2_do_extend_allocation() into a more generic
    function, ocfs2_do_cluster_allocation(). ocfs2_do_extend_allocation calls
    ocfs2_do_cluster_allocation() now, but the latter can be used for other
    btree types as well.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • In the old extent tree operation, we take the hypothesis that we
    are using the ocfs2_extent_list in ocfs2_dinode as the tree root.
    As xattr will also use ocfs2_extent_list to store large value
    for a xattr entry, we refactor the tree operation so that xattr
    can use it directly.

    The refactoring includes 4 steps:
    1. Abstract set/get of last_eb_blk and update_clusters since they may
    be stored in different location for dinode and xattr.
    2. Add a new structure named ocfs2_extent_tree to indicate the
    extent tree the operation will work on.
    3. Remove all the use of fe_bh and di, use root_bh and root_el in
    extent tree instead. So now all the fe_bh is replaced with
    et->root_bh, el with root_el accordingly.
    4. Make ocfs2_lock_allocators generic. Now it is limited to be only used
    in file extend allocation. But the whole function is useful when we want
    to store large EAs.

    Note: This patch doesn't touch ocfs2_commit_truncate() since it is not used
    for anything other than truncate inode data btrees.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • ocfs2_extend_meta_needed(), ocfs2_calc_extend_credits() and
    ocfs2_reserve_new_metadata() are all useful for extent tree operations. But
    they are all limited to an inode btree because they use a struct
    ocfs2_dinode parameter. Change their parameter to struct ocfs2_extent_list
    (the part of an ocfs2_dinode they actually use) so that the xattr btree code
    can use these functions.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • ocfs2_num_free_extents() is used to find the number of free extent records
    in an inode btree. Hence, it takes an "ocfs2_dinode" parameter. We want to
    use this for extended attribute trees in the future, so genericize the
    interface the take a buffer head. A future patch will allow that buffer_head
    to contain any structure rooting an ocfs2 btree.

    Signed-off-by: Tao Ma
    Signed-off-by: Mark Fasheh

    Tao Ma
     
  • A per-mount debugfs file, "local_alloc" is created which when read will
    expose live state of the nodes local alloc file. Performance impact is
    minimal, only a bit of memory overhead per mount point. Still, the code is
    hidden behind CONFIG_OCFS2_FS_STATS. This feature will help us debug
    local alloc performance problems on a live system.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • Ocfs2's local allocator disables itself for the duration of a mount point
    when it has trouble allocating a large enough area from the primary bitmap.
    That can cause performance problems, especially for disks which were only
    temporarily full or fragmented. This patch allows for the allocator to
    shrink it's window first, before being disabled. Later, it can also be
    re-enabled so that any performance drop is minimized.

    To do this, we allow the value of osb->local_alloc_bits to be shrunk when
    needed. The default value is recorded in a mostly read-only variable so that
    we can re-initialize when required.

    Locking had to be updated so that we could protect changes to
    local_alloc_bits. Mostly this involves protecting various local alloc values
    with the osb spinlock. A new state is also added, OCFS2_LA_THROTTLED, which
    is used when the local allocator is has shrunk, but is not disabled. If the
    available space dips below 1 megabyte, the local alloc file is disabled. In
    either case, local alloc is re-enabled 30 seconds after the event, or when
    an appropriate amount of bits is seen in the primary bitmap.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • Do this instead of tracking absolute local alloc size. This avoids
    needless re-calculatiion of bits from bytes in localalloc.c. Additionally,
    the value is now in a more natural unit for internal file system bitmap
    work.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • This is actually pretty easy since fs/dlm already handles the bulk of the
    work. The Ocfs2 userspace cluster stack module already uses fs/dlm as the
    underlying lock manager, so I only had to add the right calls.

    Cluster-aware POSIX locks ("plocks") can be turned off by the same means at
    UNIX locks - mount with 'noflocks', or create a local-only Ocfs2 volume.
    Internally, the file system uses two sets of file_operations, depending on
    whether cluster aware plocks is required. This turns out to be easier than
    implementing local-only versions of ->lock.

    Signed-off-by: Mark Fasheh

    Mark Fasheh
     
  • This is a much better version of a previous patch to make the parser
    tables constant. Rather than changing the typedef, we put the "const" in
    all the various places where its required, allowing the __initconst
    exception for nfsroot which was the cause of the previous trouble.

    This was posted for review some time ago and I believe its been in -mm
    since then.

    Signed-off-by: Steven Whitehouse
    Cc: Alexander Viro
    Signed-off-by: Linus Torvalds

    Steven Whitehouse
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: (60 commits)
    Blackfin arch: make sure we include the fix for SPORT hysteresis when reprogramming clocks
    Blackfin arch: Fix bogus str_ident check in gpio code
    Blackfin arch: AD7879 Touchscreen driver
    Blackfin arch: introducing bfin_addr_dcachable
    Blackfin arch: fix a typo in comments
    Blackfin arch: Remove useless head file
    Blackfin arch: make sure L2 start and length are always defined (fixes building on BF542)
    Blackfin arch: use the Blackfin on-chip ROM to do software reset when possible
    Blackfin arch: update anomaly headers to match the latest sheet
    Blackfin arch: bfin_reset() is an internal reboot function ... everyone should go through machine_restart()
    Blackfin arch: print out error/warning if you are running on the incorrect CPU type
    Blackfin arch: remove non-bf54x ifdef logic since this file is only compiled on bf54x parts
    Blackfin arch: update board defconfigs
    Blackfin arch: Add optional verbose debug
    Blackfin arch: emulate a TTY over the EMUDAT/JTAG interface
    Blackfin arch: have is_user_addr_valid() check for overflows (like when address is -1)
    Blackfin arch: ptrace - fix off-by-one check on end of memory regions
    Blackfin arch: Enable framebuffer support for the BF526-EZkit TFT LCD display
    Blackfin arch: flash memory map and dm9000 resources updating
    Blackfin arch: early prink code still use uart core console functions to parse and set configure option string
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
    net/mac80211/rx.c: fix build error
    acpi: Make ACPI_TOSHIBA depend on INPUT.
    net/bfin_mac.c MDIO namespace fixes
    jme: remove unused #include
    netfilter: remove unused #include
    net: Fix off-by-one in skb_dma_map
    smc911x: Add support for LAN921{5,7,8} chips from SMSC
    qlge: remove duplicated #include
    wireless: remove duplicated #include
    net/au1000_eth.c MDIO namespace fixes
    net/tc35815.c: fix compilation
    sky2: Fix WOL regression
    r8169: NULL pointer dereference on r8169 load

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
    chmc: Mark %ver register inline asm with __volatile__
    sparc64: Add missing notify_cpu_starting() call.
    sparc32: fix build errors

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (33 commits)
    ALSA: ASoC codec: remove unused #include
    ALSA: ASoC: update email address for Liam Girdwood
    ALSA: hda: corrected invalid mixer values
    ALSA: hda: add mixers for analog mixer on 92hd75xx codecs
    ALSA: ASoC: Add destination and source port for DMA on OMAP1
    ALSA: ASoC: Drop device registration from GTA01 lm4857 driver
    ALSA: ASoC: Fix build of GTA01 audio driver
    ALSA: ASoC: Add widgets before setting endpoints on GTA01
    ALSA: ASoC: Fix inverted input PGA mute bits in WM8903
    ALSA: ASoC: OMAP: Set DMA stream name at runtime in McBSP DAI driver
    ALSA: ASoC: OMAP: Add support for OMAP2430 and OMAP34xx in McBSP DAI driver
    ALSA: ASoC: OMAP: Add multilink support to McBSP DAI driver
    ALSA: ASoC: Make TLV320AIC26 user-visible
    ALSA: ASoC - clean up Kconfig for TLV320AIC2
    ALSA: ASoC: Make WM8510 microphone input a DAPM mixer
    ALSA: ASoC: Implement WM8510 bias level control
    ALSA: ASoC: Remove unused AUDIO_NAME define from codec drivers
    ALSA: ASoC: tlv320aic3x: Use uniform tlv320aic naming
    ALSA: ASoC: Add WM8510 SPI support
    ALSA: ASoC: Add WM8753 SPI support
    ...

    Linus Torvalds
     
  • * 'proc' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc:
    proc: remove kernel.maps_protect
    proc: remove now unneeded ADDBUF macro
    [PATCH] proc: show personality via /proc/pid/personality
    [PATCH] signal, procfs: some lock_task_sighand() users do not need rcu_read_lock()
    proc: move PROC_PAGE_MONITOR to fs/proc/Kconfig
    proc: make grab_header() static
    proc: remove unused get_dma_list()
    proc: remove dummy vmcore_open()
    proc: proc_sys_root tweak
    proc: fix return value of proc_reg_open() in "too late" case

    Fixed up trivial conflict in removed file arch/sparc/include/asm/dma_32.h

    Linus Torvalds
     
  • …s/security-testing-2.6

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (24 commits)
    integrity: special fs magic
    As pointed out by Jonathan Corbet, the timer must be deleted before
    ERROR: code indent should use tabs where possible
    The tpm_dev_release function is only called for platform devices, not pnp
    Protect tpm_chip_list when transversing it.
    Renames num_open to is_open, as only one process can open the file at a time.
    Remove the BKL calls from the TPM driver, which were added in the overall
    netlabel: Add configuration support for local labeling
    cipso: Add support for native local labeling and fixup mapping names
    netlabel: Changes to the NetLabel security attributes to allow LSMs to pass full contexts
    selinux: Cache NetLabel secattrs in the socket's security struct
    selinux: Set socket NetLabel based on connection endpoint
    netlabel: Add functionality to set the security attributes of a packet
    netlabel: Add network address selectors to the NetLabel/LSM domain mapping
    netlabel: Add a generic way to create ordered linked lists of network addrs
    netlabel: Replace protocol/NetLabel linking with refrerence counts
    smack: Fix missing calls to netlbl_skbuff_err()
    selinux: Fix missing calls to netlbl_skbuff_err()
    selinux: Fix a problem in security_netlbl_sid_to_secattr()
    selinux: Better local/forward check in selinux_ip_postroute()
    ...

    Linus Torvalds
     
  • * git://git.infradead.org/users/dwmw2/random-2.6:
    Fix autoloading of MacBook Pro backlight driver.
    Automatic MODULE_ALIAS() for DMI match tables.
    Remove asm/a.out.h files for all architectures without a.out support.
    Introduce HAVE_AOUT symbol to remove hard-coded arch list for BINFMT_AOUT
    Remove redundant CONFIG_ARCH_SUPPORTS_AOUT
    S390: Update comments about why we don't use
    SPARC: Use
    PowerPC: Use
    PARISC: Use
    x86_64: Use
    IA64: Use
    ARM: Use
    Make suitable for 64-bit platforms.
    Define and use PCI_DEVICE_ID_MARVELL_88ALP01_CCIC for CAFÉ camera driver
    [MTD] [NAND] Define and use PCI_DEVICE_ID_MARVELL_88ALP01_NAND for CAFÉ
    Use PCI_DEVICE_ID_88ALP01 for CAFÉ chip, rather than PCI_DEVICE_ID_CAFE.
    EFS: Don't set f_fsid in statfs().

    Linus Torvalds
     
  • Merges oprofile, timers/hpet, x86/traps, x86/time, and x86/core misc items.

    * 'x86-core-v4-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (132 commits)
    x86: change early_ioremap to use slots instead of nesting
    x86: adjust dependencies for CONFIG_X86_CMOV
    dumpstack: x86: various small unification steps, fix
    x86: remove additional_cpus
    x86: remove additional_cpus configurability
    x86: improve UP kernel when CPU-hotplug and SMP is enabled
    dumpstack: x86: various small unification steps
    dumpstack: i386: make kstack= an early boot-param and add oops=panic
    dumpstack: x86: use log_lvl and unify trace formatting
    dumptrace: x86: consistently include loglevel, print stack switch
    dumpstack: x86: add "end" parameter to valid_stack_ptr and print_context_stack
    dumpstack: x86: make printk_address equal
    dumpstack: x86: move die_nmi to dumpstack_32.c
    traps: x86: finalize unification of traps.c
    traps: x86: make traps_32.c and traps_64.c equal
    traps: x86: various noop-changes preparing for unification of traps_xx.c
    traps: x86_64: use task_pid_nr(tsk) instead of tsk->pid in do_general_protection
    traps: i386: expand clear_mem_error and remove from mach_traps.h
    traps: x86_64: make io_check_error equal to the one on i386
    traps: i386: use preempt_conditional_sti/cli in do_int3
    ...

    Linus Torvalds