Skip to content
Permalink
Guoqing-Jiang/…
Switch branches/tags

Commits on Aug 13, 2021

  1. raid1: ensure bio doesn't have more than BIO_MAX_VECS sectors

    We can't split bio with more than BIO_MAX_VECS sectors, otherwise the
    below call trace was triggered because we could allocate oversized
    write behind bio later.
    
    [ 8.097936] bvec_alloc+0x90/0xc0
    [ 8.098934] bio_alloc_bioset+0x1b3/0x260
    [ 8.099959] raid1_make_request+0x9ce/0xc50 [raid1]
    [ 8.100988] ? __bio_clone_fast+0xa8/0xe0
    [ 8.102008] md_handle_request+0x158/0x1d0 [md_mod]
    [ 8.103050] md_submit_bio+0xcd/0x110 [md_mod]
    [ 8.104084] submit_bio_noacct+0x139/0x530
    [ 8.105127] submit_bio+0x78/0x1d0
    [ 8.106163] ext4_io_submit+0x48/0x60 [ext4]
    [ 8.107242] ext4_writepages+0x652/0x1170 [ext4]
    [ 8.108300] ? do_writepages+0x41/0x100
    [ 8.109338] ? __ext4_mark_inode_dirty+0x240/0x240 [ext4]
    [ 8.110406] do_writepages+0x41/0x100
    [ 8.111450] __filemap_fdatawrite_range+0xc5/0x100
    [ 8.112513] file_write_and_wait_range+0x61/0xb0
    [ 8.113564] ext4_sync_file+0x73/0x370 [ext4]
    [ 8.114607] __x64_sys_fsync+0x33/0x60
    [ 8.115635] do_syscall_64+0x33/0x40
    [ 8.116670] entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    [1]. https://bugs.archlinux.org/task/70992
    
    Reported-by: Jens Stutte <jens@chianterastutte.eu>
    Tested-by: Jens Stutte <jens@chianterastutte.eu>
    Signed-off-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Guoqing Jiang authored and intel-lab-lkp committed Aug 13, 2021

Commits on Jun 15, 2021

  1. md/raid5: avoid device_lock in read_one_chunk()

    There is a lock contention on device_lock in read_one_chunk().
    device_lock is taken to sync conf->active_aligned_reads and
    conf->quiesce.
    read_one_chunk() takes the lock, then waits for quiesce=0 (resumed)
    before incrementing active_aligned_reads.
    raid5_quiesce() takes the lock, sets quiesce=2 (in-progress), then waits
    for active_aligned_reads to be zero before setting quiesce=1
    (suspended).
    
    Introduce a fast (lockless) path in read_one_chunk(): activate aligned
    read without taking device_lock.  In case quiesce starts while
    activating the aligned-read in fast path, deactivate it and revert to
    old behavior (take device_lock and wait for quiesce to finish).
    
    Add smp store/load in raid5_quiesce()/read_one_chunk() respectively to
    gaurantee that read_one_chunk() does not miss an ongoing quiesce.
    
    My setups:
    1. 8 local nvme drives (each up to 250k iops).
    2. 8 ram disks (brd).
    
    Each setup with raid6 (6+2), 1024 io threads on a 96 cpu-cores (48 per
    socket) system. Record both iops and cpu spent on this contention with
    rand-read-4k. Record bw with sequential-read-128k.  Note: in most cases
    cpu is still busy but due to "new" bottlenecks.
    
    nvme:
                  | iops           | cpu  | bw
    -----------------------------------------------
    without patch | 1.6M           | ~50% | 5.5GB/s
    with patch    | 2M (throttled) | 0%   | 16GB/s (throttled)
    
    ram (brd):
                  | iops           | cpu  | bw
    -----------------------------------------------
    without patch | 2M             | ~80% | 24GB/s
    with patch    | 4M             | 0%   | 55GB/s
    
    CC: Song Liu <song@kernel.org>
    CC: Neil Brown <neilb@suse.de>
    Reviewed-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Gal Ofri <gal.ofri@storing.io>
    Signed-off-by: Song Liu <song@kernel.org>
    Gal Ofri authored and Song Liu committed Jun 15, 2021
  2. md: add comments in md_integrity_register

    Given it is not obvious for the error handling, let's try to add some
    comments here to make it clear.
    
    Signed-off-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Signed-off-by: Song Liu <song@kernel.org>
    GuoqingJiang-Linux authored and Song Liu committed Jun 15, 2021
  3. md: check level before create and exit io_acct_set

    The bio_set (io_acct_set) is used by personalities to clone bio and
    trace the timestamp of bio. Some personalities such as raid1/10 don't
    need the bio_set, so add check to not create it unconditionally.
    
    Also update the comment for md_account_bio to make it more clear.
    
    Suggested-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Signed-off-by: Song Liu <song@kernel.org>
    GuoqingJiang-Linux authored and Song Liu committed Jun 15, 2021
  4. md: Constify attribute_group structs

    The attribute_group structs are never modified, they're only passed to
    sysfs_create_group() and sysfs_remove_group(). Make them const to allow
    the compiler to put them in read-only memory.
    
    Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
    Signed-off-by: Song Liu <song@kernel.org>
    rikardfalkeborn authored and Song Liu committed Jun 15, 2021
  5. md: mark some personalities as deprecated

    Mark the three personalities (linear, fault and multipath) as deprecated
    because:
    
    1. people can use dm multipath or nvme multipath.
    2. linear is already deprecated in MODULE_ALIAS.
    3. no one actively using fault.
    
    Signed-off-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Signed-off-by: Song Liu <song@kernel.org>
    GuoqingJiang-Linux authored and Song Liu committed Jun 15, 2021
  6. md/raid10: enable io accounting

    For raid10, we record the start time between split bio and clone bio,
    and finish the accounting in the final endio.
    
    Also introduce start_time in r10bio accordingly.
    
    Signed-off-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Signed-off-by: Song Liu <song@kernel.org>
    GuoqingJiang-Linux authored and Song Liu committed Jun 15, 2021
  7. md/raid1: enable io accounting

    For raid1, we record the start time between split bio and clone bio,
    and finish the accounting in the final endio.
    
    Also introduce start_time in r1bio accordingly.
    
    Signed-off-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Signed-off-by: Song Liu <song@kernel.org>
    GuoqingJiang-Linux authored and Song Liu committed Jun 15, 2021
  8. md/raid1: rename print_msg with r1bio_existed

    The caller of raid1_read_request could pass NULL or a valid pointer for
    "struct r1bio *r1_bio", so it actually means whether r1_bio is existed
    or not.
    
    Signed-off-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Signed-off-by: Song Liu <song@kernel.org>
    GuoqingJiang-Linux authored and Song Liu committed Jun 15, 2021
  9. md/raid5: avoid redundant bio clone in raid5_read_one_chunk

    After enable io accounting, chunk read bio could be cloned twice which
    is not good. To avoid such inefficiency, let's clone align_bio from
    io_acct_set too, then we need only call md_account_bio in make_request
    unconditionally.
    
    Signed-off-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Signed-off-by: Song Liu <song@kernel.org>
    GuoqingJiang-Linux authored and Song Liu committed Jun 15, 2021
  10. md/raid5: move checking badblock before clone bio in raid5_read_one_c…

    …hunk
    
    We don't need to clone bio if the relevant region has badblock.
    
    Signed-off-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Signed-off-by: Song Liu <song@kernel.org>
    GuoqingJiang-Linux authored and Song Liu committed Jun 15, 2021
  11. md: add io accounting for raid0 and raid5

    We introduce a new bioset (io_acct_set) for raid0 and raid5 since they
    don't own clone infrastructure to accounting io. And the bioset is added
    to mddev instead of to raid0 and raid5 layer, because with this way, we
    can put common functions to md.h and reuse them in raid0 and raid5.
    
    Also struct md_io_acct is added accordingly which includes io start_time,
    the origin bio and cloned bio. Then we can call bio_{start,end}_io_acct
    to get related io status.
    
    Signed-off-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Signed-off-by: Song Liu <song@kernel.org>
    GuoqingJiang-Linux authored and Song Liu committed Jun 15, 2021
  12. md: revert io stats accounting

    The commit 41d2d84 ("md: improve io stats accounting") could cause
    double fault problem per the report [1], and also it is not correct to
    change ->bi_end_io if md don't own it, so let's revert it.
    
    And io stats accounting will be replemented in later commits.
    
    [1]. https://lore.kernel.org/linux-raid/3bf04253-3fad-434a-63a7-20214e38cf26@gmail.com/T/#t
    
    Fixes: 41d2d84 ("md: improve io stats accounting")
    Signed-off-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
    Signed-off-by: Song Liu <song@kernel.org>
    GuoqingJiang-Linux authored and Song Liu committed Jun 15, 2021

