31 Jul, 2020

1 commit


04 Jun, 2020

5 commits

  • access_ok just checks we are fed a proper user pointer. We also do that
    in copy_to_user itself, so no need to do this early.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Ritesh Harjani
    Reviewed-by: Darrick J. Wong
    Link: https://lore.kernel.org/r/20200523073016.2944131-9-hch@lst.de
    Signed-off-by: Theodore Ts'o

    Christoph Hellwig
     
  • By moving FIEMAP_FLAG_SYNC handling to fiemap_prep we ensure it is
    handled once instead of duplicated, but can still be done under fs locks,
    like xfs/iomap intended with its duplicate handling. Also make sure the
    error value of filemap_write_and_wait is propagated to user space.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Amir Goldstein
    Reviewed-by: Darrick J. Wong
    Link: https://lore.kernel.org/r/20200523073016.2944131-8-hch@lst.de
    Signed-off-by: Theodore Ts'o

    Christoph Hellwig
     
  • Replace fiemap_check_flags with a fiemap_prep helper that also takes the
    inode and mapped range, and performs the sanity check and truncation
    previously done in fiemap_check_range. This way the validation is inside
    the file system itself and thus properly works for the stacked overlayfs
    case as well.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Amir Goldstein
    Reviewed-by: Darrick J. Wong
    Link: https://lore.kernel.org/r/20200523073016.2944131-7-hch@lst.de
    Signed-off-by: Theodore Ts'o

    Christoph Hellwig
     
  • No need to pull the fiemap definitions into almost every file in the
    kernel build.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Ritesh Harjani
    Reviewed-by: Darrick J. Wong
    Link: https://lore.kernel.org/r/20200523073016.2944131-5-hch@lst.de
    Signed-off-by: Theodore Ts'o

    Christoph Hellwig
     
  • There is no caller left outside of ioctl.c.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Ritesh Harjani
    Reviewed-by: Jan Kara
    Reviewed-by: Darrick J. Wong
    Link: https://lore.kernel.org/r/20200523073016.2944131-4-hch@lst.de
    Signed-off-by: Theodore Ts'o

    Christoph Hellwig
     

30 Apr, 2020

1 commit

  • We better warn the fibmap user and not return a truncated and therefore
    an incorrect block map address if the bmap() returned block address
    is greater than INT_MAX (since user supplied integer pointer).

    It's better to pr_warn() all user of ioctl_fibmap() and return a proper
    error code rather than silently letting a FS corruption happen if the
    user tries to fiddle around with the returned block map address.

    We fix this by returning an error code of -ERANGE and returning 0 as the
    block mapping address in case if it is > INT_MAX.

    Now iomap_bmap() could be called from either of these two paths.
    Either when a user is calling an ioctl_fibmap() interface to get
    the block mapping address or by some filesystem via use of bmap()
    internal kernel API.
    bmap() kernel API is well equipped with handling of u64 addresses.

    WARN condition in iomap_bmap_actor() was mainly added to warn all
    the fibmap users. But now that we have directly added this warning
    for all fibmap users and also made sure to return 0 as block map address
    in case if addr > INT_MAX.
    So we can now remove this logic from iomap_bmap_actor().

    Signed-off-by: Ritesh Harjani
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Jan Kara
    Reviewed-by: Darrick J. Wong
    Signed-off-by: Darrick J. Wong

    Ritesh Harjani
     

09 Feb, 2020

3 commits

  • Pull compat-ioctl fix from Arnd Bergmann:
    "One patch in the compat-ioctl series broke 32-bit rootfs for multiple
    people testing on 64-bit kernels. Let's fix it in -rc1 before others
    run into the same issue"

    * tag 'compat-ioctl-fix' of git://git.kernel.org:/pub/scm/linux/kernel/git/arnd/playground:
    compat_ioctl: fix FIONREAD on devices

    Linus Torvalds
     
  • Pull misc vfs updates from Al Viro:

    - bmap series from cmaiolino

    - getting rid of convolutions in copy_mount_options() (use a couple of
    copy_from_user() instead of the __get_user() crap)

    * 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    saner copy_mount_options()
    fibmap: Reject negative block numbers
    fibmap: Use bmap instead of ->bmap method in ioctl_fibmap
    ecryptfs: drop direct calls to ->bmap
    cachefiles: drop direct usage of ->bmap method.
    fs: Enable bmap() function to properly return errors

    Linus Torvalds
     
  • My final cleanup patch for sys_compat_ioctl() introduced a regression on
    the FIONREAD ioctl command, which is used for both regular and special
    files, but only works on regular files after my patch, as I had missed
    the warning that Al Viro put into a comment right above it.

    Change it back so it can work on any file again by moving the implementation
    to do_vfs_ioctl() instead.

    Fixes: 77b9040195de ("compat_ioctl: simplify the implementation")
    Reported-and-tested-by: Christian Zigotzky
    Reported-and-tested-by: youling257
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

