From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Hajnoczi Subject: [PATCH v3] virtio-blk: handle block_device_operations callbacks after hot unplug Date: Wed, 29 Apr 2020 17:53:45 +0100 Message-ID: <20200429165345.144702-1-stefanha@redhat.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: Sender: linux-kernel-owner@vger.kernel.org To: virtualization@lists.linux-foundation.org Cc: Stefano Garzarella , linux-kernel@vger.kernel.org, "Michael S. Tsirkin" , Christoph Hellwig , linux-block@vger.kernel.org, Paolo Bonzini , Jens Axboe , cohuck@redhat.com, Jason Wang , Stefan Hajnoczi , Lance Digby List-Id: virtualization@lists.linuxfoundation.org QSB1c2Vyc3BhY2UgcHJvY2VzcyBob2xkaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHRvIGEgdmlydGlv X2JsayBkZXZpY2UgY2FuCnN0aWxsIGludm9rZSBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBhZnRl ciBob3QgdW5wbHVnLiAgVGhpcyBsZWFkcyB0byBhCnVzZS1hZnRlci1mcmVlIGFjY2Vzc2luZyB2 YmxrLT52ZGV2IGluIHZpcnRibGtfZ2V0Z2VvKCkgd2hlbgppb2N0bChIRElPX0dFVEdFTykgaXMg aW52b2tlZDoKCiAgQlVHOiB1bmFibGUgdG8gaGFuZGxlIGtlcm5lbCBOVUxMIHBvaW50ZXIgZGVy ZWZlcmVuY2UgYXQgMDAwMDAwMDAwMDAwMDA5MAogIElQOiBbPGZmZmZmZmZmYzAwZTU0NTA+XSB2 aXJ0aW9fY2hlY2tfZHJpdmVyX29mZmVyZWRfZmVhdHVyZSsweDEwLzB4OTAgW3ZpcnRpb10KICBQ R0QgODAwMDAwMDAzYTkyZjA2NyBQVUQgM2E5MzAwNjcgUE1EIDAKICBPb3BzOiAwMDAwIFsjMV0g U01QCiAgQ1BVOiAwIFBJRDogMTMxMCBDb21tOiBoZGlvLWdldGdlbyBUYWludGVkOiBHICAgICAg ICAgICBPRSAgLS0tLS0tLS0tLS0tICAgMy4xMC4wLTEwNjIuZWw3Lng4Nl82NCAjMQogIEhhcmR3 YXJlIG5hbWU6IFFFTVUgU3RhbmRhcmQgUEMgKGk0NDBGWCArIFBJSVgsIDE5OTYpLCBCSU9TIHJl bC0xLjEzLjAtMC1nZjIxYjVhNGFlYjAyLXByZWJ1aWx0LnFlbXUub3JnIDA0LzAxLzIwMTQKICB0 YXNrOiBmZmZmOWJlNWZiZmI4MDAwIHRpOiBmZmZmOWJlNWZhODkwMDAwIHRhc2sudGk6IGZmZmY5 YmU1ZmE4OTAwMDAKICBSSVA6IDAwMTA6WzxmZmZmZmZmZmMwMGU1NDUwPl0gIFs8ZmZmZmZmZmZj MDBlNTQ1MD5dIHZpcnRpb19jaGVja19kcml2ZXJfb2ZmZXJlZF9mZWF0dXJlKzB4MTAvMHg5MCBb dmlydGlvXQogIFJTUDogMDAxODpmZmZmOWJlNWZhODkzZGM4ICBFRkxBR1M6IDAwMDEwMjQ2CiAg UkFYOiBmZmZmOWJlNWZjM2YzNDAwIFJCWDogZmZmZjliZTVmYTg5M2UzMCBSQ1g6IDAwMDAwMDAw MDAwMDAwMDAKICBSRFg6IDAwMDAwMDAwMDAwMDAwMDAgUlNJOiAwMDAwMDAwMDAwMDAwMDA0IFJE STogZmZmZjliZTVmYmMxMGI0MAogIFJCUDogZmZmZjliZTVmYTg5M2RjOCBSMDg6IDAwMDAwMDAw MDAwMDAzMDEgUjA5OiAwMDAwMDAwMDAwMDAwMzAxCiAgUjEwOiAwMDAwMDAwMDAwMDAwMDAwIFIx MTogMDAwMDAwMDAwMDAwMDAwMCBSMTI6IGZmZmY5YmU1ZmRjMjQ2ODAKICBSMTM6IGZmZmY5YmU1 ZmJjMTBiNDAgUjE0OiBmZmZmOWJlNWZiYzEwNDgwIFIxNTogMDAwMDAwMDAwMDAwMDAwMAogIEZT OiAgMDAwMDdmMWJmYjk2ODc0MCgwMDAwKSBHUzpmZmZmOWJlNWZmYzAwMDAwKDAwMDApIGtubEdT OjAwMDAwMDAwMDAwMDAwMDAKICBDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAw MDAwMDgwMDUwMDMzCiAgQ1IyOiAwMDAwMDAwMDAwMDAwMDkwIENSMzogMDAwMDAwMDAzYTg5NDAw MCBDUjQ6IDAwMDAwMDAwMDAzNjBmZjAKICBEUjA6IDAwMDAwMDAwMDAwMDAwMDAgRFIxOiAwMDAw MDAwMDAwMDAwMDAwIERSMjogMDAwMDAwMDAwMDAwMDAwMAogIERSMzogMDAwMDAwMDAwMDAwMDAw MCBEUjY6IDAwMDAwMDAwZmZmZTBmZjAgRFI3OiAwMDAwMDAwMDAwMDAwNDAwCiAgQ2FsbCBUcmFj ZToKICAgWzxmZmZmZmZmZmMwMTZhYzM3Pl0gdmlydGJsa19nZXRnZW8rMHg0Ny8weDExMCBbdmly dGlvX2Jsa10KICAgWzxmZmZmZmZmZjhkM2YyMDBkPl0gPyBoYW5kbGVfbW1fZmF1bHQrMHgzOWQv MHg5YjAKICAgWzxmZmZmZmZmZjhkNTYxMjY1Pl0gYmxrZGV2X2lvY3RsKzB4MWY1LzB4YTIwCiAg IFs8ZmZmZmZmZmY4ZDQ4ODc3MT5dIGJsb2NrX2lvY3RsKzB4NDEvMHg1MAogICBbPGZmZmZmZmZm OGQ0NWQ5ZTA+XSBkb192ZnNfaW9jdGwrMHgzYTAvMHg1YTAKICAgWzxmZmZmZmZmZjhkNDVkYzgx Pl0gU3lTX2lvY3RsKzB4YTEvMHhjMAoKQSByZWxhdGVkIHByb2JsZW0gaXMgdGhhdCB2aXJ0Ymxr X3JlbW92ZSgpIGxlYWtzIHRoZSB2ZF9pbmRleF9pZGEgaW5kZXgKd2hlbiBzb21ldGhpbmcgc3Rp bGwgaG9sZHMgYSByZWZlcmVuY2UgdG8gdmJsay0+ZGlzayBkdXJpbmcgaG90IHVucGx1Zy4KVGhp cyBjYXVzZXMgdmlydGlvLWJsayBkZXZpY2UgbmFtZXMgdG8gYmUgbG9zdCAodmRhLCB2ZGIsIGV0 YykuCgpGaXggdGhlc2UgaXNzdWVzIGJ5IHByb3RlY3RpbmcgdmJsay0+dmRldiB3aXRoIGEgbXV0 ZXggYW5kIHJlZmVyZW5jZQpjb3VudGluZyB2YmxrIHNvIHRoZSB2ZF9pbmRleF9pZGEgaW5kZXgg Y2FuIGJlIHJlbW92ZWQgaW4gYWxsIGNhc2VzLgoKRml4ZXM6IDQ4ZTQwNDNkNDUyOTUyM2NiYzdm YThkZDc0NWJkOGUyYzQ1Y2UxZDMKICAgICAgICgidmlydGlvOiBhZGQgdmlydGlvIGRpc2sgZ2Vv bWV0cnkgZmVhdHVyZSIpClJlcG9ydGVkLWJ5OiBMYW5jZSBEaWdieSA8bGRpZ2J5QHJlZGhhdC5j b20+ClNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBIYWpub2N6aSA8c3RlZmFuaGFAcmVkaGF0LmNvbT4K LS0tCiBkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyB8IDg3ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgOCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2Ry aXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCmluZGV4IDkzNDY4YjdjNjcwMS4uNmY3ZjI3NzQ5NWY0 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYworKysgYi9kcml2ZXJzL2Js b2NrL3ZpcnRpb19ibGsuYwpAQCAtMzMsNiArMzMsMTYgQEAgc3RydWN0IHZpcnRpb19ibGtfdnEg ewogfSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wOwogCiBzdHJ1Y3QgdmlydGlvX2JsayB7 CisJLyoKKwkgKiB2ZGV2IG1heSBiZSBhY2Nlc3NlZCB3aXRob3V0IHRha2luZyB0aGlzIG11dGV4 IGluIGJsay1tcSBhbmQKKwkgKiB2aXJ0cXVldWUgY29kZSBwYXRocyBiZWNhdXNlIHZpcnRibGtf cmVtb3ZlKCkgc3RvcHMgdGhlbSBiZWZvcmUgdmRldgorCSAqIGlzIGZyZWVkLgorCSAqCisJICog RXZlcnl0aGluZyBlbHNlIG11c3QgaG9sZCB0aGlzIG11dGV4IHdoZW4gYWNjZXNzaW5nIHZkZXYg YW5kIG11c3QKKwkgKiBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdmRldiBpcyBOVUxMIGFmdGVyIHZp cnRibGtfcmVtb3ZlKCkgaGFzIGJlZW4KKwkgKiBjYWxsZWQuCisJICovCisJc3RydWN0IG11dGV4 IHZkZXZfbXV0ZXg7CiAJc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXY7CiAKIAkvKiBUaGUgZGlz ayBzdHJ1Y3R1cmUgZm9yIHRoZSBrZXJuZWwuICovCkBAIC00NCw2ICs1NCwxMyBAQCBzdHJ1Y3Qg dmlydGlvX2JsayB7CiAJLyogUHJvY2VzcyBjb250ZXh0IGZvciBjb25maWcgc3BhY2UgdXBkYXRl cyAqLwogCXN0cnVjdCB3b3JrX3N0cnVjdCBjb25maWdfd29yazsKIAorCS8qCisJICogVHJhY2tz IHJlZmVyZW5jZXMgZnJvbSBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBvcGVuL3JlbGVhc2UgYW5k CisJICogdmlydGlvX2RyaXZlciBwcm9iZS9yZW1vdmUgc28gdGhpcyBvYmplY3QgY2FuIGJlIGZy ZWVkIG9uY2Ugbm8KKwkgKiBsb25nZXIgaW4gdXNlLgorCSAqLworCXJlZmNvdW50X3QgcmVmczsK KwogCS8qIFdoYXQgaG9zdCB0ZWxscyB1cywgcGx1cyAyIGZvciBoZWFkZXIgJiB0YWlsZXIuICov CiAJdW5zaWduZWQgaW50IHNnX2VsZW1zOwogCkBAIC0yOTUsMTAgKzMxMiw1NSBAQCBzdGF0aWMg aW50IHZpcnRibGtfZ2V0X2lkKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBjaGFyICppZF9zdHIpCiAJ cmV0dXJuIGVycjsKIH0KIAorc3RhdGljIHZvaWQgdmlydGJsa19nZXQoc3RydWN0IHZpcnRpb19i bGsgKnZibGspCit7CisJcmVmY291bnRfaW5jKCZ2YmxrLT5yZWZzKTsKK30KKworc3RhdGljIHZv aWQgdmlydGJsa19wdXQoc3RydWN0IHZpcnRpb19ibGsgKnZibGspCit7CisJaWYgKHJlZmNvdW50 X2RlY19hbmRfdGVzdCgmdmJsay0+cmVmcykpIHsKKwkJaWRhX3NpbXBsZV9yZW1vdmUoJnZkX2lu ZGV4X2lkYSwgdmJsay0+aW5kZXgpOworCQltdXRleF9kZXN0cm95KCZ2YmxrLT52ZGV2X211dGV4 KTsKKwkJa2ZyZWUodmJsayk7CisJfQorfQorCitzdGF0aWMgaW50IHZpcnRibGtfb3BlbihzdHJ1 Y3QgYmxvY2tfZGV2aWNlICpiZCwgZm1vZGVfdCBtb2RlKQoreworCXN0cnVjdCB2aXJ0aW9fYmxr ICp2YmxrID0gYmQtPmJkX2Rpc2stPnByaXZhdGVfZGF0YTsKKwlpbnQgcmV0ID0gMDsKKworCW11 dGV4X2xvY2soJnZibGstPnZkZXZfbXV0ZXgpOworCisJaWYgKHZibGstPnZkZXYpCisJCXZpcnRi bGtfZ2V0KHZibGspOworCWVsc2UKKwkJcmV0ID0gLUVOWElPOworCisJbXV0ZXhfdW5sb2NrKCZ2 YmxrLT52ZGV2X211dGV4KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCB2aXJ0Ymxr X3JlbGVhc2Uoc3RydWN0IGdlbmRpc2sgKmRpc2ssIGZtb2RlX3QgbW9kZSkKK3sKKwlzdHJ1Y3Qg dmlydGlvX2JsayAqdmJsayA9IGRpc2stPnByaXZhdGVfZGF0YTsKKworCXZpcnRibGtfcHV0KHZi bGspOworfQorCiAvKiBXZSBwcm92aWRlIGdldGdlbyBvbmx5IHRvIHBsZWFzZSBzb21lIG9sZCBi b290bG9hZGVyL3BhcnRpdGlvbmluZyB0b29scyAqLwogc3RhdGljIGludCB2aXJ0YmxrX2dldGdl byhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZCwgc3RydWN0IGhkX2dlb21ldHJ5ICpnZW8pCiB7CiAJ c3RydWN0IHZpcnRpb19ibGsgKnZibGsgPSBiZC0+YmRfZGlzay0+cHJpdmF0ZV9kYXRhOworCWlu dCByZXQgPSAwOworCisJbXV0ZXhfbG9jaygmdmJsay0+dmRldl9tdXRleCk7CisKKwlpZiAoIXZi bGstPnZkZXYpIHsKKwkJcmV0ID0gLUVOWElPOworCQlnb3RvIG91dDsKKwl9CiAKIAkvKiBzZWUg aWYgdGhlIGhvc3QgcGFzc2VkIGluIGdlb21ldHJ5IGNvbmZpZyAqLwogCWlmICh2aXJ0aW9faGFz X2ZlYXR1cmUodmJsay0+dmRldiwgVklSVElPX0JMS19GX0dFT01FVFJZKSkgewpAQCAtMzE0LDEx ICszNzYsMTUgQEAgc3RhdGljIGludCB2aXJ0YmxrX2dldGdlbyhzdHJ1Y3QgYmxvY2tfZGV2aWNl ICpiZCwgc3RydWN0IGhkX2dlb21ldHJ5ICpnZW8pCiAJCWdlby0+c2VjdG9ycyA9IDEgPDwgNTsK IAkJZ2VvLT5jeWxpbmRlcnMgPSBnZXRfY2FwYWNpdHkoYmQtPmJkX2Rpc2spID4+IDExOwogCX0K LQlyZXR1cm4gMDsKK291dDoKKwltdXRleF91bmxvY2soJnZibGstPnZkZXZfbXV0ZXgpOworCXJl dHVybiByZXQ7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlv bnMgdmlydGJsa19mb3BzID0gewogCS5vd25lciAgPSBUSElTX01PRFVMRSwKKwkub3BlbiA9IHZp cnRibGtfb3BlbiwKKwkucmVsZWFzZSA9IHZpcnRibGtfcmVsZWFzZSwKIAkuZ2V0Z2VvID0gdmly dGJsa19nZXRnZW8sCiB9OwogCkBAIC02NTUsNiArNzIxLDEwIEBAIHN0YXRpYyBpbnQgdmlydGJs a19wcm9iZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKIAkJZ290byBvdXRfZnJlZV9pbmRl eDsKIAl9CiAKKwkvKiBUaGlzIHJlZmVyZW5jZSBpcyBkcm9wcGVkIGluIHZpcnRibGtfcmVtb3Zl KCkuICovCisJcmVmY291bnRfc2V0KCZ2YmxrLT5yZWZzLCAxKTsKKwltdXRleF9pbml0KCZ2Ymxr LT52ZGV2X211dGV4KTsKKwogCXZibGstPnZkZXYgPSB2ZGV2OwogCXZibGstPnNnX2VsZW1zID0g c2dfZWxlbXM7CiAKQEAgLTgyMCw4ICs4OTAsNiBAQCBzdGF0aWMgaW50IHZpcnRibGtfcHJvYmUo c3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpCiBzdGF0aWMgdm9pZCB2aXJ0YmxrX3JlbW92ZShz dHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKIHsKIAlzdHJ1Y3QgdmlydGlvX2JsayAqdmJsayA9 IHZkZXYtPnByaXY7Ci0JaW50IGluZGV4ID0gdmJsay0+aW5kZXg7Ci0JaW50IHJlZmM7CiAKIAkv KiBNYWtlIHN1cmUgbm8gd29yayBoYW5kbGVyIGlzIGFjY2Vzc2luZyB0aGUgZGV2aWNlLiAqLwog CWZsdXNoX3dvcmsoJnZibGstPmNvbmZpZ193b3JrKTsKQEAgLTgzMSwxOCArODk5LDIxIEBAIHN0 YXRpYyB2b2lkIHZpcnRibGtfcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQogCiAJ YmxrX21xX2ZyZWVfdGFnX3NldCgmdmJsay0+dGFnX3NldCk7CiAKKwltdXRleF9sb2NrKCZ2Ymxr LT52ZGV2X211dGV4KTsKKwogCS8qIFN0b3AgYWxsIHRoZSB2aXJ0cXVldWVzLiAqLwogCXZkZXYt PmNvbmZpZy0+cmVzZXQodmRldik7CiAKLQlyZWZjID0ga3JlZl9yZWFkKCZkaXNrX3RvX2Rldih2 YmxrLT5kaXNrKS0+a29iai5rcmVmKTsKKwkvKiBWaXJ0cXVldWVzIGFyZSBzdG9wcGVkLCBub3Ro aW5nIGNhbiB1c2UgdmJsay0+dmRldiBhbnltb3JlLiAqLworCXZibGstPnZkZXYgPSBOVUxMOwor CiAJcHV0X2Rpc2sodmJsay0+ZGlzayk7CiAJdmRldi0+Y29uZmlnLT5kZWxfdnFzKHZkZXYpOwog CWtmcmVlKHZibGstPnZxcyk7Ci0Ja2ZyZWUodmJsayk7CiAKLQkvKiBPbmx5IGZyZWUgZGV2aWNl IGlkIGlmIHdlIGRvbid0IGhhdmUgYW55IHVzZXJzICovCi0JaWYgKHJlZmMgPT0gMSkKLQkJaWRh X3NpbXBsZV9yZW1vdmUoJnZkX2luZGV4X2lkYSwgaW5kZXgpOworCW11dGV4X3VubG9jaygmdmJs ay0+dmRldl9tdXRleCk7CisKKwl2aXJ0YmxrX3B1dCh2YmxrKTsKIH0KIAogI2lmZGVmIENPTkZJ R19QTV9TTEVFUAotLSAKMi4yNS4zCgo=