Commits on Jun 14, 2021

  1. mark pstore-blk as broken

    pstore-blk just pokes directly into the pagecache for the block
    device without going through the file operations for that by faking
    up it's own file operations that do not match the block device ones.
    
    As this breaks the control of the block layer of it's page cache,
    and even now just works by accident only the best thing is to just
    disable this driver.
    
    Fixes: 17639f6 ("pstore/blk: Introduce backend for block devices")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20210608161327.1537919-1-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Christoph Hellwig authored and axboe committed Jun 14, 2021

Commits on Jun 9, 2021

  1. z2ram: remove unnecessary oom message

    Fixes scripts/checkpatch.pl warning:
    WARNING: Possible unnecessary 'out of memory' message
    
    Remove it can help us save a bit of memory.
    
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Zhen Lei authored and axboe committed Jun 9, 2021
  2. sx8: remove unnecessary oom message

    Fixes scripts/checkpatch.pl warning:
    WARNING: Possible unnecessary 'out of memory' message
    
    Remove it can help us save a bit of memory.
    
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Zhen Lei authored and axboe committed Jun 9, 2021
  3. sunvdc: remove unnecessary oom message

    Fixes scripts/checkpatch.pl warning:
    WARNING: Possible unnecessary 'out of memory' message
    
    Remove it can help us save a bit of memory.
    
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Zhen Lei authored and axboe committed Jun 9, 2021
  4. mtip32xx: remove unnecessary oom message

    Fixes scripts/checkpatch.pl warning:
    WARNING: Possible unnecessary 'out of memory' message
    
    Remove it can help us save a bit of memory.
    
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Zhen Lei authored and axboe committed Jun 9, 2021
  5. drbd: remove unnecessary oom message

    Fixes scripts/checkpatch.pl warning:
    WARNING: Possible unnecessary 'out of memory' message
    
    Remove it can help us save a bit of memory.
    
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Zhen Lei authored and axboe committed Jun 9, 2021
  6. aoe: remove unnecessary oom message

    Fixes scripts/checkpatch.pl warning:
    WARNING: Possible unnecessary 'out of memory' message
    
    Remove it can help us save a bit of memory.
    
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Zhen Lei authored and axboe committed Jun 9, 2021

Commits on Jun 8, 2021

  1. Merge tag 'nvme-5.14-2021-06-08' of git://git.infradead.org/nvme into…

    … for-5.14/drivers
    
    Pull NVMe updates from Christoph:
    
    "nvme updates for Linux 5.14
    
     - improve the APST configuration algorithm (Alexey Bogoslavsky)
     - look for StorageD3Enable on companion ACPI device (Mario Limonciello)
     - allow selecting the network interface for TCP connections
       (Martin Belanger)
     - misc cleanups (Amit Engel, Chaitanya Kulkarni, Colin Ian King, me)"
    
    * tag 'nvme-5.14-2021-06-08' of git://git.infradead.org/nvme:
      nvmet: remove a superfluous variable
      nvmet: move ka_work initialization to nvmet_alloc_ctrl
      nvme: remove nvme_{get,put}_ns_from_disk
      nvme: split nvme_report_zones
      nvme: move the CSI sanity check into nvme_ns_report_zones
      nvme: add a sparse annotation to nvme_ns_head_ctrl_ioctl
      nvme: open code nvme_put_ns_from_disk in nvme_ns_head_ctrl_ioctl
      nvme: open code nvme_{get,put}_ns_from_disk in nvme_ns_head_ioctl
      nvme: open code nvme_put_ns_from_disk in nvme_ns_head_chr_ioctl
      nvme-fabrics: remove extra braces
      nvme-fabrics: remove an extra comment
      nvme-fabrics: remove extra new lines in the switch
      nvme-fabrics: fix the kerneldco comment for nvmf_log_connect_error()
      nvme-tcp: allow selecting the network interface for connections
      nvme-pci: look for StorageD3Enable on companion ACPI device instead
      nvme: extend and modify the APST configuration algorithm
      nvme: remove redundant initialization of variable ret
    axboe committed Jun 8, 2021

Commits on Jun 3, 2021

  1. nvmet: remove a superfluous variable

    Remove the superfluous variable "bdev" that is only used once in the
    nvmet_bdev_alloc_bip() and use req->ns->bdev that is used everywhere in
    the code to access the nvmet request's bdev.
    
    Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ChaitanayaKulkarni authored and Christoph Hellwig committed Jun 3, 2021
  2. nvmet: move ka_work initialization to nvmet_alloc_ctrl

    Initialize keep-alive work only once, as part of alloc_ctrl
    and not each time that nvmet_start_keep_alive_timer is being called
    
    Signed-off-by: Amit Engel <amit.engel@dell.com>
    Reviewed-by: Hou Pu <houpu.main@gmail.com>
    Amit Engel authored and Christoph Hellwig committed Jun 3, 2021
  3. nvme: remove nvme_{get,put}_ns_from_disk

    Now that only one caller is left remove the helpers by restructuring
    nvme_pr_command so that it has two helpers for sending a command of to a
    given nsid using either the ns_head for multipath, or the namespace
    stored in the gendisk.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Christoph Hellwig committed Jun 3, 2021
  4. nvme: split nvme_report_zones

    Split multipath support out of nvme_report_zones into a separate helper
    and simplify the non-multipath version as a result.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Christoph Hellwig committed Jun 3, 2021
  5. nvme: move the CSI sanity check into nvme_ns_report_zones

    Move the CSI check into nvme_ns_report_zones to clean up the code
    a little bit and prepare for further refactoring.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Christoph Hellwig committed Jun 3, 2021
  6. nvme: add a sparse annotation to nvme_ns_head_ctrl_ioctl

    Add the __releases annotation to tell sparse that nvme_ns_head_ctrl_ioctl
    is expected to unlock head->srcu.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Christoph Hellwig committed Jun 3, 2021
  7. nvme: open code nvme_put_ns_from_disk in nvme_ns_head_ctrl_ioctl

    nvme_ns_head_ctrl_ioctl is always used on multipath nodes, so just call
    srcu_read_unlock directly.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Christoph Hellwig committed Jun 3, 2021
  8. nvme: open code nvme_{get,put}_ns_from_disk in nvme_ns_head_ioctl

    nvme_ns_head_ioctl is always used on multipath nodes, no need to
    deal with the de-multiplexers.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Christoph Hellwig committed Jun 3, 2021
  9. nvme: open code nvme_put_ns_from_disk in nvme_ns_head_chr_ioctl

    nvme_ns_head_chr_ioctl is always used on multipath nodes, so just call
    srcu_read_unlock and consolidate the two unlock paths.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Christoph Hellwig committed Jun 3, 2021
  10. nvme-fabrics: remove extra braces

    No need to use the braces around ~ operator.
    
    No functionality change in this patch.
    
    Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ChaitanayaKulkarni authored and Christoph Hellwig committed Jun 3, 2021
  11. nvme-fabrics: remove an extra comment

    Remove the comment at the end of the switch that is not needed as
    function is small enough.
    
    No functionality change in this patch.
    
    Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ChaitanayaKulkarni authored and Christoph Hellwig committed Jun 3, 2021
  12. nvme-fabrics: remove extra new lines in the switch

    Remove the extra lines in the switch block that is not common practice
    in the kernel code.
    
    No functionality change in this patch.
    
    Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ChaitanayaKulkarni authored and Christoph Hellwig committed Jun 3, 2021
  13. nvme-fabrics: fix the kerneldco comment for nvmf_log_connect_error()

    Fix the comment style that matches existing code.
    
    No functionality change in this patch.
    
    Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ChaitanayaKulkarni authored and Christoph Hellwig committed Jun 3, 2021
  14. nvme-tcp: allow selecting the network interface for connections

    In our application, we need a way to force TCP connections to go out a
    specific IP interface instead of letting Linux select the interface
    based on the routing tables.
    
    Add the 'host-iface' option to allow specifying the interface to use.
    When the option host-iface is specified, the driver uses the specified
    interface to set the option SO_BINDTODEVICE on the TCP socket before
    connecting.
    
    This new option is needed in addtion to the existing host-traddr for
    the following reasons:
    
    Specifying an IP interface by its associated IP address is less
    intuitive than specifying the actual interface name and, in some cases,
    simply doesn't work. That's because the association between interfaces
    and IP addresses is not predictable. IP addresses can be changed or can
    change by themselves over time (e.g. DHCP). Interface names are
    predictable [1] and will persist over time. Consider the following
    configuration.
    
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state ...
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 100.0.0.100/24 scope global lo
           valid_lft forever preferred_lft forever
    2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc ...
        link/ether 08:00:27:21:65:ec brd ff:ff:ff:ff:ff:ff
        inet 100.0.0.100/24 scope global enp0s3
           valid_lft forever preferred_lft forever
    3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc ...
        link/ether 08:00:27:4f:95:5c brd ff:ff:ff:ff:ff:ff
        inet 100.0.0.100/24 scope global enp0s8
           valid_lft forever preferred_lft forever
    
    The above is a VM that I configured with the same IP address
    (100.0.0.100) on all interfaces. Doing a reverse lookup to identify the
    unique interface associated with 100.0.0.100 does not work here. And
    this is why the option host_iface is required. I understand that the
    above config does not represent a standard host system, but I'm using
    this to prove a point: "We can never know how users will configure
    their systems". By te way, The above configuration is perfectly fine
    by Linux.
    
    The current TCP implementation for host_traddr performs a
    bind()-before-connect(). This is a common construct to set the source
    IP address on a TCP socket before connecting. This has no effect on how
    Linux selects the interface for the connection. That's because Linux
    uses the Weak End System model as described in RFC1122 [2]. On the other
    hand, setting the Source IP Address has benefits and should be supported
    by linux-nvme. In fact, setting the Source IP Address is a mandatory
    FedGov requirement (e.g. connection to a RADIUS/TACACS+ server).
    Consider the following configuration.
    
    $ ip addr list dev enp0s8
    3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc ...
        link/ether 08:00:27:4f:95:5c brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.101/24 brd 192.168.56.255 scope global enp0s8
           valid_lft 426sec preferred_lft 426sec
        inet 192.168.56.102/24 scope global secondary enp0s8
           valid_lft forever preferred_lft forever
        inet 192.168.56.103/24 scope global secondary enp0s8
           valid_lft forever preferred_lft forever
        inet 192.168.56.104/24 scope global secondary enp0s8
           valid_lft forever preferred_lft forever
    
    Here we can see that several addresses are associated with interface
    enp0s8. By default, Linux always selects the default IP address,
    192.168.56.101, as the source address when connecting over interface
    enp0s8. Some users, however, want the ability to specify a different
    source address (e.g., 192.168.56.102, 192.168.56.103, ...). The option
    host_traddr can be used as-is to perform this function.
    
    In conclusion, I believe that we need 2 options for TCP connections.
    One that can be used to specify an interface (host-iface). And one that
    can be used to set the source address (host-traddr). Users should be
    allowed to use one or the other, or both, or none. Of course, the
    documentation for host_traddr will need some clarification. It should
    state that when used for TCP connection, this option only sets the
    source address. And the documentation for host_iface should say that
    this option is only available for TCP connections.
    
    References:
    [1] https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
    [2] https://tools.ietf.org/html/rfc1122
    
    Tested both IPv4 and IPv6 connections.
    
    Signed-off-by: Martin Belanger <martin.belanger@dell.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Martin Belanger authored and Christoph Hellwig committed Jun 3, 2021
Older