public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@SteelEye.com>
To: viro@math.psu.edu
Cc: linux-kernel@vger.kernel.org, James.Bottomley@SteelEye.com
Subject: [PATCH] fix for initrd breakage in 2.5.13+
Date: Wed, 15 May 2002 12:53:31 -0400	[thread overview]
Message-ID: <200205151653.g4FGrV702962@localhost.localdomain> (raw)

[-- Attachment #1: Type: text/plain, Size: 809 bytes --]

Hi Al,

initrd was completely broken by your change set 1.447.69.4 ([PATCH] (4/6) 
blksize_size[] removal).  As part of this change, you completely divorced the 
ramdisk from the setup parameter rd_blocksize, so it now has the default 512 
byte block size and thus initrd fails to mount.

The fix corrects the ramdisk problem (by setting the queue hardsect size to 
rd_blocksize), but there also has to be a fix in do_open because of the way 
it's now working.  The attached change is clearly incorrect, since it will 
reset the ramdisk blocksize for every open, but it does allow initrd to work 
again.  I can't see how to fix it correctly---for no reason I can fathom, 
bd_openers seems to be set for a ramdisk even on the first call into do_open.  
Can you find a correct fix to do_open?

James Bottomley


[-- Attachment #2: viro_rd.diff --]
[-- Type: text/plain , Size: 1989 bytes --]

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#	           ChangeSet	1.513   -> 1.515  
#	      fs/block_dev.c	1.55    -> 1.56   
#	  drivers/block/rd.c	1.35    -> 1.36   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/05/15	jejb@mulgrave.(none)	1.514
# [RD FIX]
# 
# tie hardsect_size of the queue to rd_blocksize
# --------------------------------------------
# 02/05/15	jejb@mulgrave.(none)	1.515
# [RD FIX]
# 
# Make do_open respect the rd_hardsect limit (this fix is incorrect
# since it will reset the size on every call into do_open).  Need to
# find out why bd_openers is always set for rd.
# --------------------------------------------
#
diff -Nru a/drivers/block/rd.c b/drivers/block/rd.c
--- a/drivers/block/rd.c	Wed May 15 12:40:29 2002
+++ b/drivers/block/rd.c	Wed May 15 12:40:29 2002
@@ -424,6 +424,7 @@
 	}
 
 	blk_queue_make_request(BLK_DEFAULT_QUEUE(MAJOR_NR), &rd_make_request);
+	blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), rd_blocksize);
 
 	for (i = 0; i < NUM_RAMDISKS; i++) {
 		/* rd_size is given in kB */
diff -Nru a/fs/block_dev.c b/fs/block_dev.c
--- a/fs/block_dev.c	Wed May 15 12:40:29 2002
+++ b/fs/block_dev.c	Wed May 15 12:40:29 2002
@@ -606,7 +606,15 @@
 			goto out2;
 	}
 	bdev->bd_inode->i_size = blkdev_size(dev);
-	if (!bdev->bd_openers) {
+	if (major(dev) == RAMDISK_MAJOR) {
+		/* always set the bd_block_size to the hardsect size */
+		unsigned bsize = bdev_hardsect_size(bdev);
+
+		bdev->bd_block_size = bsize;
+		bdev->bd_inode->i_blkbits = blksize_bits(bsize);
+		printk("SETTING %d:%d to hardsect %d\n",
+		       major(dev), minor(dev), bsize);
+	} else if (!bdev->bd_openers) {
 		unsigned bsize = bdev_hardsect_size(bdev);
 		while (bsize < PAGE_CACHE_SIZE) {
 			if (bdev->bd_inode->i_size & bsize)

             reply	other threads:[~2002-05-15 16:53 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-15 16:53 James Bottomley [this message]
2002-05-15 18:54 ` [PATCH] fix for initrd breakage in 2.5.13+ Russell King
2002-05-15 19:35   ` James Bottomley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200205151653.g4FGrV702962@localhost.localdomain \
    --to=james.bottomley@steeleye.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=viro@math.psu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox