27 Sep, 2013

18 commits

  • Prevent drivers relying on platform_driver_probe from requesting
    deferred probing in order to avoid further futile probe attempts (either
    the driver has been unregistered or its probe function has been set to
    platform_drv_probe_fail when probing is retried).

    Note that several platform drivers currently return subsystem errors
    from probe and that these can include -EPROBE_DEFER (e.g. if a gpio
    request fails).

    Add a warning to platform_drv_probe that can be used to catch drivers
    that inadvertently request probe deferral while using
    platform_driver_probe.

    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • A common way to handle kobject lifetimes in embedded in objects with
    different lifetime rules is to pair the kobject with a struct completion.

    This introduces a kobj_completion structure that can be used in place
    of the pairing, along with several convenience functions for
    initialization, release, and put-and-wait.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Greg Kroah-Hartman

    Jeff Mahoney
     
  • I had a typo in a variable name for the previous patch (SCSI: fcoe:
    convert bus code to use bus_group) that broke the build, this fixes
    that.

    Reported-by: kbuild test robot
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • The drv_attrs field of struct bus_type is going away soon, drv_groups
    should be used instead. This converts the PCI bus code to use the
    correct field.

    Cc: Bjorn Helgaas
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • The bus_attrs field of struct bus_type is going away soon, dev_groups
    should be used instead. This converts the PCI bus code to use the
    correct field.

    Cc: Bjorn Helgaas
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • The dev_attrs field of struct bus_type is going away soon, dev_groups
    should be used instead. This converts the pmu bus code to use
    the correct field.

    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Ingo Molnar
    Cc: Arnaldo Carvalho de Melo
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • The bus_attrs field of struct bus_type is going away soon, dev_groups
    should be used instead. This converts the fcoe bus code to use the
    correct field.

    Cc: Robert Love
    Cc: "James E.J. Bottomley"
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • The bus_attrs field of struct bus_type is going away soon, dev_groups
    should be used instead. This converts the VIO bus code to use the
    correct field.

    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • The bus_attrs field of struct bus_type is going away soon, dev_groups
    should be used instead. This converts the ibmebus bus code to use the
    correct field.

    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • The bus_attrs field of struct bus_type is going away soon, dev_groups
    should be used instead. This converts the rapidio bus code to use the
    correct field.

    Cc: Matt Porter
    Cc: Alexandre Bounine
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • The direct firmware loading interface is a bit quiet about failures. Failures
    that occur during loading are masked if firmware exists in multiple locations,
    and may be masked entirely in the event that we fall back to the user mode
    helper code. It would be nice to see some of the more unexpected errors get
    logged, so in the event that you expect the direct firmware loader to work (like
    if CONFIG_FW_LOADER_USER_HELPER is enabled), and something goes wrong, you can
    figure out what happened.

    Signed-off-by: Neil Horman
    Acked-by: Ming Lei
    Signed-off-by: Greg Kroah-Hartman

    Neil Horman
     
  • Some internal sysfs functions which take explicit namespace argument
    are weird in that they place the optional @ns in front of @name which
    is contrary to the established convention. This is confusing and
    error-prone especially as @ns and @name may be interchanged without
    causing compilation warning.

    Swap the positions of @name and @ns in the following internal
    functions.

    sysfs_find_dirent()
    sysfs_rename()
    sysfs_hash_and_remove()
    sysfs_name_hash()
    sysfs_name_compare()
    create_dir()

    This patch doesn't introduce any functional changes.

    Signed-off-by: Tejun Heo
    Cc: Eric W. Biederman
    Cc: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Tejun Heo
     
  • The pre-existing sysfs interfaces which take explicit namespace
    argument are weird in that they place the optional @ns in front of
    @name which is contrary to the established convention. For example,
    we end up forcing vast majority of sysfs_get_dirent() users to do
    sysfs_get_dirent(parent, NULL, name), which is silly and error-prone
    especially as @ns and @name may be interchanged without causing
    compilation warning.

    This renames sysfs_get_dirent() to sysfs_get_dirent_ns() and swap the
    positions of @name and @ns, and sysfs_get_dirent() is now a wrapper
    around sysfs_get_dirent_ns(). This makes confusions a lot less
    likely.

    There are other interfaces which take @ns before @name. They'll be
    updated by following patches.

    This patch doesn't introduce any functional changes.

    v2: EXPORT_SYMBOL_GPL() wasn't updated leading to undefined symbol
    error on module builds. Reported by build test robot. Fixed.

    Signed-off-by: Tejun Heo
    Cc: Eric W. Biederman
    Cc: Kay Sievers
    Cc: Fengguang Wu
    Signed-off-by: Greg Kroah-Hartman

    Tejun Heo
     
  • The way namespace tags are implemented in sysfs is more complicated
    than necessary. As each tag is a pointer value and required to be
    non-NULL under a namespace enabled parent, there's no need to record
    separately what type each tag is or where namespace is enabled.

    If multiple namespace types are needed, which currently aren't, we can
    simply compare the tag to a set of allowed tags in the superblock
    assuming that the tags, being pointers, won't have the same value
    across multiple types. Also, whether to filter by namespace tag or
    not can be trivially determined by whether the node has any tagged
    children or not.

    This patch rips out kobj_ns_type handling from sysfs. sysfs no longer
    cares whether specific type of namespace is enabled or not. If a
    sysfs_dirent has a non-NULL tag, the parent is marked as needing
    namespace filtering and the value is tested against the allowed set of
    tags for the superblock (currently only one but increasing this number
    isn't difficult) and the sysfs_dirent is ignored if it doesn't match.

    This removes most kobject namespace knowledge from sysfs proper which
    will enable proper separation and layering of sysfs. The namespace
    sanity checks in fs/sysfs/dir.c are replaced by the new sanity check
    in kobject_namespace(). As this is the only place ktype->namespace()
    is called for sysfs, this doesn't weaken the sanity check
    significantly. I omitted converting the sanity check in
    sysfs_do_create_link_sd(). While the check can be shifted to upper
    layer, mistakes there are well contained and should be easily visible
    anyway.

    Signed-off-by: Tejun Heo
    Cc: Eric W. Biederman
    Cc: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Tejun Heo
     
  • There's no reason for sysfs to be calling ktype->namespace(). It is
    backwards, obfuscates what's going on and unnecessarily tangles two
    separate layers.

    There are two places where symlink code calls ktype->namespace().

    * sysfs_do_create_link_sd() calls it to find out the namespace tag of
    the target directory. Unless symlinking races with cross-namespace
    renaming, this equals @target_sd->s_ns.

    * sysfs_rename_link() uses it to find out the new namespace to rename
    to and the new namespace can be different from the existing one.
    The function is renamed to sysfs_rename_link_ns() with an explicit
    @ns argument and the ktype->namespace() invocation is shifted to the
    device layer.

    While this patch replaces ktype->namespace() invocation with the
    recorded result in @target_sd, this shouldn't result in any behvior
    difference.

    Signed-off-by: Tejun Heo
    Cc: Eric W. Biederman
    Cc: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Tejun Heo
     
  • For some unrecognizable reason, namespace information is communicated
    to sysfs through ktype->namespace() callback when there's *nothing*
    which needs the use of a callback. The whole sequence of operations
    is completely synchronous and sysfs operations simply end up calling
    back into the layer which just invoked it in order to find out the
    namespace information, which is completely backwards, obfuscates
    what's going on and unnecessarily tangles two separate layers.

    This patch doesn't remove ktype->namespace() but shifts its handling
    to kobject layer. We probably want to get rid of the callback in the
    long term.

    This patch adds an explicit param to sysfs_{create|rename|move}_dir()
    and renames them to sysfs_{create|rename|move}_dir_ns(), respectively.
    ktype->namespace() invocations are moved to the calling sites of the
    above functions. A new helper kboject_namespace() is introduced which
    directly tests kobj_ns_type_operations->type which should give the
    same result as testing sysfs_fs_type(parent_sd) and returns @kobj's
    namespace tag as necessary. kobject_namespace() is extern as it will
    be used from another file in the following patches.

    This patch should be an equivalent conversion without any functional
    difference.

    Signed-off-by: Tejun Heo
    Cc: Eric W. Biederman
    Cc: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Tejun Heo
     
  • sysfs ns (namespace) implementation became more convoluted than
    necessary while trying to hide ns information from visible interface.
    The relatively recent attr ns support is a good example.

    * attr ns tag is determined by sysfs_ops->namespace() callback while
    dir tag is determined by kobj_type->namespace(). The placement is
    arbitrary.

    * Instead of performing operations with explicit ns tag, the namespace
    callback is routed through sysfs_attr_ns(), sysfs_ops->namespace(),
    class_attr_namespace(), class_attr->namespace(). It's not simpler
    in any sense. The only thing this convolution does is traversing
    the whole stack backwards.

    The namespace callbacks are unncessary because the operations involved
    are inherently synchronous. The information can be provided in in
    straight-forward top-down direction and reversing that direction is
    unnecessary and against basic design principles.

    This backward interface is unnecessarily convoluted and hinders
    properly separating out sysfs from driver model / kobject for proper
    layering. This patch updates attr ns support such that

    * sysfs_ops->namespace() and class_attr->namespace() are dropped.

    * sysfs_{create|remove}_file_ns(), which take explicit @ns param, are
    added and sysfs_{create|remove}_file() are now simple wrappers
    around the ns aware functions.

    * ns handling is dropped from sysfs_chmod_file(). Nobody uses it at
    this point. sysfs_chmod_file_ns() can be added later if necessary.

    * Explicit @ns is propagated through class_{create|remove}_file_ns()
    and netdev_class_{create|remove}_file_ns().

    * driver/net/bonding which is currently the only user of attr
    namespace is updated to use netdev_class_{create|remove}_file_ns()
    with @bh->net as the ns tag instead of using the namespace callback.

    This patch should be an equivalent conversion without any functional
    difference. It makes the code easier to follow, reduces lines of code
    a bit and helps proper separation and layering.

    Signed-off-by: Tejun Heo
    Cc: Eric W. Biederman
    Cc: Kay Sievers
    Acked-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Tejun Heo
     
  • The expansion of to_sysfs_dirent() contains an unncessary trailing
    semicolon making it impossible to use in the middle of statements.
    Drop it.

    Signed-off-by: Tejun Heo
    Signed-off-by: Greg Kroah-Hartman

    Tejun Heo
     

24 Sep, 2013

3 commits

  • Linus Torvalds
     
  • Pull staging fixes from Greg KH:
    "Here are a number of small staging tree and iio driver fixes. Nothing
    major, just lots of little things"

    * tag 'staging-3.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (34 commits)
    iio:buffer_cb: Add missing iio_buffer_init()
    iio: Prevent race between IIO chardev opening and IIO device free
    iio: fix: Keep a reference to the IIO device for open file descriptors
    iio: Stop sampling when the device is removed
    iio: Fix crash when scan_bytes is computed with active_scan_mask == NULL
    iio: Fix mcp4725 dev-to-indio_dev conversion in suspend/resume
    iio: Fix bma180 dev-to-indio_dev conversion in suspend/resume
    iio: Fix tmp006 dev-to-indio_dev conversion in suspend/resume
    iio: iio_device_add_event_sysfs() bugfix
    staging: iio: ade7854-spi: Fix return value
    staging:iio:hmc5843: Fix measurement conversion
    iio: isl29018: Fix uninitialized value
    staging:iio:dummy fix kfifo_buf kconfig dependency issue if kfifo modular and buffer enabled for built in dummy driver.
    iio: at91: fix adc_clk overflow
    staging: line6: add bounds check in snd_toneport_source_put()
    Staging: comedi: Fix dependencies for drivers misclassified as PCI
    staging: r8188eu: Adjust RX gain
    staging: r8188eu: Fix smatch warning in core/rtw_ieee80211.
    staging: r8188eu: Fix smatch error in core/rtw_mlme_ext.c
    staging: r8188eu: Fix Smatch off-by-one warning in hal/rtl8188e_hal_init.c
    ...

    Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here are a number of small USB fixes for 3.12-rc2.

    One is a revert of a EHCI change that isn't quite ready for 3.12.
    Others are minor things, gadget fixes, Kconfig fixes, and some quirks
    and documentation updates.

    All have been in linux-next for a bit"

    * tag 'usb-3.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    USB: pl2303: distinguish between original and cloned HX chips
    USB: Faraday fotg210: fix email addresses
    USB: fix typo in usb serial simple driver Kconfig
    Revert "USB: EHCI: support running URB giveback in tasklet context"
    usb: s3c-hsotg: do not disconnect gadget when receiving ErlySusp intr
    usb: s3c-hsotg: fix unregistration function
    usb: gadget: f_mass_storage: reset endpoint driver data when disabled
    usb: host: fsl-mph-dr-of: Staticize local symbols
    usb: gadget: f_eem: Staticize eem_alloc
    usb: gadget: f_ecm: Staticize ecm_alloc
    usb: phy: omap-usb3: Fix return value
    usb: dwc3: gadget: avoid memory leak when failing to allocate all eps
    usb: dwc3: remove extcon dependency
    usb: gadget: add '__ref' for rndis_config_register() and cdc_config_register()
    usb: dwc3: pci: add support for BayTrail
    usb: gadget: cdc2: fix conversion to new interface of f_ecm
    usb: gadget: fix a bug and a WARN_ON in dummy-hcd
    usb: gadget: mv_u3d_core: fix violation of locking discipline in mv_u3d_ep_disable()

    Linus Torvalds
     

23 Sep, 2013

4 commits

  • Pull drm fixes from Dave Airlie:
    - some small fixes for msm and exynos
    - a regression revert affecting nouveau users with old userspace
    - intel pageflip deadlock and gpu hang fixes, hsw modesetting hangs

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (22 commits)
    Revert "drm: mark context support as a legacy subsystem"
    drm/i915: Don't enable the cursor on a disable pipe
    drm/i915: do not update cursor in crtc mode set
    drm/exynos: fix return value check in lowlevel_buffer_allocate()
    drm/exynos: Fix address space warnings in exynos_drm_fbdev.c
    drm/exynos: Fix address space warning in exynos_drm_buf.c
    drm/exynos: Remove redundant OF dependency
    drm/msm: drop unnecessary set_need_resched()
    drm/i915: kill set_need_resched
    drm/msm: fix potential NULL pointer dereference
    drm/i915/dvo: set crtc timings again for panel fixed modes
    drm/i915/sdvo: Robustify the dtddrm_mode conversions
    drm/msm: workaround for missing irq
    drm/msm: return -EBUSY if bo still active
    drm/msm: fix return value check in ERR_PTR()
    drm/msm: fix cmdstream size check
    drm/msm: hangcheck harder
    drm/msm: handle read vs write fences
    drm/i915/sdvo: Fully translate sync flags in the dtd->mode conversion
    drm/i915: Use proper print format for debug prints
    ...

    Linus Torvalds
     
  • Pull block IO fixes from Jens Axboe:
    "After merge window, no new stuff this time only a collection of neatly
    confined and simple fixes"

    * 'for-3.12/core' of git://git.kernel.dk/linux-block:
    cfq: explicitly use 64bit divide operation for 64bit arguments
    block: Add nr_bios to block_rq_remap tracepoint
    If the queue is dying then we only call the rq->end_io callout. This leaves bios setup on the request, because the caller assumes when the blk_execute_rq_nowait/blk_execute_rq call has completed that the rq->bios have been cleaned up.
    bio-integrity: Fix use of bs->bio_integrity_pool after free
    blkcg: relocate root_blkg setting and clearing
    block: Convert kmalloc_node(...GFP_ZERO...) to kzalloc_node(...)
    block: trace all devices plug operation

    Linus Torvalds
     
  • Pull btrfs fixes from Chris Mason:
    "These are mostly bug fixes and a two small performance fixes. The
    most important of the bunch are Josef's fix for a snapshotting
    regression and Mark's update to fix compile problems on arm"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (25 commits)
    Btrfs: create the uuid tree on remount rw
    btrfs: change extent-same to copy entire argument struct
    Btrfs: dir_inode_operations should use btrfs_update_time also
    btrfs: Add btrfs: prefix to kernel log output
    btrfs: refuse to remount read-write after abort
    Btrfs: btrfs_ioctl_default_subvol: Revert back to toplevel subvolume when arg is 0
    Btrfs: don't leak transaction in btrfs_sync_file()
    Btrfs: add the missing mutex unlock in write_all_supers()
    Btrfs: iput inode on allocation failure
    Btrfs: remove space_info->reservation_progress
    Btrfs: kill delay_iput arg to the wait_ordered functions
    Btrfs: fix worst case calculator for space usage
    Revert "Btrfs: rework the overcommit logic to be based on the total size"
    Btrfs: improve replacing nocow extents
    Btrfs: drop dir i_size when adding new names on replay
    Btrfs: replay dir_index items before other items
    Btrfs: check roots last log commit when checking if an inode has been logged
    Btrfs: actually log directory we are fsync()'ing
    Btrfs: actually limit the size of delalloc range
    Btrfs: allocate the free space by the existed max extent size when ENOSPC
    ...

    Linus Torvalds
     
  • 'samples' is 64bit operant, but do_div() second parameter is 32.
    do_div silently truncates high 32 bits and calculated result
    is invalid.

    In case if low 32bit of 'samples' are zeros then do_div() produces
    kernel crash.

    Signed-off-by: Anatol Pomozov
    Acked-by: Tejun Heo
    Signed-off-by: Jens Axboe

    Anatol Pomozov
     

22 Sep, 2013

3 commits

  • …/jic23/iio into staging-linus

    Jonathan writes:

    First round of IIO fixes for 3.12

    A series of wrong 'struct dev' assumptions in suspend/resume callbacks
    following on from this issue being identified in a new driver review.
    One to watch out for in future.

    A number of driver specific fixes
    1) at91 - fix a overflow in clock rate computation
    2) dummy - Kconfig dependency issue
    3) isl29018 - uninitialized value
    4) hmc5843 - measurement conversion bug introduced by recent cleanup.
    5) ade7854-spi - wrong return value.

    Some IIO core fixes
    1) Wrong value picked up for event code creation for a modified channel
    2) A null dereference on failure to initialize a buffer after no buffer has
    been in use, when using the available_scan_masks approach.
    3) Sampling not stopped when a device is removed. Effects forced removal
    such as hot unplugging.
    4) Prevent device going away if a chrdev is still open in userspace.
    5) Prevent race on chardev opening and device being freed.
    6) Add a missing iio_buffer_init in the call back buffer.

    These last few are the first part of a set from Lars-Peter Clausen who
    has been taking a closer look at our removal paths and buffer handling
    than anyone has for quite some time.

    Greg Kroah-Hartman
     
  • Pull NFS client bugfix from Trond Myklebust:
    "Fix a regression due to incorrect sharing of gss auth caches"

    * tag 'nfs-for-3.12-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    RPCSEC_GSS: fix crash on destroying gss auth

    Linus Torvalds
     
  • Adding the number of bios in a remapped request to 'block_rq_remap'
    tracepoint.

    Request remapper clones bios in a request to track the completion
    status of each bio. So the number of bios can be useful information
    for investigation.

    Related discussions:
    http://www.redhat.com/archives/dm-devel/2013-August/msg00084.html
    http://www.redhat.com/archives/dm-devel/2013-September/msg00024.html

    Signed-off-by: Jun'ichi Nomura
    Acked-by: Mike Snitzer
    Cc: Jens Axboe
    Signed-off-by: Jens Axboe

    Jun'ichi Nomura
     

