Skip to content
  1. Oct 02, 2011
    • Arne Jansen's avatar
      btrfs: hooks for readahead · 4bb31e92
      Arne Jansen authored
      
      
      This adds the hooks needed for readahead. In the readpage_end_io_hook,
      the extent state is checked for the EXTENT_READAHEAD flag. Only in this
      case the readahead hook is called, to keep the impact on non-ra as low
      as possible.
      Additionally, a hook for a failed IO is added, otherwise readahead would
      wait indefinitely for the extent to finish.
      
      Changes for v2:
       - eliminate race condition
      
      Signed-off-by: default avatarArne Jansen <sensille@gmx.net>
      4bb31e92
    • Arne Jansen's avatar
      btrfs: initial readahead code and prototypes · 7414a03f
      Arne Jansen authored
      
      
      This is the implementation for the generic read ahead framework.
      
      To trigger a readahead, btrfs_reada_add must be called. It will start
      a read ahead for the given range [start, end) on tree root. The returned
      handle can either be used to wait on the readahead to finish
      (btrfs_reada_wait), or to send it to the background (btrfs_reada_detach).
      
      The read ahead works as follows:
      On btrfs_reada_add, the root of the tree is inserted into a radix_tree.
      reada_start_machine will then search for extents to prefetch and trigger
      some reads. When a read finishes for a node, all contained node/leaf
      pointers that lie in the given range will also be enqueued. The reads will
      be triggered in sequential order, thus giving a big win over a naive
      enumeration. It will also make use of multi-device layouts. Each disk
      will have its on read pointer and all disks will by utilized in parallel.
      Also will no two disks read both sides of a mirror simultaneously, as this
      would waste seeking capacity. Instead both disks will read different parts
      of the filesystem.
      Any number of readaheads can be started in parallel. The read order will be
      determined globally, i.e. 2 parallel readaheads will normally finish faster
      than the 2 started one after another.
      
      Changes v2:
       - protect root->node by transaction instead of node_lock
       - fix missed branches:
          The readahead had a too simple check to determine if a branch from
          a node should be checked or not. It now also records the upper bound
          of each node to see if the requested RA range lies within.
       - use KERN_CONT to debug output, to avoid line breaks
       - defer reada_start_machine to worker to avoid deadlock
      
      Changes v3:
       - protect root->node by rcu
      
      Changes v5:
       - changed EIO-semantics of reada_tree_block_flagged
       - remove spin_lock from reada_control and make elems an atomic_t
       - remove unused read_total from reada_control
       - kill reada_key_cmp, use btrfs_comp_cpu_keys instead
       - use kref-style release functions where possible
       - return struct reada_control * instead of void * from btrfs_reada_add
      
      Signed-off-by: default avatarArne Jansen <sensille@gmx.net>
      7414a03f
    • Arne Jansen's avatar
      btrfs: state information for readahead · 90519d66
      Arne Jansen authored
      
      
      Add state information for readahead to btrfs_fs_info and btrfs_device
      
      Changes v2:
       - don't wait in radix_trees
       - add own set of workers for readahead
      
      Reviewed-by: default avatarJosef Bacik <josef@redhat.com>
      Signed-off-by: default avatarArne Jansen <sensille@gmx.net>
      90519d66
    • Arne Jansen's avatar
      btrfs: add READAHEAD extent buffer flag · ab0fff03
      Arne Jansen authored
      
      
      Add a READAHEAD extent buffer flag.
      Add a function to trigger a read with this flag set.
      
      Changes v2:
       - use extent buffer flags instead of extent state flags
      
      Changes v5:
       - adapt to changed read_extent_buffer_pages interface
       - don't return eb from reada_tree_block_flagged if it has CORRUPT flag set
      
      Signed-off-by: default avatarArne Jansen <sensille@gmx.net>
      ab0fff03
    • Arne Jansen's avatar
      btrfs: add an extra wait mode to read_extent_buffer_pages · bb82ab88
      Arne Jansen authored
      
      
      read_extent_buffer_pages currently has two modes, either trigger a read
      without waiting for anything, or wait for the I/O to finish. The former
      also bails when it's unable to lock the page. This patch now adds an
      additional parameter to allow it to block on page lock, but don't wait
      for completion.
      
      Changes v5:
       - merge the 2 wait parameters into one and define WAIT_NONE, WAIT_COMPLETE and
         WAIT_PAGE_LOCK
      
      Change v6:
       - fix bug introduced in v5
      
      Signed-off-by: default avatarArne Jansen <sensille@gmx.net>
      bb82ab88
  2. Oct 01, 2011
  3. Sep 21, 2011
  4. Sep 18, 2011
  5. Sep 13, 2011
    • Linus Torvalds's avatar
      Linux 3.1-rc6 · b6fd41e2
      Linus Torvalds authored
      b6fd41e2
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 8cb3ed17
      Linus Torvalds authored
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm: Remove duplicate "return" statement
        drm/nv04/crtc: Bail out if FB is not bound to crtc
        drm/nouveau: fix nv04_sgdma_bind on non-"4kB pages" archs
        drm/nouveau: properly handle allocation failure in nouveau_sgdma_populate
        drm/nouveau: fix oops on pre-semaphore hardware
        drm/nv50/crtc: Bail out if FB is not bound to crtc
        drm/radeon/kms: fix DP detect and EDID fetch for DP bridges
      8cb3ed17
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.linaro.org/people/arnd/arm-soc · 4c752782
      Linus Torvalds authored
      * 'fixes' of git://git.linaro.org/people/arnd/arm-soc:
        ARM: CSR: add missing sentinels to of_device_id tables
        ARM: cns3xxx: Fix newly introduced warnings in the PCIe code
        ARM: cns3xxx: Fix compile error caused by hardware.h removed
        ARM: davinci: fix cache flush build error
        ARM: davinci: correct MDSTAT_STATE_MASK
        ARM: davinci: da850 EVM: read mac address from SPI flash
        OMAP: omap_device: fix !CONFIG_SUSPEND case in _noirq handlers
        OMAP2430: hwmod: musb: add missing terminator to omap2430_usbhsotg_addrs[]
        OMAP3: clock: indicate that gpt12_fck and wdt1_fck are in the WKUP clockdomain
        OMAP4: clock: fix compile warning
        OMAP4: clock: re-enable previous clockdomain enable/disable sequence
        OMAP: clockdomain: Wait for powerdomain to be ON when using clockdomain force wakeup
        OMAP: powerdomains: Make all powerdomain target states as ON at init
      4c752782
    • Mathieu Desnoyers's avatar
      ioctl: register LTTng ioctl · 14d01ff5
      Mathieu Desnoyers authored
      
      
      The LTTng 2.0 kernel tracer (stand-alone module package, available at
      http://lttng.org) uses the 0xF6 ioctl range for tracer control and
      transport operations.
      
      Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      14d01ff5
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://github.com/chrismason/linux · 0b001b2e
      Linus Torvalds authored
      * 'for-linus' of git://github.com/chrismason/linux:
        Btrfs: add dummy extent if dst offset excceeds file end in
        Btrfs: calc file extent num_bytes correctly in file clone
        btrfs: xattr: fix attribute removal
        Btrfs: fix wrong nbytes information of the inode
        Btrfs: fix the file extent gap when doing direct IO
        Btrfs: fix unclosed transaction handle in btrfs_cont_expand
        Btrfs: fix misuse of trans block rsv
        Btrfs: reset to appropriate block rsv after orphan operations
        Btrfs: skip locking if searching the commit root in csum lookup
        btrfs: fix warning in iput for bad-inode
        Btrfs: fix an oops when deleting snapshots
      0b001b2e
    • Miklos Szeredi's avatar
      fuse: fix memory leak · 5dfcc87f
      Miklos Szeredi authored
      
      
      kmemleak is reporting that 32 bytes are being leaked by FUSE:
      
        unreferenced object 0xe373b270 (size 32):
        comm "fusermount", pid 1207, jiffies 4294707026 (age 2675.187s)
        hex dump (first 32 bytes):
          01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace:
          [<b05517d7>] kmemleak_alloc+0x27/0x50
          [<b0196435>] kmem_cache_alloc+0xc5/0x180
          [<b02455be>] fuse_alloc_forget+0x1e/0x20
          [<b0245670>] fuse_alloc_inode+0xb0/0xd0
          [<b01b1a8c>] alloc_inode+0x1c/0x80
          [<b01b290f>] iget5_locked+0x8f/0x1a0
          [<b0246022>] fuse_iget+0x72/0x1a0
          [<b02461da>] fuse_get_root_inode+0x8a/0x90
          [<b02465cf>] fuse_fill_super+0x3ef/0x590
          [<b019e56f>] mount_nodev+0x3f/0x90
          [<b0244e95>] fuse_mount+0x15/0x20
          [<b019d1bc>] mount_fs+0x1c/0xc0
          [<b01b5811>] vfs_kern_mount+0x41/0x90
          [<b01b5af9>] do_kern_mount+0x39/0xd0
          [<b01b7585>] do_mount+0x2e5/0x660
          [<b01b7966>] sys_mount+0x66/0xa0
      
      This leak report is consistent and happens once per boot on
      3.1.0-rc5-dirty.
      
      This happens if a FORGET request is queued after the fuse device was
      released.
      
      Reported-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      Tested-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5dfcc87f
    • Miklos Szeredi's avatar
      fuse: fix flock breakage · 24114504
      Miklos Szeredi authored
      Commit 37fb3a30
      
       ("fuse: fix flock") added in 3.1-rc4 caused flock() to
      fail with ENOSYS with the kernel ABI version 7.16 or earlier.
      
      Fix by falling back to testing FUSE_POSIX_LOCKS for ABI versions 7.16
      and earlier.
      
      Reported-by: default avatarMartin Ziegler <ziegler@email.mathematik.uni-freiburg.de>
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      Tested-by: default avatarMartin Ziegler <ziegler@email.mathematik.uni-freiburg.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      24114504
    • Arnd Bergmann's avatar
  6. Sep 12, 2011
  7. Sep 11, 2011