From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Tue, 23 Apr 2002 22:06:34 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Tue, 23 Apr 2002 22:06:33 -0400 Received: from gear.torque.net ([204.138.244.1]:23561 "EHLO gear.torque.net") by vger.kernel.org with ESMTP id ; Tue, 23 Apr 2002 22:06:29 -0400 Message-ID: <3CC610EB.C8A287C8@torque.net> Date: Tue, 23 Apr 2002 21:56:59 -0400 From: Douglas Gilbert X-Mailer: Mozilla 4.78 [en] (X11; U; Linux 2.5.9-dj1 i686) X-Accept-Language: en MIME-Version: 1.0 To: linux-scsi@vger.kernel.org CC: linux-kernel@vger.kernel.org, Dave Jones Subject: [PATCH] 2.5.9-dj1 sd_init() fails at boot Content-Type: multipart/mixed; boundary="------------ACB96F25280A914A8F8CD383" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------ACB96F25280A914A8F8CD383 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit With both lk 2.5.8-dj1 and lk 2.5.9-dj1 the scsi disk driver (sd) fails in sd_init() with OOM causing the scsi disk holding my root fs not to be found. The kmalloc(,GFP_ATOMIC) for the array of "struct hd_struct" returns NULL. Strange that my Athlon 1.2 GHz box with 512 MB of ram should get an OOM error at that point. Pete Zaitcev came across similar problems in the 2.4 series which he has addressed by changing the kmalloc() to vmalloc(). Rather than a minimal patch, the attachment uses vmalloc() and does a cleanup of the sd driver that was presented in an earlier post: http://marc.theaimsgroup.com/?l=linux-scsi&m=101798201714399&w=2 As noted in that post, the attachment also fixes an oops resulting from this sequence (when sd is a module): $ modprobe sd_mod; rmmod sd_mod; modprobe sd_mod Doug Gilbert --------------ACB96F25280A914A8F8CD383 Content-Type: application/x-gzip; name="sd203_259dj1.diff.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="sd203_259dj1.diff.gz" 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 xwcmTCA/BuZdY1YOW6ukX/8HsDCjcVfPAAA= --------------ACB96F25280A914A8F8CD383--