Received: by 2002:a4a:311b:0:0:0:0:0 with SMTP id k27-v6csp4708571ooa; Tue, 14 Aug 2018 09:28:38 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyQ/+rpiwpmfVzDEqO9AzEJWC9KwlWFqjgLGgopoVP8v1olt4c0tICtGuX5ZCIkV8E5MBxr X-Received: by 2002:a63:5e45:: with SMTP id s66-v6mr21908288pgb.151.1534264118693; Tue, 14 Aug 2018 09:28:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534264118; cv=none; d=google.com; s=arc-20160816; b=GvRORw61q4PoNlNs5nUAAi/LqRKNEq2djMNT1fiW4uOhRH4gjKFG86WGuZkhoqmSCE dp2tStU9PfOqcp36Zy6wn+bjvyFLPy9/CwLbTsdmNwDFmXRcvxeoQHEhL6sWpM5RgnhC VFgz8b9xdNraxdDam/aK2JGNZiQoSN8uP/wIVLhOaJrXjxMzNxQLvHzi66HI0dyovDNW C9RlSu6aPUwrEApIpigPVr6Z9LjRquRQ+Id66yMiXkosXRgp8tvwzofAwk9OCypMyd5a muPLrMKAa4ihKoUQ+cNs4a3+2oaBMcBv4WtH86LV1lRHqkmrrPdqRBGyCs7+5cl0kU2h 0icw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:references:cc:to:from:subject:dkim-signature :arc-authentication-results; bh=eFC16Z6qdSckNuwhsQdqXbRBHnjwAx/qmhqUGZ9TT5w=; b=yDaAwDuB7uhQ8Die188TS91byM5qc29JDK04JOB5U2jR7i1yQ/B45RIzWNQfkDdmmd +WPFHJIhSSYE/2/4dds/EjpG6wT9iRlD+CtEwHZcsmg8NCKPg/ZSMfI+MMqwQ/u0lNAF EIF/i24g5vyQlcuQRxvDEoVA1HcSGJXQljEALg/BBYWcQriOutGSinFPPq3nXAj8/wD1 Dn1ReFInxSSqUmptniI0DmGKdLsIe5X3OZax4TiDY/RWYlpDtLq06Ga44izKSherDmWb ItgtQRxCd4JIzPoZXckIxtC/j/rQ155T/Ydh76NL7GpBOA8N2MSX4K7usZuYzilcFfhh D5IQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel-dk.20150623.gappssmtp.com header.s=20150623 header.b="1/BTSND0"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t8-v6si20364647pgl.620.2018.08.14.09.28.23; Tue, 14 Aug 2018 09:28:38 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel-dk.20150623.gappssmtp.com header.s=20150623 header.b="1/BTSND0"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732867AbeHNTOq (ORCPT + 99 others); Tue, 14 Aug 2018 15:14:46 -0400 Received: from mail-ua1-f66.google.com ([209.85.222.66]:37535 "EHLO mail-ua1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730635AbeHNTOq (ORCPT ); Tue, 14 Aug 2018 15:14:46 -0400 Received: by mail-ua1-f66.google.com with SMTP id y10-v6so13807126uao.4 for ; Tue, 14 Aug 2018 09:26:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20150623.gappssmtp.com; s=20150623; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=eFC16Z6qdSckNuwhsQdqXbRBHnjwAx/qmhqUGZ9TT5w=; b=1/BTSND0+TTfk5RTSLbWVoOSx4MlVp23GuoMh7GpL59NBT/c1KM53DD7SQKxm9EdZE yAu3ZNvF6H4gEg8wNNggBrjFqNSLNaKGS7S9mnNH3X1G0r/LuMIXMEELTjQMubp3zShK Gtfk7X59vV6hYxpo3fYF7q0sFkXT0slat9bgyy/nf2UUAyWueJdELu4woCBsMcMzE+gq IksusyoWiZtXGXjYbooj08NSnG3E2QazsyHypkciliec6fDgwKT/t+rp8HJVexkcG6Ql Ryk3j87bTrMzfo7KNtO6apNfBWUkcYxDgQpI2Wk5QxCOFy928wrLryBd7iaPFGZ5gs7n WBRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=eFC16Z6qdSckNuwhsQdqXbRBHnjwAx/qmhqUGZ9TT5w=; b=kI32LHW1Bq6w0SxIs/TUJphrCCXpdXlbbMibTHY0xyTi54t5XQK6lHd9xnjgq4rPYw L8o/xC888tUDr3E7eP1uwTVNm4yCfbuDzMmge/RcfkVW3LQf492Ch0dpHdETA8Hm6X8T EDrxsBmCRNY31QC5B/PfOo7EbBReBKIVsLIdf52zTy/X+LTQy7ds6QhtxERZy19y/FA4 pUIvnwf2UyBaGC4eN28wfbT2sEHyezyGT9RpAwj8s7Lwfx6qi0lehz8kjaIchdF4/dga vYgn0TBEPrjDDeO1xWuQrIb5S6WnT/doPKsFRGv7QQrKOjBML5Uk0fVfkw20HChz1l3C 2c8A== X-Gm-Message-State: AOUpUlFI2E4Ah+E4RP9gzycSwL59b22yZdR8gew3Dd1FV86DzuAeBEXh RJWS9RtujZQoeRnK+Co7OQnRk6UAV4Y= X-Received: by 2002:a9f:3563:: with SMTP id o90-v6mr14804086uao.79.1534264014439; Tue, 14 Aug 2018 09:26:54 -0700 (PDT) Received: from [192.168.1.56] ([216.160.245.98]) by smtp.gmail.com with ESMTPSA id u22-v6sm6649981vkb.0.2018.08.14.09.26.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 09:26:53 -0700 (PDT) Subject: Re: Warning when using eMMC and partprobe: generic_make_request: Trying to write to read-only block-device From: Jens Axboe To: Linus Torvalds , Ilya Dryomov Cc: stefan@agner.ch, Sagi Grimberg , linux-arm-kernel , Linux Kernel Mailing List References: <7f57199f45df7212fdbba0bd1e78142a@agner.ch> <22fff85b-63e5-3cfe-0e72-255044e53bab@kernel.dk> Message-ID: Date: Tue, 14 Aug 2018 10:26:51 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0 MIME-Version: 1.0 In-Reply-To: <22fff85b-63e5-3cfe-0e72-255044e53bab@kernel.dk> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 8/14/18 10:24 AM, Jens Axboe wrote: > On 8/14/18 10:22 AM, Linus Torvalds wrote: >> On Tue, Aug 14, 2018 at 8:24 AM Ilya Dryomov wrote: >>> >>> Looks like it's coming from that fsync(): >>> >>> sys_fsync >>> do_fsync >>> vfs_fsync_range >>> blkdev_fsync >>> blkdev_issue_flush >>> >>> I think we need to teach blkdev_issue_flush() to bail out if the bdev >>> is read-only, similar to blkdev_issue_discard(), _write_zeroes(), etc. >>> The question is which error code to use. blkdev_fsync() already skips >>> over EOPNOTSUPP, so it is a (no-so-good) option. Other blkdev_issue_ >>> functions return EPERM. >> >> Oh, just make issue_flush() return EROFS for a read-only device. >> >> Or maybe we should even just consider the flush to be a read operation? >> >> But I guess the error code gets percolated all the way to user space? >> The safest option might just be to return 0. > > We probably just want to special case a flush for this check. In other > situations, like resource allocation and issue, we'd want to consider > it a write. Ala: diff --git a/block/blk-core.c b/block/blk-core.c index 12550340418d..29f8a60965bc 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -2162,7 +2163,9 @@ static inline bool should_fail_request(struct hd_struct *part, static inline bool bio_check_ro(struct bio *bio, struct hd_struct *part) { - if (part->policy && op_is_write(bio_op(bio))) { + const int op = bio_op(bio); + + if (part->policy && (op_is_write(op) && !op_is_flush(op))) { char b[BDEVNAME_SIZE]; WARN_ONCE(1, -- Jens Axboe