03 Feb, 2020

2 commits

  • FIBMAP receives an integer from userspace which is then implicitly converted
    into sector_t to be passed to bmap(). No check is made to ensure userspace
    didn't send a negative block number, which can end up in an underflow, and
    returning to userspace a corrupted block address.

    As a side-effect, the underflow caused by a negative block here, will
    trigger the WARN() in iomap_bmap_actor(), which is how this issue was
    first discovered.

    Reviewed-by: Christoph Hellwig
    Signed-off-by: Carlos Maiolino
    Signed-off-by: Al Viro

    Carlos Maiolino
     
  • Now we have the possibility of proper error return in bmap, use bmap()
    function in ioctl_fibmap() instead of calling ->bmap method directly.

    Signed-off-by: Carlos Maiolino
    Signed-off-by: Al Viro

    Carlos Maiolino
     

03 Jan, 2020

2 commits

  • Now that both native and compat ioctl syscalls are
    in the same file, a couple of simplifications can
    be made, bringing the implementation closer together:

    - do_vfs_ioctl(), ioctl_preallocate(), and compat_ioctl_preallocate()
    can become static, allowing the compiler to optimize better

    - slightly update the coding style for consistency between
    the functions.

    - rather than listing each command in two switch statements
    for the compat case, just call a single function that has
    all the common commands.

    As a side-effect, FS_IOC_RESVSP/FS_IOC_RESVSP64 are now available
    to x86 compat tasks, along with FS_IOC_RESVSP_32/FS_IOC_RESVSP64_32.
    This is harmless for i386 emulation, and can be considered a bugfix
    for x32 emulation, which never supported these in the past.

    Reviewed-by: Ben Hutchings
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • The rest of the fs/compat_ioctl.c file is no longer useful now,
    so move the actual syscall as planned.

    Reviewed-by: Ben Hutchings
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

03 Dec, 2019

