mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-31 12:10:52 -04:00
Linux 4.18-rc5
-----BEGIN PGP SIGNATURE----- iQFSBAABCAA8FiEEq68RxlopcLEwq+PEeb4+QwBBGIYFAltLpVUeHHRvcnZhbGRz QGxpbnV4LWZvdW5kYXRpb24ub3JnAAoJEHm+PkMAQRiGWisH/ikONMwV7OrSk36Y 5rxzTFUoBk0Qffct88gtSNuRVCxaVb1ofCndvFJE6A6HfJkWpbBzH6eq90aakmJi f7uFcu4YmsQpeQaf9lpftWmY2vDf2fIadVTV0RnSMXks57wMax1cpBe7LJGpz13e f+g5XRVs1MdlZVtr6tG2SU3Y5AqVVVsYe/0DBPonEqeh9/JJbPFCuNkFOxxzAqPu VTnjyoOqG8qtZzjklNtR5rZn0Gv592tWX36eiWTQdThNmVFkGEAJwsHCQlY4OQYK 61QN4UhOHiu8e1ZuGDNEDhNVRnKtaaYUPFeWL1wLRW73ul4P3ZkpvpS8QTMwcFJI JjzNOkI= =ckcO -----END PGP SIGNATURE----- Merge tag 'v4.18-rc5' into locking/core, to pick up fixes Signed-off-by: Ingo Molnar <[email protected]>
This commit is contained in:
commit
52b544bd38
992 changed files with 9422 additions and 4948 deletions
|
|
@ -1244,8 +1244,8 @@ drbd_request_prepare(struct drbd_device *device, struct bio *bio, unsigned long
|
|||
_drbd_start_io_acct(device, req);
|
||||
|
||||
/* process discards always from our submitter thread */
|
||||
if ((bio_op(bio) & REQ_OP_WRITE_ZEROES) ||
|
||||
(bio_op(bio) & REQ_OP_DISCARD))
|
||||
if (bio_op(bio) == REQ_OP_WRITE_ZEROES ||
|
||||
bio_op(bio) == REQ_OP_DISCARD)
|
||||
goto queue_for_submitter_thread;
|
||||
|
||||
if (rw == WRITE && req->private_bio && req->i.size
|
||||
|
|
|
|||
|
|
@ -282,8 +282,8 @@ void drbd_request_endio(struct bio *bio)
|
|||
what = COMPLETED_OK;
|
||||
}
|
||||
|
||||
bio_put(req->private_bio);
|
||||
req->private_bio = ERR_PTR(blk_status_to_errno(bio->bi_status));
|
||||
bio_put(bio);
|
||||
|
||||
/* not req_mod(), we need irqsave here! */
|
||||
spin_lock_irqsave(&device->resource->req_lock, flags);
|
||||
|
|
|
|||
|
|
@ -1613,6 +1613,7 @@ static int lo_compat_ioctl(struct block_device *bdev, fmode_t mode,
|
|||
arg = (unsigned long) compat_ptr(arg);
|
||||
case LOOP_SET_FD:
|
||||
case LOOP_CHANGE_FD:
|
||||
case LOOP_SET_BLOCK_SIZE:
|
||||
err = lo_ioctl(bdev, mode, cmd, arg);
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ struct link_dead_args {
|
|||
#define NBD_HAS_CONFIG_REF 4
|
||||
#define NBD_BOUND 5
|
||||
#define NBD_DESTROY_ON_DISCONNECT 6
|
||||
#define NBD_DISCONNECT_ON_CLOSE 7
|
||||
|
||||
struct nbd_config {
|
||||
u32 flags;
|
||||
|
|
@ -138,6 +139,7 @@ static void nbd_config_put(struct nbd_device *nbd);
|
|||
static void nbd_connect_reply(struct genl_info *info, int index);
|
||||
static int nbd_genl_status(struct sk_buff *skb, struct genl_info *info);
|
||||
static void nbd_dead_link_work(struct work_struct *work);
|
||||
static void nbd_disconnect_and_put(struct nbd_device *nbd);
|
||||
|
||||
static inline struct device *nbd_to_dev(struct nbd_device *nbd)
|
||||
{
|
||||
|
|
@ -1305,6 +1307,12 @@ out:
|
|||
static void nbd_release(struct gendisk *disk, fmode_t mode)
|
||||
{
|
||||
struct nbd_device *nbd = disk->private_data;
|
||||
struct block_device *bdev = bdget_disk(disk, 0);
|
||||
|
||||
if (test_bit(NBD_DISCONNECT_ON_CLOSE, &nbd->config->runtime_flags) &&
|
||||
bdev->bd_openers == 0)
|
||||
nbd_disconnect_and_put(nbd);
|
||||
|
||||
nbd_config_put(nbd);
|
||||
nbd_put(nbd);
|
||||
}
|
||||
|
|
@ -1705,6 +1713,10 @@ again:
|
|||
&config->runtime_flags);
|
||||
put_dev = true;
|
||||
}
|
||||
if (flags & NBD_CFLAG_DISCONNECT_ON_CLOSE) {
|
||||
set_bit(NBD_DISCONNECT_ON_CLOSE,
|
||||
&config->runtime_flags);
|
||||
}
|
||||
}
|
||||
|
||||
if (info->attrs[NBD_ATTR_SOCKETS]) {
|
||||
|
|
@ -1749,6 +1761,17 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void nbd_disconnect_and_put(struct nbd_device *nbd)
|
||||
{
|
||||
mutex_lock(&nbd->config_lock);
|
||||
nbd_disconnect(nbd);
|
||||
nbd_clear_sock(nbd);
|
||||
mutex_unlock(&nbd->config_lock);
|
||||
if (test_and_clear_bit(NBD_HAS_CONFIG_REF,
|
||||
&nbd->config->runtime_flags))
|
||||
nbd_config_put(nbd);
|
||||
}
|
||||
|
||||
static int nbd_genl_disconnect(struct sk_buff *skb, struct genl_info *info)
|
||||
{
|
||||
struct nbd_device *nbd;
|
||||
|
|
@ -1781,13 +1804,7 @@ static int nbd_genl_disconnect(struct sk_buff *skb, struct genl_info *info)
|
|||
nbd_put(nbd);
|
||||
return 0;
|
||||
}
|
||||
mutex_lock(&nbd->config_lock);
|
||||
nbd_disconnect(nbd);
|
||||
nbd_clear_sock(nbd);
|
||||
mutex_unlock(&nbd->config_lock);
|
||||
if (test_and_clear_bit(NBD_HAS_CONFIG_REF,
|
||||
&nbd->config->runtime_flags))
|
||||
nbd_config_put(nbd);
|
||||
nbd_disconnect_and_put(nbd);
|
||||
nbd_config_put(nbd);
|
||||
nbd_put(nbd);
|
||||
return 0;
|
||||
|
|
@ -1798,7 +1815,7 @@ static int nbd_genl_reconfigure(struct sk_buff *skb, struct genl_info *info)
|
|||
struct nbd_device *nbd = NULL;
|
||||
struct nbd_config *config;
|
||||
int index;
|
||||
int ret = -EINVAL;
|
||||
int ret = 0;
|
||||
bool put_dev = false;
|
||||
|
||||
if (!netlink_capable(skb, CAP_SYS_ADMIN))
|
||||
|
|
@ -1838,6 +1855,7 @@ static int nbd_genl_reconfigure(struct sk_buff *skb, struct genl_info *info)
|
|||
!nbd->task_recv) {
|
||||
dev_err(nbd_to_dev(nbd),
|
||||
"not configured, cannot reconfigure\n");
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
@ -1862,6 +1880,14 @@ static int nbd_genl_reconfigure(struct sk_buff *skb, struct genl_info *info)
|
|||
&config->runtime_flags))
|
||||
refcount_inc(&nbd->refs);
|
||||
}
|
||||
|
||||
if (flags & NBD_CFLAG_DISCONNECT_ON_CLOSE) {
|
||||
set_bit(NBD_DISCONNECT_ON_CLOSE,
|
||||
&config->runtime_flags);
|
||||
} else {
|
||||
clear_bit(NBD_DISCONNECT_ON_CLOSE,
|
||||
&config->runtime_flags);
|
||||
}
|
||||
}
|
||||
|
||||
if (info->attrs[NBD_ATTR_SOCKETS]) {
|
||||
|
|
|
|||
|
|
@ -1365,7 +1365,7 @@ static blk_qc_t null_queue_bio(struct request_queue *q, struct bio *bio)
|
|||
static enum blk_eh_timer_return null_rq_timed_out_fn(struct request *rq)
|
||||
{
|
||||
pr_info("null: rq %p timed out\n", rq);
|
||||
blk_mq_complete_request(rq);
|
||||
__blk_complete_request(rq);
|
||||
return BLK_EH_DONE;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue