CC: [email protected]
TO: Christoph Hellwig <[email protected]>

tree:   git://git.infradead.org/users/hch/block.git bio_alloc-cleanup
head:   152c964c974a6e3bf0dd15a8d100c075087d5186
commit: 192922838a1e77811c20c6b8973983a5939edee2 [5/13] drbd: bio_alloc can't 
fail if it is allow to sleep
:::::: branch date: 2 hours ago
:::::: commit date: 3 hours ago
config: mips-randconfig-s032-20220112 
(https://download.01.org/0day-ci/archive/20220112/[email protected]/config)
compiler: mips64-linux-gcc (GCC) 11.2.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        git remote add hch-block git://git.infradead.org/users/hch/block.git
        git fetch --no-tags hch-block bio_alloc-cleanup
        git checkout 192922838a1e77811c20c6b8973983a5939edee2
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=mips 
SHELL=/bin/bash drivers/block/drbd/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


sparse warnings: (new ones prefixed by >>)
   command-line: note: in included file:
   builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQUIRE redefined
   builtin:0:0: sparse: this was the original definition
   builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_SEQ_CST redefined
   builtin:0:0: sparse: this was the original definition
   builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQ_REL redefined
   builtin:0:0: sparse: this was the original definition
   builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_RELEASE redefined
   builtin:0:0: sparse: this was the original definition
>> drivers/block/drbd/drbd_receiver.c:1725:1: sparse: sparse: unused label 
>> 'fail'
   drivers/block/drbd/drbd_receiver.c:5350:27: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:5351:27: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:5360:54: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:5417:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:5417:14: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:5417:14: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:273:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:273:14: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:273:14: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:529:29: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:529:29: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:529:29: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:601:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:601:14: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:601:14: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:705:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:705:14: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:705:14: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:774:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:774:14: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:774:14: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:1167:27: sparse: sparse: cast to 
restricted __be16
   drivers/block/drbd/drbd_receiver.c:1168:27: sparse: sparse: cast to 
restricted __be16
   drivers/block/drbd/drbd_receiver.c:1169:28: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:1173:27: sparse: sparse: cast to 
restricted __be16
   drivers/block/drbd/drbd_receiver.c:1174:28: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:1179:27: sparse: sparse: cast to 
restricted __be16
   drivers/block/drbd/drbd_receiver.c:1180:28: sparse: sparse: cast to 
restricted __be16
   drivers/block/drbd/drbd_receiver.c:822:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:822:14: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:822:14: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:877:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:877:14: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:877:14: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:1042:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:1042:14: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:1042:14: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:1433:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:1433:14: sparse:    struct disk_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:1433:14: sparse:    struct disk_conf *
   drivers/block/drbd/drbd_receiver.c:1587:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:1587:14: sparse:    struct disk_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:1587:14: sparse:    struct disk_conf *
   drivers/block/drbd/drbd_receiver.c:1888:22: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:1892:22: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:1904:22: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:2152:18: sparse: sparse: cast to 
restricted __be64
   drivers/block/drbd/drbd_receiver.c:2186:18: sparse: sparse: cast to 
restricted __be64
   drivers/block/drbd/drbd_receiver.c:2400:22: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:2400:22: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:2400:22: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:2410:27: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:2410:27: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:2410:27: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:2589:24: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:2617:18: sparse: sparse: cast to 
restricted __be64
   drivers/block/drbd/drbd_receiver.c:2628:20: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:2661:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:2661:14: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:2661:14: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:2793:22: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:2793:22: sparse:    struct disk_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:2793:22: sparse:    struct disk_conf *
   drivers/block/drbd/drbd_receiver.c:2849:18: sparse: sparse: cast to 
restricted __be64
   drivers/block/drbd/drbd_receiver.c:2850:18: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:3061:23: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:3061:23: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:3061:23: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:3137:23: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:3137:23: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:3137:23: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:3194:23: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:3194:23: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:3194:23: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:3540:14: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:3540:14: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:3540:14: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:3672:27: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:3673:27: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:3674:27: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:3675:27: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:3676:27: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:3677:27: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:3698:22: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:3698:22: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:3698:22: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:3782:9: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:3782:9: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:3782:9: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:3940:46: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:3999:55: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:4000:57: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:4001:56: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:4002:53: sparse: sparse: cast to 
restricted __be32
   drivers/block/drbd/drbd_receiver.c:4036:25: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:4036:25: sparse:    struct net_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:4036:25: sparse:    struct net_conf *
   drivers/block/drbd/drbd_receiver.c:4041:17: sparse: sparse: incompatible 
types in comparison expression (different address spaces):
   drivers/block/drbd/drbd_receiver.c:4041:17: sparse:    struct disk_conf 
[noderef] __rcu *
   drivers/block/drbd/drbd_receiver.c:4041:17: sparse:    struct disk_conf *

vim +/fail +1725 drivers/block/drbd/drbd_receiver.c

9104d31a759fbad Lars Ellenberg      2016-06-14  1618  
9104d31a759fbad Lars Ellenberg      2016-06-14  1619  
6ec2a0f2bc07d42 Lee Jones           2021-03-12  1620  /*
fbe29dec9862236 Andreas Gruenbacher 2011-02-17  1621   * 
drbd_submit_peer_request()
b30ab7913b0a7b1 Andreas Gruenbacher 2011-07-03  1622   * @device:       DRBD 
device.
db830c464b69e26 Andreas Gruenbacher 2011-02-04  1623   * @peer_req:     peer 
request
10f6d9926cd17af Lars Ellenberg      2011-01-24  1624   *
10f6d9926cd17af Lars Ellenberg      2011-01-24  1625   * May spread the pages 
to multiple bios,
10f6d9926cd17af Lars Ellenberg      2011-01-24  1626   * depending on 
bio_add_page restrictions.
10f6d9926cd17af Lars Ellenberg      2011-01-24  1627   *
10f6d9926cd17af Lars Ellenberg      2011-01-24  1628   * Returns 0 if all bios 
have been submitted,
10f6d9926cd17af Lars Ellenberg      2011-01-24  1629   * -ENOMEM if we could 
not allocate enough bios,
10f6d9926cd17af Lars Ellenberg      2011-01-24  1630   * -ENOSPC (any better 
suggestion?) if we have not been able to bio_add_page a
10f6d9926cd17af Lars Ellenberg      2011-01-24  1631   *  single page to an 
empty bio (which should never happen and likely indicates
10f6d9926cd17af Lars Ellenberg      2011-01-24  1632   *  that the lower level 
IO stack is in some way broken). This has been observed
10f6d9926cd17af Lars Ellenberg      2011-01-24  1633   *  on certain Xen 
deployments.
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1634   */
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1635  /* TODO allocate from our 
own bio_set. */
b30ab7913b0a7b1 Andreas Gruenbacher 2011-07-03  1636  int 
drbd_submit_peer_request(struct drbd_device *device,
fbe29dec9862236 Andreas Gruenbacher 2011-02-17  1637                         
struct drbd_peer_request *peer_req,
bb3cc85e16431bb Mike Christie       2016-06-05  1638                         
const unsigned op, const unsigned op_flags,
bb3cc85e16431bb Mike Christie       2016-06-05  1639                         
const int fault_type)
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1640  {
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1641    struct bio *bios = NULL;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1642    struct bio *bio;
db830c464b69e26 Andreas Gruenbacher 2011-02-04  1643    struct page *page = 
peer_req->pages;
db830c464b69e26 Andreas Gruenbacher 2011-02-04  1644    sector_t sector = 
peer_req->i.sector;
11f8b2b69d32d43 Andreas Gruenbacher 2014-09-11  1645    unsigned data_size = 
peer_req->i.size;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1646    unsigned n_bios = 0;
11f8b2b69d32d43 Andreas Gruenbacher 2014-09-11  1647    unsigned nr_pages = 
(data_size + PAGE_SIZE -1) >> PAGE_SHIFT;
10f6d9926cd17af Lars Ellenberg      2011-01-24  1648    int err = -ENOMEM;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1649  
dd4f699da674010 Lars Ellenberg      2016-06-14  1650    /* TRIM/DISCARD: for 
now, always use the helper function
dd4f699da674010 Lars Ellenberg      2016-06-14  1651     * 
blkdev_issue_zeroout(..., discard=true).
dd4f699da674010 Lars Ellenberg      2016-06-14  1652     * It's synchronous, 
but it does the right thing wrt. bio splitting.
dd4f699da674010 Lars Ellenberg      2016-06-14  1653     * Correctness first, 
performance later.  Next step is to code an
dd4f699da674010 Lars Ellenberg      2016-06-14  1654     * asynchronous variant 
of the same.
dd4f699da674010 Lars Ellenberg      2016-06-14  1655     */
f31e583aa2c2089 Lars Ellenberg      2018-12-20  1656    if (peer_req->flags & 
(EE_TRIM|EE_WRITE_SAME|EE_ZEROOUT)) {
a0fb3c47a1aae5d Lars Ellenberg      2014-04-28  1657            /* wait for all 
pending IO completions, before we start
a0fb3c47a1aae5d Lars Ellenberg      2014-04-28  1658             * zeroing 
things out. */
5dd2ca1912714a0 Andreas Gruenbacher 2014-08-11  1659            
conn_wait_active_ee_empty(peer_req->peer_device->connection);
45d2933c921c51d Lars Ellenberg      2014-04-23  1660            /* add it to 
the active list now,
45d2933c921c51d Lars Ellenberg      2014-04-23  1661             * so we can 
find it to present it in debugfs */
21ae5d7f95aa1a6 Lars Ellenberg      2014-05-05  1662            
peer_req->submit_jif = jiffies;
21ae5d7f95aa1a6 Lars Ellenberg      2014-05-05  1663            peer_req->flags 
|= EE_SUBMITTED;
700ca8c04a0f440 Philipp Reisner     2016-06-14  1664  
700ca8c04a0f440 Philipp Reisner     2016-06-14  1665            /* If this was 
a resync request from receive_rs_deallocated(),
700ca8c04a0f440 Philipp Reisner     2016-06-14  1666             * it is 
already on the sync_ee list */
700ca8c04a0f440 Philipp Reisner     2016-06-14  1667            if 
(list_empty(&peer_req->w.list)) {
45d2933c921c51d Lars Ellenberg      2014-04-23  1668                    
spin_lock_irq(&device->resource->req_lock);
45d2933c921c51d Lars Ellenberg      2014-04-23  1669                    
list_add_tail(&peer_req->w.list, &device->active_ee);
45d2933c921c51d Lars Ellenberg      2014-04-23  1670                    
spin_unlock_irq(&device->resource->req_lock);
700ca8c04a0f440 Philipp Reisner     2016-06-14  1671            }
700ca8c04a0f440 Philipp Reisner     2016-06-14  1672  
f31e583aa2c2089 Lars Ellenberg      2018-12-20  1673            if 
(peer_req->flags & (EE_TRIM|EE_ZEROOUT))
f31e583aa2c2089 Lars Ellenberg      2018-12-20  1674                    
drbd_issue_peer_discard_or_zero_out(device, peer_req);
9104d31a759fbad Lars Ellenberg      2016-06-14  1675            else /* 
EE_WRITE_SAME */
9104d31a759fbad Lars Ellenberg      2016-06-14  1676                    
drbd_issue_peer_wsame(device, peer_req);
a0fb3c47a1aae5d Lars Ellenberg      2014-04-28  1677            return 0;
a0fb3c47a1aae5d Lars Ellenberg      2014-04-28  1678    }
a0fb3c47a1aae5d Lars Ellenberg      2014-04-28  1679  
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1680    /* In most cases, we 
will only need one bio.  But in case the lower
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1681     * level restrictions 
happen to be different at this offset on this
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1682     * side than those of 
the sending peer, we may need to submit the
9476f39d66041ca Lars Ellenberg      2011-02-23  1683     * request in more than 
one bio.
9476f39d66041ca Lars Ellenberg      2011-02-23  1684     *
9476f39d66041ca Lars Ellenberg      2011-02-23  1685     * Plain bio_alloc is 
good enough here, this is no DRBD internally
9476f39d66041ca Lars Ellenberg      2011-02-23  1686     * generated bio, but a 
bio allocated on behalf of the peer.
9476f39d66041ca Lars Ellenberg      2011-02-23  1687     */
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1688  next_bio:
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1689    bio = 
bio_alloc(GFP_NOIO, nr_pages);
db830c464b69e26 Andreas Gruenbacher 2011-02-04  1690    /* > 
peer_req->i.sector, unless this is the first bio */
4f024f3797c43cb Kent Overstreet     2013-10-11  1691    bio->bi_iter.bi_sector 
= sector;
74d46992e0d9dee Christoph Hellwig   2017-08-23  1692    bio_set_dev(bio, 
device->ldev->backing_bdev);
bb3cc85e16431bb Mike Christie       2016-06-05  1693    bio_set_op_attrs(bio, 
op, op_flags);
db830c464b69e26 Andreas Gruenbacher 2011-02-04  1694    bio->bi_private = 
peer_req;
fcefa62e4c26e70 Andreas Gruenbacher 2011-02-17  1695    bio->bi_end_io = 
drbd_peer_request_endio;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1696  
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1697    bio->bi_next = bios;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1698    bios = bio;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1699    ++n_bios;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1700  
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1701    
page_chain_for_each(page) {
11f8b2b69d32d43 Andreas Gruenbacher 2014-09-11  1702            unsigned len = 
min_t(unsigned, data_size, PAGE_SIZE);
06efffda51d9785 Ming Lei            2016-11-11  1703            if 
(!bio_add_page(bio, page, len, 0))
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1704                    goto 
next_bio;
11f8b2b69d32d43 Andreas Gruenbacher 2014-09-11  1705            data_size -= 
len;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1706            sector += len 
>> 9;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1707            --nr_pages;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1708    }
11f8b2b69d32d43 Andreas Gruenbacher 2014-09-11  1709    D_ASSERT(device, 
data_size == 0);
a0fb3c47a1aae5d Lars Ellenberg      2014-04-28  1710    D_ASSERT(device, page 
== NULL);
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1711  
db830c464b69e26 Andreas Gruenbacher 2011-02-04  1712    
atomic_set(&peer_req->pending_bios, n_bios);
21ae5d7f95aa1a6 Lars Ellenberg      2014-05-05  1713    /* for debugfs: update 
timestamp, mark as submitted */
21ae5d7f95aa1a6 Lars Ellenberg      2014-05-05  1714    peer_req->submit_jif = 
jiffies;
21ae5d7f95aa1a6 Lars Ellenberg      2014-05-05  1715    peer_req->flags |= 
EE_SUBMITTED;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1716    do {
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1717            bio = bios;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1718            bios = 
bios->bi_next;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1719            bio->bi_next = 
NULL;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1720  
ed00aabd5eb9fb4 Christoph Hellwig   2020-07-01  1721            
drbd_submit_bio_noacct(device, fault_type, bio);
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1722    } while (bios);
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1723    return 0;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1724  
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14 @1725  fail:
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1726    while (bios) {
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1727            bio = bios;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1728            bios = 
bios->bi_next;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1729            bio_put(bio);
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1730    }
10f6d9926cd17af Lars Ellenberg      2011-01-24  1731    return err;
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1732  }
45bb912bd5ea4d2 Lars Ellenberg      2010-05-14  1733  

:::::: The code at line 1725 was first introduced by commit
:::::: 45bb912bd5ea4d2b3a270a93cbdf767a0e2df6f5 drbd: Allow drbd_epoch_entries 
to use multiple bios. This should allow for better performance if the lower 
level IO stack of the peers differs in limits exposed either via the queue, or 
via some merge_bvec_fn.

:::::: TO: Lars Ellenberg <[email protected]>
:::::: CC: Philipp Reisner <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to