1. 15 12月, 2015 6 次提交
    • B
      gfs2: change gfs2 readdir cookie · 471f3db2
      Benjamin Marzinski 提交于
      gfs2 currently returns 31 bits of filename hash as a cookie that readdir
      uses for an offset into the directory.  When there are a large number of
      directory entries, the likelihood of a collision goes up way too
      quickly.  GFS2 will now return cookies that are guaranteed unique for a
      while, and then fail back to using 30 bits of filename hash.
      Specifically, the directory leaf blocks are divided up into chunks based
      on the minimum size of a gfs2 directory entry (48 bytes). Each entry's
      cookie is based off the chunk where it starts, in the linked list of
      leaf blocks that it hashes to (there are 131072 hash buckets). Directory
      entries will have unique names until they take reach chunk 8192.
      Assuming the largest filenames possible, and the least efficient spacing
      possible, this new method will still be able to return unique names when
      the previous method has statistically more than a 99% chance of a
      collision.  The non-unique names it fails back to are guaranteed to not
      collide with the unique names.
      
      unique cookies will be in this format:
      - 1 bit "0" to make sure the the returned cookie is positive
      - 17 bits for the hash table index
      - 1 bit for the mode "0"
      - 13 bits for the offset
      
      non-unique cookies will be in this format:
      - 1 bit "0" to make sure the the returned cookie is positive
      - 17 bits for the hash table index
      - 1 bit for the mode "1"
      - 13 more bits of the name hash
      
      Another benefit of location based cookies, is that once a directory's
      exhash table is fully extended (so that multiple hash table indexs do
      not use the same leaf blocks), gfs2 can skip sorting the directory
      entries until it reaches the non-unique ones, and then it only needs to
      sort these. This provides a significant speed up for directory reads of
      very large directories.
      
      The only issue is that for these cookies to continue to point to the
      correct entry as files are added and removed from the directory, gfs2
      must keep the entries at the same offset in the leaf block when they are
      split (see my previous patch). This means that until all the nodes in a
      cluster are running with code that will split the directory leaf blocks
      this way, none of the nodes can use the new cookie code. To deal with
      this, gfs2 now has the mount option loccookie, which, if set, will make
      it return these new location based cookies.  This option must not be set
      until all nodes in the cluster are at least running this version of the
      kernel code, and you have guaranteed that there are no outstanding
      cookies required by other software, such as NFS.
      
      gfs2 uses some of the extra space at the end of the gfs2_dirent
      structure to store the calculated readdir cookies. This keeps us from
      needing to allocate a seperate array to hold these values.  gfs2
      recomputes the cookie stored in de_cookie for every readdir call.  The
      time it takes to do so is small, and if gfs2 expected this value to be
      saved on disk, the new code wouldn't work correctly on filesystems
      created with an earlier version of gfs2.
      
      One issue with adding de_cookie to the union in the gfs2_dirent
      structure is that it caused the union to align itself to a 4 byte
      boundary, instead of its previous 2 byte boundary. This changed the
      offset of de_rahead. To solve that, I pulled de_rahead out of the union,
      since it does not need to be there.
      Signed-off-by: NBenjamin Marzinski <bmarzins@redhat.com>
      Signed-off-by: NBob Peterson <rpeterso@redhat.com>
      471f3db2
    • B
      gfs2: keep offset when splitting dir leaf blocks · 34017472
      Benjamin Marzinski 提交于
      Currently, when gfs2 splits a directory leaf block, the dirents that
      need to be copied to the new leaf block are packed into the start of it.
      This is good for space efficiency. However, if gfs2 were to copy those
      dirents into the exact same offset in the new leaf block as they had in
      the old block, it would be able to generate a readdir cookie based on
      the dirent location, that would be guaranteed to be unique up well past
      where the current code is statistically almost guaranteed to have
      collisions. So, gfs2 now keeps the dirent's offset in the block the
      same when it copies it to the new leaf block.
      Signed-off-by: NBenjamin Marzinski <bmarzins@redhat.com>
      Signed-off-by: NBob Peterson <rpeterso@redhat.com>
      34017472
    • B
      GFS2: Reintroduce a timeout in function gfs2_gl_hash_clear · 2aba1b5b
      Bob Peterson 提交于
      At some point in the past, we used to have a timeout when GFS2 was
      unmounting, trying to clear out its glocks. If the timeout expires,
      it would dump the remaining glocks to the kernel messages so that
      developers can debug the problem. That timeout was eliminated,
      probably by accident. This patch reintroduces it.
      Signed-off-by: NBob Peterson <rpeterso@redhat.com>
      2aba1b5b
    • B
      GFS2: Update master statfs buffer with sd_statfs_spin locked · 901c6c66
      Bob Peterson 提交于
      Before this patch, function update_statfs called gfs2_statfs_change_out
      to update the master statfs buffer without the sd_statfs_spin held.
      In theory, another process could call gfs2_statfs_sync, which takes
      the sd_statfs_spin lock and re-reads m_sc from the buffer. So there's
      a theoretical timing window in which one process could write the
      master statfs buffer, then another comes along and re-reads it, wiping
      out the changes.
      Signed-off-by: NBob Peterson <rpeterso@redhat.com>
      901c6c66
    • B
      GFS2: Reduce size of incore inode · b58bf407
      Bob Peterson 提交于
      This patch makes no functional changes. Its goal is to reduce the
      size of the gfs2 inode in memory by rearranging structures and
      changing the size of some variables within the structure.
      Signed-off-by: NBob Peterson <rpeterso@redhat.com>
      b58bf407
    • B
      GFS2: Make rgrp reservations part of the gfs2_inode structure · a097dc7e
      Bob Peterson 提交于
      Before this patch, multi-block reservation structures were allocated
      from a special slab. This patch folds the structure into the gfs2_inode
      structure. The disadvantage is that the gfs2_inode needs more memory,
      even when a file is opened read-only. The advantages are: (a) we don't
      need the special slab and the extra time it takes to allocate and
      deallocate from it. (b) we no longer need to worry that the structure
      exists for things like quota management. (c) This also allows us to
      remove the calls to get_write_access and put_write_access since we
      know the structure will exist.
      Signed-off-by: NBob Peterson <rpeterso@redhat.com>
      a097dc7e
  2. 24 11月, 2015 1 次提交
    • B
      GFS2: Extract quota data from reservations structure (revert 5407e242) · b54e9a0b
      Bob Peterson 提交于
      This patch basically reverts the majority of patch 5407e242.
      That patch eliminated the gfs2_qadata structure in favor of just
      using the reservations structure. The problem with doing that is that
      it increases the size of the reservations structure. That is not an
      issue until it comes time to fold the reservations structure into the
      inode in memory so we know it's always there. By separating out the
      quota structure again, we aren't punishing the non-quota users by
      making all the inodes bigger, requiring more slab space. This patch
      creates a new slab area to allocate the quota stuff so it's managed
      a little more sanely.
      Signed-off-by: NBob Peterson <rpeterso@redhat.com>
      b54e9a0b
  3. 19 11月, 2015 1 次提交
  4. 17 11月, 2015 3 次提交
  5. 11 11月, 2015 8 次提交
    • A
      gfs2: Automatically set GFS2_DIF_SYSTEM flag on system files · acc546fd
      Abhi Das 提交于
      When new files and directories are created inside a parent directory
      we automatically inherit the GFS2_DIF_SYSTEM flag (if set) and assign
      it to the new file/dirs.
      
      All new system files/dirs created in the metafs by, say gfs2_jadd,
      will have this flag set because they will have parent directories in
      the metafs whose GFS2_DIF_SYSTEM flag has already been set (most likely
      by a previous mkfs.gfs2)
      Signed-off-by: NAbhi Das <adas@redhat.com>
      Signed-off-by: NBob Peterson <rpeterso@redhat.com>
      acc546fd
    • L
      Merge git://www.linux-watchdog.org/linux-watchdog · 42d4ebb4
      Linus Torvalds 提交于
      Pull watchdog update from Wim Van Sebroeck:
      
       - New driver for Broadcom 7038 Set-Top Box
       - imx2_wdt: Use register definition in regmap_write()
       - intel-mid: add Magic Closure flag
       - watchdog framework improvements:
            - Use device tree alias for naming watchdogs
            - propagate ping error code to the user space
            - Always evaluate new timeout against min_timeout
            - Use single variable name for struct watchdog_device
       - include clean-ups
      
      * git://www.linux-watchdog.org/linux-watchdog:
        watchdog: include: add units for timeout values in kerneldoc
        watchdog: include: fix some typos
        watchdog: core: propagate ping error code to the user space
        watchdog: watchdog_dev: Use single variable name for struct watchdog_device
        watchdog: Always evaluate new timeout against min_timeout
        watchdog: intel-mid: add Magic Closure flag
        watchdog: imx2_wdt: Use register definition in regmap_write()
        watchdog: watchdog_dev: Use device tree alias for naming watchdogs
        watchdog: Watchdog driver for Broadcom Set-Top Box
        watchdog: bcm7038: add device tree binding documentation
      42d4ebb4
    • L
      Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging · 6aabef68
      Linus Torvalds 提交于
      Pull tiny hwmon update from Jean Delvare.
      
      * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
        hwmon: (k10temp) Remove duplicate pci-id define
      6aabef68
    • L
      Merge tag 'ntb-4.4' of git://github.com/jonmason/ntb · 1eb196c3
      Linus Torvalds 提交于
      Pull NTB bugfixes from Jon Mason:
       "NTB Bug fixes for potential NULL pointer accesses, accesses of a freed
        pointer, invalid buffer pointer, and a compiler warning.
      
        Also, unification of upstream/downstream addresses"
      
      * tag 'ntb-4.4' of git://github.com/jonmason/ntb:
        NTB: fix 32-bit compiler warning
        NTB: unify translation addresses
        NTB: invalid buf pointer in multi-MW setups
        NTB: remove unused variable
        NTB: fix access of free-ed pointer
        NTB: Fix issue where we may be accessing NULL ptr
      1eb196c3
    • L
      Merge tag 'dmaengine-4.4-rc1' of git://git.infradead.org/users/vkoul/slave-dma · 041c7951
      Linus Torvalds 提交于
      Pull dmaengine updates from Vinod Koul:
       "This time we have a very typical update which is mostly fixes and
        updates to drivers and no new drivers.
      
         - the biggest change is coming from Peter for edma cleanup which even
           caused some last minute regression, things seem settled now
         - idma64 and dw updates
         - iotdma updates
         - module autoload fixes for various drivers
         - scatter gather support for hdmac"
      
      * tag 'dmaengine-4.4-rc1' of git://git.infradead.org/users/vkoul/slave-dma: (77 commits)
        dmaengine: edma: Add dummy driver skeleton for edma3-tptc
        Revert "ARM: DTS: am33xx: Use the new DT bindings for the eDMA3"
        Revert "ARM: DTS: am437x: Use the new DT bindings for the eDMA3"
        dmaengine: dw: some Intel devices has no memcpy support
        dmaengine: dw: platform: provide platform data for Intel
        dmaengine: dw: don't override platform data with autocfg
        dmaengine: hdmac: Add scatter-gathered memset support
        dmaengine: hdmac: factorise memset descriptor allocation
        dmaengine: virt-dma: Fix kernel-doc annotations
        ARM: DTS: am437x: Use the new DT bindings for the eDMA3
        ARM: DTS: am33xx: Use the new DT bindings for the eDMA3
        dmaengine: edma: New device tree binding
        dmaengine: Kconfig: edma: Select TI_DMA_CROSSBAR in case of ARCH_OMAP
        dmaengine: ti-dma-crossbar: Add support for crossbar on AM33xx/AM43xx
        dmaengine: edma: Merge the of parsing functions
        dmaengine: edma: Do not allocate memory for edma_rsv_info in case of DT boot
        dmaengine: edma: Refactor the dma device and channel struct initialization
        dmaengine: edma: Get qDMA channel information from HW also
        dmaengine: edma: Merge map_dmach_to_queue into assign_channel_eventq
        dmaengine: edma: Correct PaRAM access function names (_parm_ to _param_)
        ...
      041c7951
    • L
      Merge tag 'rtc-v4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux · 7d884710
      Linus Torvalds 提交于
      Pull RTC updates from Alexandre Belloni:
       "Core:
         - Fix rtctest error path
      
        New drivers:
         - Microcrystal RV8803
      
        Subsystem wide cleanups:
         - remove misuse of IRQF_NO_SUSPEND flag
      
        Drivers:
         - at91rm9200: clear RTC alarm status flag prior to suspending
         - davinci: remove incorrect reference to probe function
         - ds1307: Fix alarm programming for mcp794xx
         - ds1390: trickle charger support, fix ds1390_get_reg
         - isl1208: Pass the IRQF_ONESHOT flag
         - opal: fix type of token
         - pcf2127: fix RTC_READ_VL, remove useless driver version
         - pcf85063: return an error when date is invalid
         - pcf8563: add CLKOUT to common clock framework
         - rx8025: remove unnecessary braces
         - s3c: Set year, month, day value for setting alarm
         - stmp3xxx: unify register access macros
         - License fixes: pcf2127, da9063
         - wakeup-source support for isl12057 and opal"
      
      * tag 'rtc-v4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (23 commits)
        rtc: Add a driver for Micro Crystal RV8803
        rtc: s3c: Set year, month, day value for setting alarm
        rtc: ds1307: Fix alarm programming for mcp794xx
        rtc: isl12057: enable support for the standard "wakeup-source" property
        rtc: opal: enable support for the stardard "wakeup-source" property
        rtc: isl1208: Pass the IRQF_ONESHOT flag
        rtc: pcf8563: add CLKOUT to common clock framework
        rtc: davinci: remove incorrect reference to probe function
        rtc: at91rm9200: clear RTC alarm status flag prior to suspending
        rtc: pcf2127: remove useless driver version
        rtc: pcf2127: fix reading uninitialized value on RTC_READ_VL ioctl
        rtc: stmp3xxx: unify register access macros
        rtc: da9063: GPL copyright inconsistency fix
        rtc: pcf85063: return an error when date is invalid
        rtc: rx8025: remove unnecessary braces
        rtc: ds1343: remove misuse of IRQF_NO_SUSPEND flag
        rtc: ab8500: remove misuse of IRQF_NO_SUSPEND flag
        rtc: pl031: remove misuse of IRQF_NO_SUSPEND flag
        rtc: opal: fix type of token
        rtc: ds1390: Add trickle charger device tree binding
        ...
      7d884710
    • L
      Merge tag 'fbdev-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux · 3b138668
      Linus Torvalds 提交于
      Pull fbdev updates from Tomi Valkeinen:
       - omap: fix hdmi audio configuration issue
       - ssd1307fb: add ssd1309 support
       - tridentfb: support DDC
       - gxt4500: enable support for non-PPC platforms
      
      * tag 'fbdev-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux:
        radeonfb: Deinline large functions
        gxt4500: enable panning
        gxt4500: Use arch_phys_wc_* for framebuffer
        gxt4500: fix color order
        gxt4500: fix 16bpp 565 mode
        gxt4500: enable on non-PPC architectures
        tridentfb: Add DDC support
        fb_ddc: Allow I2C adapters without SCL read capability
        fbdev: ssd1307fb: add ssd1309 support
        fbdev: ssd1307fb: alphabetize headers
        video/omap: remove invalid check
        OMAPDSS: hdmi: Reconfigure and restart audio when display is enabled
      3b138668
    • L
      Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux · 3e82806b
      Linus Torvalds 提交于
      Pull drm updates from Dave Airlie:
       "I Was Almost Tempted To Capitalise Every Word, but then I decided I
        couldn't read it myself!
      
        I've also got one pull request for the sti driver outstanding.  It
        relied on a commit in Greg's tree and I didn't find out in time, that
        commit is in your tree now so I might send that along once this is
        merged.
      
        I also had the accidental misfortune to have access to a Skylake on my
        desk for a few days, and I've had to encourage Intel to try harder,
        which seems to be happening now.
      
        Here is the main drm-next pull request for 4.4.
      
        Highlights:
      
        New driver:
              vc4 driver for the Rasberry Pi VPU.
              (From Eric Anholt at Broadcom.)
      
        Core:
              Atomic fbdev support
              Atomic helpers for runtime pm
              dp/aux i2c STATUS_UPDATE handling
              struct_mutex usage cleanups.
              Generic of probing support.
      
        Documentation:
              Kerneldoc for VGA switcheroo code.
              Rename to gpu instead of drm to reflect scope.
      
        i915:
              Skylake GuC firmware fixes
              HPD A support
              VBT backlight fallbacks
              Fastboot by default for some systems
              FBC work
              BXT/SKL workarounds
              Skylake deeper sleep state fixes
      
        amdgpu:
              Enable GPU scheduler by default
              New atombios opcodes
              GPUVM debugging options
              Stoney support.
              Fencing cleanups.
      
        radeon:
              More efficient CS checking
      
        nouveau:
              gk20a instance memory handling improvements.
              Improved PGOB detection and GK107 support
              Kepler GDDR5 PLL statbility improvement
              G8x/GT2xx reclock improvements
              new userspace API compatiblity fixes.
      
        virtio-gpu:
              Add 3D support - qemu 2.5 has it merged for it's gtk backend.
      
        msm:
              Initial msm88896 (snapdragon 8200)
      
        exynos:
              HDMI cleanups
              Enable mixer driver byt default
              Add DECON-TV support
      
        vmwgfx:
              Move to using memremap + fixes.
      
        rcar-du:
              Add support for R8A7793/4 DU
      
        armada:
              Remove support for non-component mode
              Improved plane handling
              Power savings while in DPMS off.
      
        tda998x:
              Remove unused slave encoder support
              Use more HDMI helpers
              Fix EDID read handling
      
        dwhdmi:
              Interlace video mode support for ipu-v3/dw_hdmi
              Hotplug state fixes
              Audio driver integration
      
        imx:
              More color formats support.
      
        tegra:
              Minor fixes/improvements"
      
      [ Merge fixup: remove unused variable 'dev' that had all uses removed in
        commit 4e270f08: "drm/gem: Drop struct_mutex requirement from
        drm_gem_mmap_obj" ]
      
      * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (764 commits)
        drm/vmwgfx: Relax irq locking somewhat
        drm/vmwgfx: Properly flush cursor updates and page-flips
        drm/i915/skl: disable display side power well support for now
        drm/i915: Extend DSL readout fix to BDW and SKL.
        drm/i915: Do graphics device reset under forcewake
        drm/i915: Skip fence installation for objects with rotated views (v4)
        vga_switcheroo: Drop client power state VGA_SWITCHEROO_INIT
        drm/amdgpu: group together common fence implementation
        drm/amdgpu: remove AMDGPU_FENCE_OWNER_MOVE
        drm/amdgpu: remove now unused fence functions
        drm/amdgpu: fix fence fallback check
        drm/amdgpu: fix stoping the scheduler timeout
        drm/amdgpu: cleanup on error in amdgpu_cs_ioctl()
        drm/i915: Fix locking around GuC firmware load
        drm/amdgpu: update Fiji's Golden setting
        drm/amdgpu: update Fiji's rev id
        drm/amdgpu: extract common code in vi_common_early_init
        drm/amd/scheduler: don't oops on failure to load
        drm/amdgpu: don't oops on failure to load (v2)
        drm/amdgpu: don't VT switch on suspend
        ...
      3e82806b
  6. 10 11月, 2015 21 次提交