Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp2226982imm; Tue, 4 Sep 2018 00:00:25 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZCZ4OQjMSlct7xGOS9bycOzVweJ+/EcOfi3gQsw9zkGpGIfHib/D2aUSHfETIf7Ps87WWe X-Received: by 2002:a17:902:8bc4:: with SMTP id r4-v6mr31227338plo.124.1536044425867; Tue, 04 Sep 2018 00:00:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536044425; cv=none; d=google.com; s=arc-20160816; b=wkptA+XceUCHStot/4yqkO6Fw5TiYhatbOoxi/uIqpyeSs4CQAwLUzRtmqQqyBNqx/ c5K++ZCOlWH4TnQF14LvFktvNMsbcw7KwzFPSQf3u9P7ow6LNcWAulYUKtRhgMngJNmj KFAWfToBzIOgKq2Nc8hC2uLc3qayowFH32r2jT1pQmDebzR0zuhpPDujX0Lcv81jruyH Hsk2gKvGtfiCypSgB1Z/ITWZ8nGu7bv4EjogVe4qGRoIOiNAigR7I3VpiGy12pBgl9tW lpx6xdvg6OOY97IKkQmznV0zEZXb+a76LO8nG6fER+LJOdLpl627Ovc1P3XSmulG3t6K lZXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=ibpBLmf269Po2NqPJ4AeiLIVq7S5p3jPY2FkbCc4vJA=; b=RniEPfn+c6BDMbIfEgp5DTDeFNhN6AQ0oMT9wOKehpm/XMWMYu5kha4WTNi1fnWIvw cUjEg4IVt5oMF0NTiEOkawc8abfRmmhsrAjqJEC1TdFVqvrCo4cmHAeUxapQCsAWxtzY 4BsbCNoL7luXhxKvBdf48JCtEVjkCiKaiUpF1H6SEBiwi3/kkPn+uPNEsdv+ABai+4ou mculXY7EI7/TpPk2n8Mv9GVZ5X1yciJZN7BLyyfCRWAJkEI98Nu9v1PQ8mbAiBA0DITZ /F05tScKPhNl79RkQ9eF4UvbF3eJOs5thJF96SL+KqqDBlH+nEJD1xEm7P26HJOuPn6H z4rg== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w71-v6si19570477pgd.362.2018.09.04.00.00.10; Tue, 04 Sep 2018 00:00:25 -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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726288AbeIDLWt (ORCPT + 99 others); Tue, 4 Sep 2018 07:22:49 -0400 Received: from mx2.suse.de ([195.135.220.15]:37062 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726041AbeIDLWt (ORCPT ); Tue, 4 Sep 2018 07:22:49 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 636CBAEDA; Tue, 4 Sep 2018 06:59:02 +0000 (UTC) Date: Tue, 4 Sep 2018 08:59:01 +0200 From: Michal Hocko To: Douglas Gilbert Cc: Richard Weinberger , drorl@infinidat.com, LKML , linux-block@vger.kernel.org, linux-scsi@vger.kernel.org, Linus Torvalds , Christoph Hellwig , Jens Axboe Subject: Re: Recent removal of bsg read/write support Message-ID: <20180904065901.GF14951@dhcp22.suse.cz> References: <6b907fed-d83f-de75-bde4-11270a0b1b0b@interlog.com> <20180903122804.GA15074@dhcp22.suse.cz> <731941f0-c80d-605a-2750-01c8d5ec4dd9@interlog.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <731941f0-c80d-605a-2750-01c8d5ec4dd9@interlog.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue 04-09-18 05:38:21, Douglas Gilbert wrote: > On 2018-09-03 02:28 PM, Michal Hocko wrote: > > On Sun 02-09-18 21:16:10, Douglas Gilbert wrote: > > > On 2018-09-02 01:44 PM, Richard Weinberger wrote: > > > > CC'ing relevant people. Otherwise your mail might get lost. > > > > > > > > On Sun, Sep 2, 2018 at 1:37 PM Dror Levin wrote: > > > > > > > > > > Note: I am not subscribed to LKML so please CC replies to this email. > > > > > > > > > > Hi, > > > > > > > > > > We have an internal tool that uses the bsg read/write interface to > > > > > issue SCSI commands as part of a test suite for a storage device. > > > > > > > > > > After recently reading on LWN that this interface is to be removed we > > > > > tried porting our code to use sg instead. However, that raises new > > > > > issues - mainly getting ENOMEM over iSCSI for unknown reasons. > > > > > > > > > > Because of this we would like to continue using the bsg interface, > > > > > even if some changes are required to meet security concerns. > > > > > > > > > > Is there any chance for this removal to be reverted? I saw it was > > > > > already included in 4.19-rc1. > > > > > > Hi, > > > Both bsg and sg are relatively thin shims over the same block layer > > > pass-through calls. And neither driver will themselves generate ENOMEM > > > unless the CPU is running low of memory. > > > > > > In my experience, the main reason for unexpected ENOMEMs *** is from > > > blk_rq_map_user_iov() in block/blk_map.c called from both drivers. > > > That is a particular resource shortage rather than memory in general. > > > I do notice the blk_rq_map_user_iov() is/was called with GFP_KERNEL > > > in bsg and GFP_ATOMIC by sg. That suggests when you call write() on > > > a sg device and get ENOMEM, then wait a little (depends on your app) > > > and try again. > > > > Well, what is the reason to use GFP_ATOMIC in the first place? I am not > > familiar with the code so I might be easily wrong but sg_start_req which > > calls blk_rq_map_user_iov resp. blk_rq_map_user with GFP_ATOMIC uses > > mutex. It is a conditional usage so the sleeping context might depend > > on the caller. But I guess it would be better to double check. It looks > > suspicious to me. > > Of the hundreds of 'hacks' on the sg driver over the years, the most > common is an expert arguing that GFP_ATOMIC should be changed to GFP_KERNEL. > They usually get their way. That is followed around 6 to 9 months later by > a sg user complaining about an unexpected broken app. So back it goes to > GFP_ATOMIC. Then I would strongly recommend to describe the actual reTquirements on the allocation context. Why is GFP_ATOMIC really needed? There are usually two reasons a) the allocation is called from an atomic context b) reclaim is not acceptable or desirable. -- Michal Hocko SUSE Labs