1 commit

  • Pull XFS updates from Darrick Wong:
    "For this release, we changed quite a few things.

    Highlights:

    - Fixed some long tail latency problems in the block allocator

    - Removed some long deprecated (and for the past several years no-op)
    mount options and ioctls

    - Strengthened the extended attribute and directory verifiers

    - Audited and fixed all the places where we could return EFSCORRUPTED
    without logging anything

    - Refactored the old SGI space allocation ioctls to make the
    equivalent fallocate calls

    - Fixed a race between fallocate and directio

    - Fixed an integer overflow when files have more than a few
    billion(!) extents

    - Fixed a longstanding bug where quota accounting could be incorrect
    when performing unwritten extent conversion on a freshly mounted fs

    - Fixed various complaints in scrub about soft lockups and
    unresponsiveness to signals

    - De-vtable'd the directory handling code, which should make it
    faster

    - Converted to the new mount api, for better or for worse

    - Cleaned up some memory leaks

    and quite a lot of other smaller fixes and cleanups.

    A more detailed summary:

    - Fill out the build string

    - Prevent inode fork extent count overflows

    - Refactor the allocator to reduce long tail latency

    - Rework incore log locking a little to reduce spinning

    - Break up the xfs_iomap_begin functions into smaller more cohesive
    parts

    - Fix allocation alignment being dropped too early when the
    allocation request is for more blocks than an AG is large

    - Other small cleanups

    - Clean up file buftarg retrieval helpers

    - Hoist the resvsp and unresvsp ioctls to the vfs

    - Remove the undocumented biosize mount option, since it has never
    been mentioned as existing or supported on linux

    - Clean up some of the mount option printing and parsing

    - Enhance attr leaf verifier to check block structure

    - Check dirent and attr names for invalid characters before passing
    them to the vfs

    - Refactor open-coded bmbt walking

    - Fix a few places where we return EIO instead of EFSCORRUPTED after
    failing metadata sanity checks

    - Fix a synchronization problem between fallocate and aio dio
    corrupting the file length

    - Clean up various loose ends in the iomap and bmap code

    - Convert to the new mount api

    - Make sure we always log something when returning EFSCORRUPTED

    - Fix some problems where long running scrub loops could trigger soft
    lockup warnings and/or fail to exit due to fatal signals pending

    - Fix various Coverity complaints

    - Remove most of the function pointers from the directory code to
    reduce indirection penalties

    - Ensure that dquots are attached to the inode when performing
    unwritten extent conversion after io

    - Deuglify incore projid and crtime types

    - Fix another AGI/AGF locking order deadlock when renaming

    - Clean up some quota typedefs

    - Remove the FSSETDM ioctls which haven't done anything in 20 years

    - Fix some memory leaks when mounting the log fails

    - Fix an underflow when updating an xattr leaf freemap

    - Remove some trivial wrappers

    - Report metadata corruption as an error, not a (potentially) fatal
    assertion

    - Clean up the dir/attr buffer mapping code

    - Allow fatal signals to kill scrub during parent pointer checks"

    * tag 'xfs-5.5-merge-16' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (198 commits)
    xfs: allow parent directory scans to be interrupted with fatal signals
    xfs: remove the mappedbno argument to xfs_da_get_buf
    xfs: remove the mappedbno argument to xfs_da_read_buf
    xfs: split xfs_da3_node_read
    xfs: remove the mappedbno argument to xfs_dir3_leafn_read
    xfs: remove the mappedbno argument to xfs_dir3_leaf_read
    xfs: remove the mappedbno argument to xfs_attr3_leaf_read
    xfs: remove the mappedbno argument to xfs_da_reada_buf
    xfs: improve the xfs_dabuf_map calling conventions
    xfs: refactor xfs_dabuf_map
    xfs: simplify mappedbno handling in xfs_da_{get,read}_buf
    xfs: report corruption only as a regular error
    xfs: Remove kmem_zone_free() wrapper
    xfs: Remove kmem_zone_destroy() wrapper
    xfs: Remove slab init wrappers
    xfs: fix attr leaf header freemap.size underflow
    xfs: fix some memory leaks in log recovery
    xfs: fix another missing include
    xfs: remove XFS_IOC_FSSETDM and XFS_IOC_FSSETDM_BY_HANDLE
    xfs: remove duplicated include from xfs_dir2_data.c
    ...

    Linus Torvalds
     

28 Oct, 2019

1 commit


23 Oct, 2019

3 commits

  • ... and lose the ridiculous games with compat_alloc_user_space()
    there.

    Signed-off-by: Al Viro
    Signed-off-by: Arnd Bergmann

    Al Viro
     
  • casting to pointer to int, only to pass that to function that
    takes pointer to void and uses it as pointer to structure is
    really asking for trouble.

    "Some pointer, I'm not sure what to" is spelled "void *",
    not "int *"; use that.

    And declare the functions we are passing that pointer to
    as taking the pointer to what they really want to access.

    Signed-off-by: Al Viro
    Signed-off-by: Arnd Bergmann

    Al Viro
     
  • Many drivers have ioctl() handlers that are completely compatible between
    32-bit and 64-bit architectures, except for the argument that is passed
    down from user space and may have to be passed through compat_ptr()
    in order to become a valid 64-bit pointer.

    Using ".compat_ptr = compat_ptr_ioctl" in file operations should let
    us simplify a lot of those drivers to avoid #ifdef checks, and convert
    additional drivers that don't have proper compat handling yet.

    On most architectures, the compat_ptr_ioctl() just passes all arguments
    to the corresponding ->ioctl handler. The exception is arch/s390, where
    compat_ptr() clears the top bit of a 32-bit pointer value, so user space
    pointers to the second 2GB alias the first 2GB, as is the case for native
    32-bit s390 user space.

    The compat_ptr_ioctl() function must therefore be used only with
    ioctl functions that either ignore the argument or pass a pointer to a
    compatible data type.

    If any ioctl command handled by fops->unlocked_ioctl passes a plain
    integer instead of a pointer, or any of the passed data types is
    incompatible between 32-bit and 64-bit architectures, a proper handler
    is required instead of compat_ptr_ioctl.

    Signed-off-by: Arnd Bergmann
    ---
    v3: add a better description
    v2: use compat_ptr_ioctl instead of generic_compat_ioctl_ptrarg,
    as suggested by Al Viro

    Arnd Bergmann
     

