[linux-lvm] Difficulty with RH 6.x and LVM

Michael Marxmeier mike at msede.com
Thu Apr 27 19:20:35 UTC 2000


Forwarded message from Eric M. Hopper <hopper at omnifarious.mn.org> ...

-------- Original Message --------
From: "Eric M. Hopper" <hopper at omnifarious.mn.org>
Subject: Difficulty with RH 6.x and LVM
Message-ID: <20000427112349.A21088 at omnifarious.mn.org>


	The lines in the patches assume that the kernel to be patched
calls md_make_request like this:

md_make_request(MINOR (bh[i]->b_dev), rw, bh[i]);

	The RedHat 6.x kernels seem to have a different md_make_request
that they call like this:

md_make_request(bh[i], rw);

	As you may notice, there is a large discrepancy here that is
rather worrisome, since the change to use rdev instead of dev can't be
made in any way.

	In drivers/block/md.c, RedHat's md_make_request looks like this:

int md_make_request (struct buffer_head * bh, int rw)
{
	int err;
	mddev_t *mddev = kdev_to_mddev(bh->b_dev);

	if (!mddev || !mddev->pers) {
		err = -ENXIO;
		goto out;
	}

	if (mddev->pers->make_request) {
		if (buffer_locked(bh)) {
			err = 0;
			goto out;
		}
		set_bit(BH_Lock, &bh->b_state);
		if (rw == WRITE || rw == WRITEA) {
			if (!buffer_dirty(bh)) {
				bh->b_end_io(bh, buffer_uptodate(bh));
				err = 0;
				goto out;
			}
		}
		if (rw == READ || rw == READA) {
			if (buffer_uptodate(bh)) {
				bh->b_end_io(bh, buffer_uptodate(bh));
				err = 0;
				goto out;
			}
		}
		err = mddev->pers->make_request(mddev, rw, bh);
	} else {
		make_request (MAJOR(bh->b_rdev), rw, bh);
		err = 0;
	}
out:
	return err;
}

	Any suggestions as to how I apply the patch?

Thanks,
--
Its name is Public Opinion.  It is held in reverence. It settles
everything.
Some think it is the voice of God.  Loyalty to petrified opinion never
yet
broke a chain or freed a human soul.     ---Mark Twain
-- Eric Hopper (hopper at omnifarious.mn.org 
http://omnifarious.mn.org/~hopper) --



More information about the linux-lvm mailing list