21 Sep, 2013

12 commits

  • Users have been complaining of the uuid tree stuff warning that there is no uuid
    root when trying to do snapshot operations. This is because if you mount -o ro
    we will not create the uuid tree. But then if you mount -o rw,remount we will
    still not create it and then any subsequent snapshot/subvol operations you try
    to do will fail gloriously. Fix this by creating the uuid_root on remount rw if
    it was not already there. Thanks,

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • btrfs_ioctl_file_extent_same() uses __put_user_unaligned() to copy some data
    back to it's argument struct. Unfortunately, not all architectures provide
    __put_user_unaligned(), so compiles break on them if btrfs is selected.

    Instead, just copy the whole struct in / out at the start and end of
    operations, respectively.

    Signed-off-by: Mark Fasheh
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Mark Fasheh
     
  • Commit 2bc5565286121d2a77ccd728eb3484dff2035b58 (Btrfs: don't update atime on
    RO subvolumes) ensures that the access time of an inode is not updated when
    the inode lives in a read-only subvolume.
    However, if a directory on a read-only subvolume is accessed, the atime is
    updated. This results in a write operation to a read-only subvolume. I
    believe that access times should never be updated on read-only subvolumes.

    To reproduce:

    # mkfs.btrfs -f /dev/dm-3
    (...)
    # mount /dev/dm-3 /mnt
    # btrfs subvol create /mnt/sub
    Create subvolume '/mnt/sub'
    # mkdir /mnt/sub/dir
    # echo "abc" > /mnt/sub/dir/file
    # btrfs subvol snapshot -r /mnt/sub /mnt/rosnap
    Create a readonly snapshot of '/mnt/sub' in '/mnt/rosnap'
    # stat /mnt/rosnap/dir
    File: `/mnt/rosnap/dir'
    Size: 8 Blocks: 0 IO Block: 4096 directory
    Device: 16h/22d Inode: 257 Links: 1
    Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2013-09-11 07:21:49.389157126 -0400
    Modify: 2013-09-11 07:22:02.330156079 -0400
    Change: 2013-09-11 07:22:02.330156079 -0400
    # ls /mnt/rosnap/dir
    file
    # stat /mnt/rosnap/dir
    File: `/mnt/rosnap/dir'
    Size: 8 Blocks: 0 IO Block: 4096 directory
    Device: 16h/22d Inode: 257 Links: 1
    Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2013-09-11 07:22:56.797151670 -0400
    Modify: 2013-09-11 07:22:02.330156079 -0400
    Change: 2013-09-11 07:22:02.330156079 -0400

    Reported-by: Koen De Wit
    Signed-off-by: Guangyu Sun
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Guangyu Sun
     
  • The kernel log entries for device label %s and device fsid %pU
    are missing the btrfs: prefix. Add those here.

    Signed-off-by: Frank Holton
    Reviewed-by: David Sterba
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Frank Holton
     
  • It's still possible to flip the filesystem into RW mode after it's
    remounted RO due to an abort. There are lots of places that check for
    the superblock error bit and will not write data, but we should not let
    the filesystem appear read-write.

    Signed-off-by: David Sterba
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    David Sterba
     
  • This patch makes it possible to set BTRFS_FS_TREE_OBJECTID as the default
    subvolume by passing a subvolume id of 0.

    Signed-off-by: chandan
    Reviewed-by: David Sterba
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    chandan
     
  • In btrfs_sync_file(), if the call to btrfs_log_dentry_safe() returns
    a negative error (for e.g. -ENOMEM via btrfs_log_inode()), we would
    return without ending/freeing the transaction.

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Filipe David Borba Manana
     
  • The BUG() was replaced by btrfs_error() and return -EIO with the
    patch "get rid of one BUG() in write_all_supers()", but the missing
    mutex_unlock() was overlooked.

    The 0-DAY kernel build service from Intel reported the missing
    unlock which was found by the coccinelle tool:

    fs/btrfs/disk-io.c:3422:2-8: preceding lock on line 3374

    Signed-off-by: Stefan Behrens
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Stefan Behrens
     
  • We don't do the iput when we fail to allocate our delayed delalloc work in
    __start_delalloc_inodes, fix this.

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • This isn't used for anything anymore, just remove it.

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • This is a left over of how we used to wait for ordered extents, which was to
    grab the inode and then run filemap flush on it. However if we have an ordered
    extent then we already are holding a ref on the inode, and we just use
    btrfs_start_ordered_extent anyway, so there is no reason to have an extra ref on
    the inode to start work on the ordered extent. Thanks,

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • Forever ago I made the worst case calculator say that we could potentially split
    into 3 blocks for every level on the way down, which isn't right. If we split
    we're only going to get two new blocks, the one we originally cow'ed and the new
    one we're going to split. Thanks,

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik