13 Jan, 2019

1 commit

  • commit 3c1392d4c49962a31874af14ae9ff289cb2b3851 upstream.

    Updating mseq makes client think importer mds has accepted all prior
    cap messages and importer mds knows what caps client wants. Actually
    some cap messages may have been dropped because of mseq mismatch.

    If mseq is left untouched, importing cap's mds_wanted later will get
    reset by cap import message.

    Cc: stable@vger.kernel.org
    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov
    Signed-off-by: Greg Kroah-Hartman

    Yan, Zheng
     

06 Dec, 2018

1 commit

  • commit 6daca13d2e72bedaaacfc08f873114c9307d5aea upstream.

    When a client authenticates with a service, an authorizer is sent with
    a nonce to the service (ceph_x_authorize_[ab]) and the service responds
    with a mutation of that nonce (ceph_x_authorize_reply). This lets the
    client verify the service is who it says it is but it doesn't protect
    against a replay: someone can trivially capture the exchange and reuse
    the same authorizer to authenticate themselves.

    Allow the service to reject an initial authorizer with a random
    challenge (ceph_x_authorize_challenge). The client then has to respond
    with an updated authorizer proving they are able to decrypt the
    service's challenge and that the new authorizer was produced for this
    specific connection instance.

    The accepting side requires this challenge and response unconditionally
    if the client side advertises they have CEPHX_V2 feature bit.

    This addresses CVE-2018-1128.

    Link: http://tracker.ceph.com/issues/24836
    Signed-off-by: Ilya Dryomov
    Reviewed-by: Sage Weil
    Signed-off-by: Ben Hutchings
    Signed-off-by: Sasha Levin

    Ilya Dryomov
     

21 Nov, 2018

1 commit

  • commit efe328230dc01aa0b1269aad0b5fae73eea4677a upstream.

    This reverts commit 8b8f53af1ed9df88a4c0fbfdf3db58f62060edf3.

    splice_dentry() is used by three places. For two places, req->r_dentry
    is passed to splice_dentry(). In the case of error, req->r_dentry does
    not get updated. So splice_dentry() should not drop reference.

    Cc: stable@vger.kernel.org # 4.18+
    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov
    Signed-off-by: Greg Kroah-Hartman

    Yan, Zheng
     

24 Aug, 2018

1 commit

  • [ Upstream commit 8b8f53af1ed9df88a4c0fbfdf3db58f62060edf3 ]

    In any case, d_splice_alias() does not drop reference of original
    dentry.

    Signed-off-by: "Yan, Zheng"
    Reviewed-by: Jeff Layton
    Signed-off-by: Ilya Dryomov
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Yan, Zheng
     

03 Aug, 2018

1 commit

  • [ Upstream commit c36ed50de2ad1649ce0369a4a6fc2cc11b20dfb7 ]

    On currently logic:
    when I specify rasize=0~1 then it will be 4096.
    when I specify rasize=2~4097 then it will be 8192.

    Make it the same as rsize & wsize.

    Signed-off-by: Chengguang Xu
    Reviewed-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Chengguang Xu
     

30 May, 2018

3 commits

  • [ Upstream commit 1c789249578895bb14ab62b4327306439b754857 ]

    There is lack of cache destroy operation for ceph_file_cachep
    when failing from fscache register.

    Signed-off-by: Chengguang Xu
    Reviewed-by: Ilya Dryomov
    Signed-off-by: Ilya Dryomov
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Chengguang Xu
     
  • [ Upstream commit 18106734b512664a8541026519ce4b862498b6c3 ]

    When failing from ceph_fs_debugfs_init() in ceph_real_mount(),
    there is lack of dput of root_dentry and it causes slab errors,
    so change the calling order of ceph_fs_debugfs_init() and
    open_root_dentry() and do some cleanups to avoid this issue.

    Signed-off-by: Chengguang Xu
    Reviewed-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Chengguang Xu
     
  • [ Upstream commit 937441f3a3158d5510ca8cc78a82453f57a96365 ]

    When parsing string option, in order to avoid memory leak we need to
    carefully free it first in case of specifying same option several times.

    Signed-off-by: Chengguang Xu
    Reviewed-by: Ilya Dryomov
    Signed-off-by: Ilya Dryomov
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Chengguang Xu
     

16 May, 2018

1 commit

  • commit 3a15b38fd2efc1d648cb33186bf71e9138c93491 upstream.

    rsize/wsize cap should be applied before ceph_osdc_new_request() is
    called. Otherwise, if the size is limited by the cap instead of the
    stripe unit, ceph_osdc_new_request() would setup an extent op that is
    bigger than what dio_get_pages_alloc() would pin and add to the page
    vector, triggering asserts in the messenger.

    Cc: stable@vger.kernel.org
    Fixes: 95cca2b44e54 ("ceph: limit osd write size")
    Signed-off-by: Ilya Dryomov
    Reviewed-by: "Yan, Zheng"
    Signed-off-by: Greg Kroah-Hartman

    Ilya Dryomov
     

08 Apr, 2018

1 commit

  • commit 85784f9395987a422fa04263e7c0fb13da11eb5c upstream.

    If a page is already locked, attempting to dirty it leads to a deadlock
    in lock_page(). This is what currently happens to ITER_BVEC pages when
    a dio-enabled loop device is backed by ceph:

    $ losetup --direct-io /dev/loop0 /mnt/cephfs/img
    $ xfs_io -c 'pread 0 4k' /dev/loop0

    Follow other file systems and only dirty ITER_IOVEC pages.

    Cc: stable@kernel.org
    Signed-off-by: "Yan, Zheng"
    Reviewed-by: Ilya Dryomov
    Signed-off-by: Ilya Dryomov
    Signed-off-by: Greg Kroah-Hartman

    Yan, Zheng
     

20 Dec, 2017

1 commit


03 Nov, 2017

1 commit

  • …el/git/gregkh/driver-core

    Pull initial SPDX identifiers from Greg KH:
    "License cleanup: add SPDX license identifiers to some files

    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 <5
    lines).

    All documentation files were explicitly excluded.

    The following heuristics were used to determine which SPDX license
    identifiers to apply.

    - when both scanners couldn't find any license traces, file was
    considered to have no license information in it, and the top level
    COPYING file license applied.

    For non */uapi/* files that summary was:

    SPDX license identifier # files
    ---------------------------------------------------|-------
    GPL-2.0 11139

    and resulted in the first patch in this series.

    If that file was a */uapi/* path one, it was "GPL-2.0 WITH
    Linux-syscall-note" otherwise it was "GPL-2.0". Results of that
    was:

    SPDX license identifier # files
    ---------------------------------------------------|-------
    GPL-2.0 WITH Linux-syscall-note 930

    and resulted in the second patch in this series.

    - if a file had some form of licensing information in it, and was one
    of the */uapi/* ones, it was denoted with the Linux-syscall-note if
    any GPL family license was found in the file or had no licensing in
    it (per prior point). Results summary:

    SPDX license identifier # files
    ---------------------------------------------------|------
    GPL-2.0 WITH Linux-syscall-note 270
    GPL-2.0+ WITH Linux-syscall-note 169
    ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) 21
    ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 17
    LGPL-2.1+ WITH Linux-syscall-note 15
    GPL-1.0+ WITH Linux-syscall-note 14
    ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) 5
    LGPL-2.0+ WITH Linux-syscall-note 4
    LGPL-2.1 WITH Linux-syscall-note 3
    ((GPL-2.0 WITH Linux-syscall-note) OR MIT) 3
    ((GPL-2.0 WITH Linux-syscall-note) AND MIT) 1

    and that resulted in the third patch in this series.

    - when the two scanners agreed on the detected license(s), that
    became the concluded license(s).

    - when there was disagreement between the two scanners (one detected
    a license but the other didn't, or they both detected different
    licenses) a manual inspection of the file occurred.

    - In most cases a manual inspection of the information in the file
    resulted in a clear resolution of the license that should apply
    (and which scanner probably needed to revisit its heuristics).

    - When it was not immediately clear, the license identifier was
    confirmed with lawyers working with the Linux Foundation.

    - If there was any question as to the appropriate license identifier,
    the file was flagged for further research and to be revisited later
    in time.

    In total, over 70 hours of logged manual review was done on the
    spreadsheet to determine the SPDX license identifiers to apply to the
    source files by Kate, Philippe, Thomas and, in some cases,
    confirmation by lawyers working with the Linux Foundation.

    Kate also obtained a third independent scan of the 4.13 code base from
    FOSSology, and compared selected files where the other two scanners
    disagreed against that SPDX file, to see if there was new insights.
    The Windriver scanner is based on an older version of FOSSology in
    part, so they are related.

    Thomas did random spot checks in about 500 files from the spreadsheets
    for the uapi headers and agreed with SPDX license identifier in the
    files he inspected. For the non-uapi files Thomas did random spot
    checks in about 15000 files.

    In initial set of patches against 4.14-rc6, 3 files were found to have
    copy/paste license identifier errors, and have been fixed to reflect
    the correct identifier.

    Additionally Philippe spent 10 hours this week doing a detailed manual
    inspection and review of the 12,461 patched files from the initial
    patch version early this week with:

    - a full scancode scan run, collecting the matched texts, detected
    license ids and scores

    - reviewing anything where there was a license detected (about 500+
    files) to ensure that the applied SPDX license was correct

    - reviewing anything where there was no detection but the patch
    license was not GPL-2.0 WITH Linux-syscall-note to ensure that the
    applied SPDX license was correct

    This produced a worksheet with 20 files needing minor correction. This
    worksheet was then exported into 3 different .csv files for the
    different types of files to be modified.

    These .csv files were then reviewed by Greg. Thomas wrote a script to
    parse the csv files and add the proper SPDX tag to the file, in the
    format that the file expected. This script was further refined by Greg
    based on the output to detect more types of files automatically and to
    distinguish between header and source .c files (which need different
    comment types.) Finally Greg ran the script using the .csv files to
    generate the patches.

    Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
    Reviewed-by: Philippe Ombredanne <pombredanne@nexb.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"

    * tag 'spdx_identifiers-4.14-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    License cleanup: add SPDX license identifier to uapi header files with a license
    License cleanup: add SPDX license identifier to uapi header files with no license
    License cleanup: add SPDX GPL-2.0 license identifier to files with no license

    Linus Torvalds
     

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
     

25 Oct, 2017

1 commit

  • sparse warns:

    fs/ceph/caps.c:2042:9: warning: context imbalance in 'try_flush_caps' - wrong count at exit

    We need to exit this function with the lock unlocked, but a couple of
    cases leave it locked.

    Cc: stable@vger.kernel.org
    Signed-off-by: Jeff Layton
    Reviewed-by: "Yan, Zheng"
    Reviewed-by: Ilya Dryomov
    Signed-off-by: Ilya Dryomov

    Jeff Layton
     

02 Oct, 2017

2 commits


20 Sep, 2017

1 commit

  • utsname() can return NULL while process is exiting. Kernel releases
    file locks during process exits. We send request to mds when releasing
    file lock. So it's possible that we open mds session while process is
    exiting. utsname() is called in create_session_open_msg().

    Link: http://tracker.ceph.com/issues/21275
    Signed-off-by: "Yan, Zheng"
    Reviewed-by: Jeff Layton
    [idryomov@gmail.com: drop utsname.h include from mds_client.c]
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     

13 Sep, 2017

1 commit

  • Pull ceph updates from Ilya Dryomov:
    "The highlights include:

    - a large series of fixes and improvements to the snapshot-handling
    code (Zheng Yan)

    - individual read/write OSD requests passed down to libceph are now
    limited to 16M in size to avoid hitting OSD-side limits (Zheng Yan)

    - encode MStatfs v2 message to allow for more accurate space usage
    reporting (Douglas Fuller)

    - switch to the new writeback error tracking infrastructure (Jeff
    Layton)"

    * tag 'ceph-for-4.14-rc1' of git://github.com/ceph/ceph-client: (35 commits)
    ceph: stop on-going cached readdir if mds revokes FILE_SHARED cap
    ceph: wait on writeback after writing snapshot data
    ceph: fix capsnap dirty pages accounting
    ceph: ignore wbc->range_{start,end} when write back snapshot data
    ceph: fix "range cyclic" mode writepages
    ceph: cleanup local variables in ceph_writepages_start()
    ceph: optimize pagevec iterating in ceph_writepages_start()
    ceph: make writepage_nounlock() invalidate page that beyonds EOF
    ceph: properly get capsnap's size in get_oldest_context()
    ceph: remove stale check in ceph_invalidatepage()
    ceph: queue cap snap only when snap realm's context changes
    ceph: handle race between vmtruncate and queuing cap snap
    ceph: fix message order check in handle_cap_export()
    ceph: fix NULL pointer dereference in ceph_flush_snaps()
    ceph: adjust 36 checks for NULL pointers
    ceph: delete an unnecessary return statement in update_dentry_lease()
    ceph: ENOMEM pr_err in __get_or_create_frag() is redundant
    ceph: check negative offsets in ceph_llseek()
    ceph: more accurate statfs
    ceph: properly set snap follows for cap reconnect
    ...

    Linus Torvalds
     

07 Sep, 2017

22 commits

  • Merge updates from Andrew Morton:

    - various misc bits

    - DAX updates

    - OCFS2

    - most of MM

    * emailed patches from Andrew Morton : (119 commits)
    mm,fork: introduce MADV_WIPEONFORK
    x86,mpx: make mpx depend on x86-64 to free up VMA flag
    mm: add /proc/pid/smaps_rollup
    mm: hugetlb: clear target sub-page last when clearing huge page
    mm: oom: let oom_reap_task and exit_mmap run concurrently
    swap: choose swap device according to numa node
    mm: replace TIF_MEMDIE checks by tsk_is_oom_victim
    mm, oom: do not rely on TIF_MEMDIE for memory reserves access
    z3fold: use per-cpu unbuddied lists
    mm, swap: don't use VMA based swap readahead if HDD is used as swap
    mm, swap: add sysfs interface for VMA based swap readahead
    mm, swap: VMA based swap readahead
    mm, swap: fix swap readahead marking
    mm, swap: add swap readahead hit statistics
    mm/vmalloc.c: don't reinvent the wheel but use existing llist API
    mm/vmstat.c: fix wrong comment
    selftests/memfd: add memfd_create hugetlbfs selftest
    mm/shmem: add hugetlbfs support to memfd_create()
    mm, devm_memremap_pages: use multi-order radix for ZONE_DEVICE lookups
    mm/vmalloc.c: halve the number of comparisons performed in pcpu_get_vm_areas()
    ...

    Linus Torvalds
     
  • Patch series "Ranged pagevec lookup", v2.

    In this series I make pagevec_lookup() update the index (to be
    consistent with pagevec_lookup_tag() and also as a preparation for
    ranged lookups), provide ranged variant of pagevec_lookup() and use it
    in places where it makes sense. This not only removes some common code
    but is also a measurable performance win for some use cases (see patch
    4/10) where radix tree is sparse and searching & grabing of a page after
    the end of the range has measurable overhead.

    This patch (of 10):

    The callback doesn't ever get called. Remove it.

    Link: http://lkml.kernel.org/r/20170726114704.7626-2-jack@suse.cz
    Signed-off-by: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     
  • Pull file locking updates from Jeff Layton:
    "This pile just has a few file locking fixes from Ben Coddington. There
    are a couple of cleanup patches + an attempt to bring sanity to the
    l_pid value that is reported back to userland on an F_GETLK request.

    After a few gyrations, he came up with a way for filesystems to
    communicate to the VFS layer code whether the pid should be translated
    according to the namespace or presented as-is to userland"

    * tag 'locks-v4.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux:
    locks: restore a warn for leaked locks on close
    fs/locks: Remove fl_nspid and use fs-specific l_pid for remote locks
    fs/locks: Use allocation rather than the stack in fcntl_getlk()

    Linus Torvalds
     
  • If directory's FILE_SHARED cap get revoked, dentry in the directory
    can get spliced into other directory (Eg, other client move the
    dentry into directory B, then we do readdir on directory B). So we
    should stop on-going cached readdir. this can be achieved by marking
    dir not complete, because __dcache_readdir() checks dir completeness
    before emitting each dentry.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • In sync mode, writepages() needs to write all dirty pages. But
    it can only write dirty pages associated with the oldest snapc.
    To write dirty pages associated with next snapc, it needs to wait
    until current writes complete.

    Without this wait, writepages() keeps looking up dirty pages, but
    the found dirty pages are not writeable. It wastes CPU time.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • writepages_finish() calls ceph_put_wrbuffer_cap_refs() once for
    all pages, parameter snapc is set to req->r_snapc. So writepages()
    shouldn't write dirty pages associated with different snapc in
    one OSD request.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • writepages() needs to write dirty pages to OSD in strict order of
    snapshot context. It must first write dirty pages associated with
    the oldest snapshot context. In the write range case, dirty pages
    in the specified range can be associated with newer snapc. They
    are not writeable until we write all dirty pages associated with
    the oldest snapc.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • In range cyclic mode, writepages() should first write dirty pages
    in range [writeback_index, (pgoff_t)-1], then write pages in range
    [0, writeback_index -1]. Besides, if writepages() encounters a page
    that beyond EOF, it should restart from the beginning.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • Remove two variables and define variables of same type together.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • ceph_writepages_start() supports writing non-continuous pages.
    If it encounters a non-dirty or non-writeable page in pagevec,
    it can continue to check the rest pages in pagevec.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • Otherwise, the page left in state that page is associated with a
    snapc, but (PageDirty(page) || PageWriteback(page)) is false.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • capsnap's size is set by __ceph_finish_cap_snap(). If capsnap is under
    writing, its size is zero. In this case, get_oldest_context() should
    read i_size. Besides, ceph_writepages_start() should re-check capsnap's
    size after dirty pages get locked.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • Both set_page_dirty and truncate_complete_page should be called
    for locked page, they can't race with each other.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • If we create capsnap when snap realm's context does not change, the
    new capsnap's snapc is equal to ci->i_head_snapc. Page writeback code
    can't differentiates dirty pages associated with the new capsnap from
    dirty pages associated with i_head_snapc.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • It's possible that we create a cap snap while there is pending
    vmtruncate (truncate hasn't been processed by worker thread).
    We should truncate dirty pages beyond capsnap->size in that case.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • If caps for importer mds exists, but cap id mismatch, client should
    have received corresponding import message. Because cap ID does not
    change as long as client holds the caps.

    Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • Signed-off-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Yan, Zheng
     
  • The script “checkpatch.pl” pointed information out like the following.

    Comparison to NULL could be written ...

    Thus fix the affected source code places.

    Signed-off-by: Markus Elfring
    Reviewed-by: Yan, Zheng
    Signed-off-by: Ilya Dryomov

    Markus Elfring
     
  • The script "checkpatch.pl" pointed information out like the following.

    WARNING: void function return statements are not generally useful

    Thus remove such a statement in the affected function.

    Signed-off-by: Markus Elfring
    Reviewed-by: Yan, Zheng
    Signed-off-by: Ilya Dryomov

    Markus Elfring
     
  • Omit an extra message for a memory allocation failure in this function.

    This issue was detected by using the Coccinelle software.

    Signed-off-by: Markus Elfring
    Reviewed-by: Yan, Zheng
    Signed-off-by: Ilya Dryomov

    Markus Elfring
     
  • When a user requests SEEK_HOLE or SEEK_DATA with a negative offset
    ceph_llseek should return -ENXIO. Currently -EINVAL is being returned for
    SEEK_DATA and 0 for SEEK_HOLE.

    Signed-off-by: Luis Henriques
    Reviewed-by: Ilya Dryomov
    Signed-off-by: Ilya Dryomov

    Luis Henriques
     
  • Improve accuracy of statfs reporting for Ceph filesystems comprising
    exactly one data pool. In this case, the Ceph monitor can now report
    the space usage for the single data pool instead of the global data
    for the entire Ceph cluster. Include support for this message in
    mon_client and leverage it in ceph/super.

    Signed-off-by: Douglas Fuller
    Reviewed-by: Yan, Zheng
    Reviewed-by: Ilya Dryomov
    Signed-off-by: Ilya Dryomov

    Douglas Fuller