lkml.org 
[lkml]   [2002]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    SubjectRe: "bio too big" error
    Date
    On Thursday 12 December 2002 03:12, Joe Thornber wrote:
    > On Wed, Dec 11, 2002 at 04:15:42PM -0800, Wil Reichert wrote:
    > > Ok, 2.5.51 plus dm patches result in the following:
    > >
    > > Initializing LVM: device-mapper: device
    > > /dev/ide/host2/bus1/target0/lun0/disc too small for target
    > > device-mapper: internal error adding target to table
    > > device-mapper: destroying table
    > > device-mapper ioctl cmd 2 failed: Invalid argument
    > > Couldn't load device 'cheese_vg-blah'.
    > > 0 logical volume(s) in volume group "cheese_vg" now active
    > > lvm2.
    > >
    > > Was fine (minus of course the entire bio thing) in 50, did something
    > > break in 51 or is it just my box?
    >
    > I've had a couple of reports of this problem. The offending patch is:
    >
    > http://people.sistina.com/~thornber/patches/2.5-stable/2.5.51/2.5.51-dm-1/0
    >0005.patch
    >
    > back it out if necc.
    >
    > All it does is:
    >
    > --- diff/drivers/md/dm-table.c 2002-12-11 11:59:51.000000000 +0000
    > +++ source/drivers/md/dm-table.c 2002-12-11 12:00:00.000000000 +0000
    > @@ -388,7 +388,7 @@
    > static int check_device_area(struct dm_dev *dd, sector_t start, sector_t
    > len) {
    > sector_t dev_size;
    > - dev_size = dd->bdev->bd_inode->i_size;
    > + dev_size = dd->bdev->bd_inode->i_size >> SECTOR_SHIFT;
    > return ((start < dev_size) && (len <= (dev_size - start)));
    > }


    Actually, this 00005.patch *is* necessary. dd->bdev->bd_inode->i_size *is* in
    bytes, and does need to be shifted to do the above comparison.

    I believe we have tracked the problem down to the call to dm_get_device() in
    dm-linear.c. It is passing in an incorrect value, which winds up being the
    "start" parameter to the check_device_area() function. I've included a patch
    at the end of this email which I believe should fix the problem. I have also
    checked dm-stripe.c, and it appears to make the call to dm_get_device()
    correctly, so no worries there.

    --
    Kevin Corry
    corryk@us.ibm.com
    http://evms.sourceforge.net/



    --- linux-2.5.51a/drivers/md/dm-linear.c 2002/11/20 20:09:22 1.1
    +++ linux-2.5.51b/drivers/md/dm-linear.c 2002/12/12 21:38:32
    @@ -43,7 +43,7 @@
    goto bad;
    }

    - if (dm_get_device(ti, argv[0], ti->begin, ti->len,
    + if (dm_get_device(ti, argv[0], lc->start, ti->len,
    dm_table_get_mode(ti->table), &lc->dev)) {
    ti->error = "dm-linear: Device lookup failed";
    goto bad;
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 13:31    [W:0.063 / U:29.648 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site