From: adilger Date: Sat, 21 May 2005 08:16:46 +0000 (+0000) Subject: Branch b1_4 X-Git-Tag: v1_7_100~1^25~8^2~103 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=3cf5db8b1c4c5dea25a9a997b1e867cb014ccd42;hp=35853864c69c4c737b505e48420bee9003efc043;p=fs%2Flustre-release.git Branch b1_4 Print out numeric device if no name can be found for 2.6. r=nathan --- diff --git a/lustre/kernel_patches/patches/dev_read_only-2.6-lnxi.patch b/lustre/kernel_patches/patches/dev_read_only-2.6-lnxi.patch index 52d168b..c6b38ab 100644 --- a/lustre/kernel_patches/patches/dev_read_only-2.6-lnxi.patch +++ b/lustre/kernel_patches/patches/dev_read_only-2.6-lnxi.patch @@ -15,11 +15,11 @@ diff -ur linux-2.6.5-lnxi.orig/drivers/block/ll_rw_blk.c linux-2.6.5-lnxi/driver /* this is cfs's dev_rdonly check */ if (bio->bi_rw == WRITE && - dev_check_rdonly(bio->bi_bdev->bd_dev)) { -+ dev_check_rdonly(bio->bi_bdev)) { ++ dev_check_rdonly(bio->bi_bdev)) { bio_endio(bio, bio->bi_size, 0); break; } -@@ -3086,53 +3086,85 @@ void swap_io_context(struct io_context * +@@ -3086,53 +3086,86 @@ void swap_io_context(struct io_context * *ioc2 = temp; } @@ -33,8 +33,8 @@ diff -ur linux-2.6.5-lnxi.orig/drivers/block/ll_rw_blk.c linux-2.6.5-lnxi/driver */ -void dev_set_rdonly(struct block_device *bdev, int no_write) +struct deventry { -+ dev_t dev; -+ struct deventry *next; ++ dev_t dev; ++ struct deventry *next; +}; + +static struct deventry *devlist = NULL; @@ -46,14 +46,14 @@ diff -ur linux-2.6.5-lnxi.orig/drivers/block/ll_rw_blk.c linux-2.6.5-lnxi/driver - printk(KERN_ALERT "%s:%d illegal arg %d (max %d)\n", - __FILE__, __LINE__, no_write, MAX_RDONLY_DEVS); - return; -+ struct deventry *cur; -+ if (!bdev) return 0; -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (bdev->bd_dev == cur->dev) { -+ spin_unlock(&devlock); -+ return 1; ++ struct deventry *cur; ++ if (!bdev) return 0; ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (bdev->bd_dev == cur->dev) { ++ spin_unlock(&devlock); ++ return 1; } - - if (bdev) { @@ -61,10 +61,10 @@ diff -ur linux-2.6.5-lnxi.orig/drivers/block/ll_rw_blk.c linux-2.6.5-lnxi/driver - bdev->bd_disk ? bdev->bd_disk->disk_name : "?", - no_write); - rdonly_devs[no_write] = bdev->bd_dev; -+ cur = cur->next; ++ cur = cur->next; } -+ spin_unlock(&devlock); -+ return 0; ++ spin_unlock(&devlock); ++ return 0; } -void dev_clear_rdonly(int no_write) @@ -75,13 +75,13 @@ diff -ur linux-2.6.5-lnxi.orig/drivers/block/ll_rw_blk.c linux-2.6.5-lnxi/driver - __FILE__, __LINE__, no_write, MAX_RDONLY_DEVS); - return; - } -+ struct deventry *newdev, *cur; ++ struct deventry *newdev, *cur; - if (rdonly_devs[no_write] == 0) -+ if (!bdev) -+ return; -+ newdev = kmalloc(sizeof(struct deventry), GFP_KERNEL); -+ if (!newdev) ++ if (!bdev) ++ return; ++ newdev = kmalloc(sizeof(struct deventry), GFP_KERNEL); ++ if (!newdev) return; - printk(KERN_WARNING "Clearing read-only at %d\n", no_write); @@ -96,46 +96,47 @@ diff -ur linux-2.6.5-lnxi.orig/drivers/block/ll_rw_blk.c linux-2.6.5-lnxi/driver - if (rdonly_devs[i] == dev) - return 1; - return 0; -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (bdev->bd_dev == cur->dev) { -+ spin_unlock(&devlock); -+ kfree(newdev); -+ return; -+} -+ cur = cur->next; -+ } -+ newdev->dev = bdev->bd_dev; -+ newdev->next = devlist; -+ devlist = newdev; -+ spin_unlock(&devlock); -+ printk(KERN_WARNING "Turning device %s read-only\n", -+ bdev->bd_disk ? bdev->bd_disk->disk_name : "?"); ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (bdev->bd_dev == cur->dev) { ++ spin_unlock(&devlock); ++ kfree(newdev); ++ return; ++ } ++ cur = cur->next; ++ } ++ newdev->dev = bdev->bd_dev; ++ newdev->next = devlist; ++ devlist = newdev; ++ spin_unlock(&devlock); ++ printk(KERN_WARNING "Turning device %s (%#x) read-only\n", ++ bdev->bd_disk ? bdev->bd_disk->disk_name : "", bdev->bd_dev); +} + +void dev_clear_rdonly(struct block_device *bdev) +{ -+ struct deventry *cur, *last = NULL; -+ if (!bdev) return; -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (bdev->bd_dev == cur->dev) { -+ if (last) -+ last->next = cur->next; -+ else -+ devlist = cur->next; -+ spin_unlock(&devlock); -+ kfree(cur); -+ printk(KERN_WARNING "Removing read-only on %s\n", -+ bdev->bd_disk ? bdev->bd_disk->disk_name : "?"); ++ struct deventry *cur, *last = NULL; ++ if (!bdev) return; ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (bdev->bd_dev == cur->dev) { ++ if (last) ++ last->next = cur->next; ++ else ++ devlist = cur->next; ++ spin_unlock(&devlock); ++ kfree(cur); ++ printk(KERN_WARNING "Removing read-only on %s (%#x)\n", ++ bdev->bd_disk ? bdev->bd_disk->disk_name : ++ "unknown block", bdev->bd_dev); + return; -+ } -+ last = cur; -+ cur = cur->next; -+ } -+ spin_unlock(&devlock); ++ } ++ last = cur; ++ cur = cur->next; ++ } ++ spin_unlock(&devlock); } EXPORT_SYMBOL(dev_set_rdonly); diff --git a/lustre/kernel_patches/patches/dev_read_only-2.6-suse.patch b/lustre/kernel_patches/patches/dev_read_only-2.6-suse.patch index ce244ae..d5a5ac4 100644 --- a/lustre/kernel_patches/patches/dev_read_only-2.6-suse.patch +++ b/lustre/kernel_patches/patches/dev_read_only-2.6-suse.patch @@ -16,7 +16,7 @@ diff -ur linux-2.6.5-lnxi.orig/drivers/block/ll_rw_blk.c linux-2.6.5-lnxi/driver + /* this is cfs's dev_rdonly check */ + if (bio->bi_rw == WRITE && -+ dev_check_rdonly(bio->bi_bdev)) { ++ dev_check_rdonly(bio->bi_bdev)) { + bio_endio(bio, bio->bi_size, 0); + break; + } @@ -24,7 +24,7 @@ diff -ur linux-2.6.5-lnxi.orig/drivers/block/ll_rw_blk.c linux-2.6.5-lnxi/driver /* * If this device has partitions, remap block n * of partition p to block n+start(p) of the disk. -@@ -3078,6 +3087,91 @@ void swap_io_context(struct io_context * +@@ -3078,6 +3087,92 @@ void swap_io_context(struct io_context * } /* @@ -32,8 +32,8 @@ diff -ur linux-2.6.5-lnxi.orig/drivers/block/ll_rw_blk.c linux-2.6.5-lnxi/driver + * silently). This is for filesystem crash/recovery testing. + */ +struct deventry { -+ dev_t dev; -+ struct deventry *next; ++ dev_t dev; ++ struct deventry *next; +}; + +static struct deventry *devlist = NULL; @@ -41,71 +41,72 @@ diff -ur linux-2.6.5-lnxi.orig/drivers/block/ll_rw_blk.c linux-2.6.5-lnxi/driver + +int dev_check_rdonly(struct block_device *bdev) +{ -+ struct deventry *cur; -+ if (!bdev) return 0; -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (bdev->bd_dev == cur->dev) { -+ spin_unlock(&devlock); -+ return 1; ++ struct deventry *cur; ++ if (!bdev) return 0; ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (bdev->bd_dev == cur->dev) { ++ spin_unlock(&devlock); ++ return 1; + } -+ cur = cur->next; ++ cur = cur->next; + } -+ spin_unlock(&devlock); -+ return 0; ++ spin_unlock(&devlock); ++ return 0; +} + +void dev_set_rdonly(struct block_device *bdev) +{ -+ struct deventry *newdev, *cur; ++ struct deventry *newdev, *cur; + -+ if (!bdev) -+ return; -+ newdev = kmalloc(sizeof(struct deventry), GFP_KERNEL); -+ if (!newdev) ++ if (!bdev) ++ return; ++ newdev = kmalloc(sizeof(struct deventry), GFP_KERNEL); ++ if (!newdev) + return; + -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (bdev->bd_dev == cur->dev) { -+ spin_unlock(&devlock); -+ kfree(newdev); -+ return; -+} -+ cur = cur->next; -+ } -+ newdev->dev = bdev->bd_dev; -+ newdev->next = devlist; -+ devlist = newdev; -+ spin_unlock(&devlock); -+ printk(KERN_WARNING "Turning device %s read-only\n", -+ bdev->bd_disk ? bdev->bd_disk->disk_name : "?"); ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (bdev->bd_dev == cur->dev) { ++ spin_unlock(&devlock); ++ kfree(newdev); ++ return; ++ } ++ cur = cur->next; ++ } ++ newdev->dev = bdev->bd_dev; ++ newdev->next = devlist; ++ devlist = newdev; ++ spin_unlock(&devlock); ++ printk(KERN_WARNING "Turning device %s (%#x) read-only\n", ++ bdev->bd_disk ? bdev->bd_disk->disk_name : "", bdev->bd_dev); +} + +void dev_clear_rdonly(struct block_device *bdev) +{ -+ struct deventry *cur, *last = NULL; -+ if (!bdev) return; -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (bdev->bd_dev == cur->dev) { -+ if (last) -+ last->next = cur->next; -+ else -+ devlist = cur->next; -+ spin_unlock(&devlock); -+ kfree(cur); -+ printk(KERN_WARNING "Removing read-only on %s\n", -+ bdev->bd_disk ? bdev->bd_disk->disk_name : "?"); ++ struct deventry *cur, *last = NULL; ++ if (!bdev) return; ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (bdev->bd_dev == cur->dev) { ++ if (last) ++ last->next = cur->next; ++ else ++ devlist = cur->next; ++ spin_unlock(&devlock); ++ kfree(cur); ++ printk(KERN_WARNING "Removing read-only on %s (%#x)\n", ++ bdev->bd_disk ? bdev->bd_disk->disk_name : ++ "unknown block", bdev->bd_dev); + return; -+ } -+ last = cur; -+ cur = cur->next; -+ } -+ spin_unlock(&devlock); ++ } ++ last = cur; ++ cur = cur->next; ++ } ++ spin_unlock(&devlock); +} + +EXPORT_SYMBOL(dev_set_rdonly); diff --git a/lustre/kernel_patches/patches/dev_read_only_2.4.20-rh.patch b/lustre/kernel_patches/patches/dev_read_only_2.4.20-rh.patch index 44f0ade..c7650fd 100644 --- a/lustre/kernel_patches/patches/dev_read_only_2.4.20-rh.patch +++ b/lustre/kernel_patches/patches/dev_read_only_2.4.20-rh.patch @@ -1,90 +1,88 @@ diff -ur linux-2.4.20-rh.orig/drivers/block/ll_rw_blk.c linux-2.4.20-rh/drivers/block/ll_rw_blk.c --- linux-2.4.20-rh.orig/drivers/block/ll_rw_blk.c 2004-05-27 11:25:09.000000000 -0700 +++ linux-2.4.20-rh/drivers/block/ll_rw_blk.c 2005-04-08 09:02:14.734804881 -0700 -@@ -645,6 +645,86 @@ void set_device_ro(kdev_t dev,int flag) +@@ -645,6 +645,84 @@ void set_device_ro(kdev_t dev,int flag) else ro_bits[major][minor >> 5] &= ~(1 << (minor & 31)); } -+ +/* -+ * Debug code for turning block devices read-only *silently* (will ++ * Debug code for turning block devices read-only *silently* (will + * discard writes silently). This is only for filesystem crash/recovery + * testing. + */ +struct deventry { -+ kdev_t dev; -+ struct deventry *next; ++ kdev_t dev; ++ struct deventry *next; +}; + +static struct deventry *devlist = NULL; -+static spinlock_t devlock = SPIN_LOCK_UNLOCKED; ++static spinlock_t devlock = SPIN_LOCK_UNLOCKED; + +int dev_check_rdonly(kdev_t dev) { -+ struct deventry *cur; -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (dev == cur->dev) { -+ spin_unlock(&devlock); -+ return 1; -+ } -+ cur = cur->next; -+ } -+ spin_unlock(&devlock); -+ return 0; ++ struct deventry *cur; ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (dev == cur->dev) { ++ spin_unlock(&devlock); ++ return 1; ++ } ++ cur = cur->next; ++ } ++ spin_unlock(&devlock); ++ return 0; +} + +void dev_set_rdonly(kdev_t dev) +{ -+ struct deventry *newdev, *cur; -+ newdev = kmalloc(sizeof(struct deventry), GFP_KERNEL); -+ if (!newdev) return; ++ struct deventry *newdev, *cur; ++ newdev = kmalloc(sizeof(struct deventry), GFP_KERNEL); ++ if (!newdev) return; + -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (dev == cur->dev) { -+ spin_unlock(&devlock); -+ kfree(newdev); -+ return; -+ } -+ cur = cur->next; -+ } -+ newdev->dev = dev; -+ newdev->next = devlist; -+ devlist = newdev; -+ spin_unlock(&devlock); -+ printk(KERN_WARNING "Turning device %s read-only\n", -+ bdevname(dev)); ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (dev == cur->dev) { ++ spin_unlock(&devlock); ++ kfree(newdev); ++ return; ++ } ++ cur = cur->next; ++ } ++ newdev->dev = dev; ++ newdev->next = devlist; ++ devlist = newdev; ++ spin_unlock(&devlock); ++ printk(KERN_WARNING "Turning device %s read-only\n", bdevname(dev)); +} + +void dev_clear_rdonly(kdev_t dev) { -+ struct deventry *cur, *last = NULL; -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (dev == cur->dev) { -+ if (last) -+ last->next = cur->next; -+ else -+ devlist = cur->next; -+ spin_unlock(&devlock); -+ kfree(cur); -+ printk(KERN_WARNING "Removing read-only on %s\n", -+ bdevname(dev)); -+ return; -+ } -+ last = cur; -+ cur = cur->next; -+ } -+ spin_unlock(&devlock); ++ struct deventry *cur, *last = NULL; ++ ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (dev == cur->dev) { ++ if (last) ++ last->next = cur->next; ++ else ++ devlist = cur->next; ++ spin_unlock(&devlock); ++ kfree(cur); ++ printk(KERN_WARNING "Removing read-only on %s\n", ++ bdevname(dev)); ++ return; ++ } ++ last = cur; ++ cur = cur->next; ++ } ++ spin_unlock(&devlock); +} + +EXPORT_SYMBOL(dev_set_rdonly); +EXPORT_SYMBOL(dev_check_rdonly); +EXPORT_SYMBOL(dev_clear_rdonly); + -+ inline void drive_stat_acct (kdev_t dev, int rw, unsigned long nr_sectors, int new_io) { @@ -92,10 +90,10 @@ diff -ur linux-2.4.20-rh.orig/drivers/block/ll_rw_blk.c linux-2.4.20-rh/drivers/ buffer_IO_error(bh); break; } -+ if ((rw & WRITE)&&(dev_check_rdonly(bh->b_rdev))) { -+ bh->b_end_io(bh, 0); -+ break; -+ } ++ if ((rw & WRITE)&&(dev_check_rdonly(bh->b_rdev))) { ++ bh->b_end_io(bh, 0); ++ break; ++ } } while (q->make_request_fn(q, rw, bh)); } diff --git a/lustre/kernel_patches/patches/dev_read_only_2.4.21-chaos.patch b/lustre/kernel_patches/patches/dev_read_only_2.4.21-chaos.patch index e37a15d..3902db5 100644 --- a/lustre/kernel_patches/patches/dev_read_only_2.4.21-chaos.patch +++ b/lustre/kernel_patches/patches/dev_read_only_2.4.21-chaos.patch @@ -1,6 +1,6 @@ --- linux-2.4.24.orig/drivers/block/ll_rw_blk.c 2005-04-07 17:30:58.978035892 -0700 +++ linux-2.4.24/drivers/block/ll_rw_blk.c 2005-04-07 17:22:04.354867801 -0700 -@@ -691,6 +691,86 @@ void set_device_ro(kdev_t dev,int flag) +@@ -691,6 +691,85 @@ void set_device_ro(kdev_t dev,int flag) else ro_bits[major][minor >> 5] &= ~(1 << (minor & 31)); } @@ -11,72 +11,71 @@ + * testing. + */ +struct deventry { -+ kdev_t dev; -+ struct deventry *next; ++ kdev_t dev; ++ struct deventry *next; +}; + +static struct deventry *devlist = NULL; +static spinlock_t devlock = SPIN_LOCK_UNLOCKED; + +int dev_check_rdonly(kdev_t dev) { -+ struct deventry *cur; -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (dev == cur->dev) { -+ spin_unlock(&devlock); -+ return 1; -+ } -+ cur = cur->next; -+ } -+ spin_unlock(&devlock); -+ return 0; ++ struct deventry *cur; ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (dev == cur->dev) { ++ spin_unlock(&devlock); ++ return 1; ++ } ++ cur = cur->next; ++ } ++ spin_unlock(&devlock); ++ return 0; +} + +void dev_set_rdonly(kdev_t dev) +{ -+ struct deventry *newdev, *cur; -+ newdev = kmalloc(sizeof(struct deventry), GFP_KERNEL); -+ if (!newdev) return; ++ struct deventry *newdev, *cur; ++ newdev = kmalloc(sizeof(struct deventry), GFP_KERNEL); ++ if (!newdev) return; + -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (dev == cur->dev) { -+ spin_unlock(&devlock); -+ kfree(newdev); -+ return; -+ } -+ cur = cur->next; -+ } -+ newdev->dev = dev; -+ newdev->next = devlist; -+ devlist = newdev; -+ spin_unlock(&devlock); -+ printk(KERN_WARNING "Turning device %s read-only\n", -+ bdevname(dev)); ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (dev == cur->dev) { ++ spin_unlock(&devlock); ++ kfree(newdev); ++ return; ++ } ++ cur = cur->next; ++ } ++ newdev->dev = dev; ++ newdev->next = devlist; ++ devlist = newdev; ++ spin_unlock(&devlock); ++ printk(KERN_WARNING "Turning device %s read-only\n", bdevname(dev)); +} + +void dev_clear_rdonly(kdev_t dev) { -+ struct deventry *cur, *last = NULL; -+ spin_lock(&devlock); -+ cur = devlist; -+ while(cur) { -+ if (dev == cur->dev) { -+ if (last) -+ last->next = cur->next; -+ else -+ devlist = cur->next; -+ spin_unlock(&devlock); -+ kfree(cur); -+ printk(KERN_WARNING "Removing read-only on %s\n", -+ bdevname(dev)); -+ return; -+ } -+ last = cur; -+ cur = cur->next; -+ } -+ spin_unlock(&devlock); ++ struct deventry *cur, *last = NULL; ++ spin_lock(&devlock); ++ cur = devlist; ++ while(cur) { ++ if (dev == cur->dev) { ++ if (last) ++ last->next = cur->next; ++ else ++ devlist = cur->next; ++ spin_unlock(&devlock); ++ kfree(cur); ++ printk(KERN_WARNING "Removing read-only on %s\n", ++ bdevname(dev)); ++ return; ++ } ++ last = cur; ++ cur = cur->next; ++ } ++ spin_unlock(&devlock); +} + +EXPORT_SYMBOL(dev_set_rdonly); @@ -91,10 +90,10 @@ break; } -+ if ((rw & WRITE)&&(dev_check_rdonly(bh->b_rdev))) { -+ bh->b_end_io(bh, 0); -+ break; -+ } ++ if ((rw & WRITE)&&(dev_check_rdonly(bh->b_rdev))) { ++ bh->b_end_io(bh, 0); ++ break; ++ } } while (q->make_request_fn(q, rw, bh)); } @@ -117,7 +116,7 @@ bdev->bd_op = NULL; unlock_kernel(); up(&bdev->bd_sem); -+ dev_clear_rdonly(to_kdev_t(bdev->bd_dev)); ++ dev_clear_rdonly(to_kdev_t(bdev->bd_dev)); bdput(bdev); return ret; }