04 Jan, 2019

1 commit

  • Nobody has actually used the type (VERIFY_READ vs VERIFY_WRITE) argument
    of the user address range verification function since we got rid of the
    old racy i386-only code to walk page tables by hand.

    It existed because the original 80386 would not honor the write protect
    bit when in kernel mode, so you had to do COW by hand before doing any
    user access. But we haven't supported that in a long time, and these
    days the 'type' argument is a purely historical artifact.

    A discussion about extending 'user_access_begin()' to do the range
    checking resulted this patch, because there is no way we're going to
    move the old VERIFY_xyz interface to that model. And it's best done at
    the end of the merge window when I've done most of my merges, so let's
    just get this done once and for all.

    This patch was mostly done with a sed-script, with manual fix-ups for
    the cases that weren't of the trivial 'access_ok(VERIFY_xyz' form.

    There were a couple of notable cases:

    - csky still had the old "verify_area()" name as an alias.

    - the iter_iov code had magical hardcoded knowledge of the actual
    values of VERIFY_{READ,WRITE} (not that they mattered, since nothing
    really used it)

    - microblaze used the type argument for a debug printout

    but other than those oddities this should be a total no-op patch.

    I tried to fix up all architectures, did fairly extensive grepping for
    access_ok() uses, and the changes are trivial, but I may have missed
    something. Any missed conversion should be trivially fixable, though.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

03 Nov, 2018

1 commit

  • Pull vfs dedup fixes from Dave Chinner:
    "This reworks the vfs data cloning infrastructure.

    We discovered many issues with these interfaces late in the 4.19 cycle
    - the worst of them (data corruption, setuid stripping) were fixed for
    XFS in 4.19-rc8, but a larger rework of the infrastructure fixing all
    the problems was needed. That rework is the contents of this pull
    request.

    Rework the vfs_clone_file_range and vfs_dedupe_file_range
    infrastructure to use a common .remap_file_range method and supply
    generic bounds and sanity checking functions that are shared with the
    data write path. The current VFS infrastructure has problems with
    rlimit, LFS file sizes, file time stamps, maximum filesystem file
    sizes, stripping setuid bits, etc and so they are addressed in these
    commits.

    We also introduce the ability for the ->remap_file_range methods to
    return short clones so that clones for vfs_copy_file_range() don't get
    rejected if the entire range can't be cloned. It also allows
    filesystems to sliently skip deduplication of partial EOF blocks if
    they are not capable of doing so without requiring errors to be thrown
    to userspace.

    Existing filesystems are converted to user the new remap_file_range
    method, and both XFS and ocfs2 are modified to make use of the new
    generic checking infrastructure"

    * tag 'xfs-4.20-merge-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (28 commits)
    xfs: remove [cm]time update from reflink calls
    xfs: remove xfs_reflink_remap_range
    xfs: remove redundant remap partial EOF block checks
    xfs: support returning partial reflink results
    xfs: clean up xfs_reflink_remap_blocks call site
    xfs: fix pagecache truncation prior to reflink
    ocfs2: remove ocfs2_reflink_remap_range
    ocfs2: support partial clone range and dedupe range
    ocfs2: fix pagecache truncation prior to reflink
    ocfs2: truncate page cache for clone destination file before remapping
    vfs: clean up generic_remap_file_range_prep return value
    vfs: hide file range comparison function
    vfs: enable remap callers that can handle short operations
    vfs: plumb remap flags through the vfs dedupe functions
    vfs: plumb remap flags through the vfs clone functions
    vfs: make remap_file_range functions take and return bytes completed
    vfs: remap helper should update destination inode metadata
    vfs: pass remap flags to generic_remap_checks
    vfs: pass remap flags to generic_remap_file_range_prep
    vfs: combine the clone and dedupe into a single remap_file_range
    ...

    Linus Torvalds
     

30 Oct, 2018

2 commits

  • Plumb a remap_flags argument through the {do,vfs}_clone_file_range
    functions so that clone can take advantage of it.

    Signed-off-by: Darrick J. Wong
    Reviewed-by: Amir Goldstein
    Signed-off-by: Dave Chinner

    Darrick J. Wong
     
  • Change the remap_file_range functions to take a number of bytes to
    operate upon and return the number of bytes they operated on. This is a
    requirement for allowing fs implementations to return short clone/dedupe
    results to the user, which will enable us to obey resource limits in a
    graceful manner.

    A subsequent patch will enable copy_file_range to signal to the
    ->clone_file_range implementation that it can handle a short length,
    which will be returned in the function's return value. For now the
    short return is not implemented anywhere so the behavior won't change --
    either copy_file_range manages to clone the entire range or it tries an
    alternative.

    Neither clone ioctl can take advantage of this, alas.

    Signed-off-by: Darrick J. Wong
    Reviewed-by: Amir Goldstein
    Signed-off-by: Dave Chinner

    Darrick J. Wong
     

27 Oct, 2018

1 commit

  • Some anon_bdev filesystems (e.g. overlayfs, ceph) don't have s_blocksize
    set. Returning zero from FIGETBSZ ioctl results in a Floating point
    exception from the e2fsprogs utility filefrag, which divides the size of
    the file with the value returned by FIGETBSZ.

    Fix the interface by returning -EINVAL for these filesystems.

    Fixes: d1d04ef8572b ("ovl: stack file ops")
    Cc: # v4.19
    Signed-off-by: Amir Goldstein
    Signed-off-by: Miklos Szeredi

    Amir Goldstein
     

24 Sep, 2018

1 commit

  • Commit 031a072a0b8a ("vfs: call vfs_clone_file_range() under freeze
    protection") created a wrapper do_clone_file_range() around
    vfs_clone_file_range() moving the freeze protection to former, so
    overlayfs could call the latter.

    The more common vfs practice is to call do_xxx helpers from vfs_xxx
    helpers, where freeze protecction is taken in the vfs_xxx helper, so
    this anomality could be a source of confusion.

    It seems that commit 8ede205541ff ("ovl: add reflink/copyfile/dedup
    support") may have fallen a victim to this confusion -
    ovl_clone_file_range() calls the vfs_clone_file_range() helper in the
    hope of getting freeze protection on upper fs, but in fact results in
    overlayfs allowing to bypass upper fs freeze protection.

    Swap the names of the two helpers to conform to common vfs practice
    and call the correct helpers from overlayfs and nfsd.

    Signed-off-by: Amir Goldstein
    Signed-off-by: Miklos Szeredi

    Amir Goldstein
     

18 Jul, 2018

1 commit


25 May, 2018

1 commit


03 Apr, 2018

1 commit

  • Using this helper allows us to avoid the in-kernel calls to the
    sys_ioctl() syscall. The ksys_ prefix denotes that this function
    is meant as a drop-in replacement for the syscall. In particular, it
    uses the same calling convention as sys_ioctl().

    After careful review, at least some of these calls could be converted
    to do_vfs_ioctl() in future.

    This patch is part of a series which removes in-kernel calls to syscalls.
    On this basis, the syscall entry path can be streamlined. For details, see
    http://lkml.kernel.org/r/20180325162527.GA17492@light.dominikbrodowski.net

    Cc: Alexander Viro
    Signed-off-by: Dominik Brodowski

    Dominik Brodowski
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

02 Mar, 2017

1 commit

  • Instead of including the full , we are going to include the
    types-only header in , to further
    decouple the scheduler header from the signal headers.

    This means that various files which relied on the full need
    to be updated to gain an explicit dependency on it.

    Update the code that relies on sched.h's inclusion of the header.

    Acked-by: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

16 Dec, 2016

2 commits

  • Move sb_start_write()/sb_end_write() out of the vfs helper and up into the
    ioctl handler.

    Signed-off-by: Amir Goldstein
    Signed-off-by: Miklos Szeredi

    Amir Goldstein
     
  • FICLONE/FICLONERANGE ioctls return -EXDEV if src and dest
    files are not on the same mount point.
    Practically, clone only requires that src and dest files
    are on the same file system.

    Move the check for same mount point to ioctl handler and keep
    only the check for same super block in the vfs helper.

    A following patch is going to use the vfs_clone_file_range()
    helper in overlayfs to copy up between lower and upper
    mount points on the same file system.

    Signed-off-by: Amir Goldstein
    Signed-off-by: Miklos Szeredi

    Amir Goldstein
     

16 Sep, 2016

2 commits

  • Kirill A Shutemov reports that the kernel doesn't try to cap dest_count
    in any way, and uses the number to allocate kernel memory. This causes
    high order allocation warnings in the kernel log if someone passes in a
    big enough value. We should clamp the allocation at PAGE_SIZE to avoid
    stressing the VM.

    The two existing users of the dedupe ioctl never send more than 120
    requests, so we can safely clamp dest_range at PAGE_SIZE, because with
    4k pages we can handle up to 127 dedupe candidates. Given the max
    extent length of 16MB, we can end up doing 2GB of IO which is plenty.

    [ Note: the "offsetof()" can't overflow, because 'count' is just a
    16-bit integer. That's not obvious in the limited context of the
    patch, so I'm noting it here because it made me go look. - Linus ]

    Reported-by: "Kirill A. Shutemov"
    Signed-off-by: Darrick J. Wong
    Signed-off-by: Linus Torvalds

    Darrick J. Wong
     
  • All the VFS functions in the dedupe ioctl path return int status, so
    the ioctl handler ought to as well.

    Found by Coverity, CID 1350952.

    Signed-off-by: Darrick J. Wong
    Signed-off-by: Linus Torvalds

    Darrick J. Wong
     

29 Jul, 2016

1 commit


23 Jan, 2016

1 commit

  • parallel to mutex_{lock,unlock,trylock,is_locked,lock_nested},
    inode_foo(inode) being mutex_foo(&inode->i_mutex).

    Please, use those for access to ->i_mutex; over the coming cycle
    ->i_mutex will become rwsem, with ->lookup() done with it held
    only shared.

    Signed-off-by: Al Viro

    Al Viro
     

13 Jan, 2016

1 commit

  • Pull vfs copy_file_range updates from Al Viro:
    "Several series around copy_file_range/CLONE"

    * 'work.copy_file_range' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    btrfs: use new dedupe data function pointer
    vfs: hoist the btrfs deduplication ioctl to the vfs
    vfs: wire up compat ioctl for CLONE/CLONE_RANGE
    cifs: avoid unused variable and label
    nfsd: implement the NFSv4.2 CLONE operation
    nfsd: Pass filehandle to nfs4_preprocess_stateid_op()
    vfs: pull btrfs clone API to vfs layer
    locks: new locks_mandatory_area calling convention
    vfs: Add vfs_copy_file_range() support for pagecache copies
    btrfs: add .copy_file_range file operation
    x86: add sys_copy_file_range to syscall tables
    vfs: add copy_file_range syscall and vfs helper

    Linus Torvalds
     

09 Jan, 2016

1 commit


01 Jan, 2016

1 commit


08 Dec, 2015

1 commit

  • The btrfs clone ioctls are now adopted by other file systems, with NFS
    and CIFS already having support for them, and XFS being under active
    development. To avoid growth of various slightly incompatible
    implementations, add one to the VFS. Note that clones are different from
    file copies in several ways:

    - they are atomic vs other writers
    - they support whole file clones
    - they support 64-bit legth clones
    - they do not allow partial success (aka short writes)
    - clones are expected to be a fast metadata operation

    Because of that it would be rather cumbersome to try to piggyback them on
    top of the recent clone_file_range infrastructure. The converse isn't
    true and the clone_file_range system call could try clone file range as
    a first attempt to copy, something that further patches will enable.

    Based on earlier work from Peng Tao.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig