mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* Patch/resubmit(2.5.49): Use struct io_restrictions in blkdev.h
@ 2002-11-27 19:49 Adam J. Richter
  2002-11-27 20:03 ` Christoph Hellwig
  0 siblings, 1 reply; 5+ messages in thread
From: Adam J. Richter @ 2002-11-27 19:49 UTC (permalink / raw)
  To: axboe; +Cc: linux-kernel

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

On November 3, I wrote:
>Jens Axboe wrote:
>>On Sat, Nov 02 2002, Adam J. Richter wrote:
>>>      This patch makes good on a threat that I posted yesterday
>>> to move struct io_restrictions from <linux/device-mapper.h> to
>>> <linux/blkdev.h>, eliminating duplication of a list of fields in
>>> struct request_queue.
>
>>Adam, I generally think the patch is a good idea. I also think it's a
>>very stupid time to start messing with stuff that is basically trivial
>>but still touches lost of stuff.
>
>        It's pretty much simple string substitution and it doesn't
>touch that many files, but OK.
>
>>Please leave it alone for a few weeks.
>
>>>      Jens, can I persuade you to integrate this change?
>
>>In due time, yes.
>
>        Great.  The only thing I was going to do that might depend
>on this patch is try to port /dev/loop to device mapper, and I may
>be able to eliminate the affected code anyhow.
>
>        I've checked in the change and will continue running it in the
>meantime.  Unless I hear otherwise or run into a problem with this
>patch, I'll plan to resubmit it around November 24.

	Here is an updated version of the patch.  The struct
io_restrictions declaration is in <linux/device-mapper.h> so that the
device-mapper user level utilities compile properly (device-mapper.h
is written to support inclusion by user level programs).  I have hand
edited this patch to exclude unrelated changes in my tree, so some of
the line numbers will be off.  I actually "faked" the changes for
drivers/block/{ll_rw_blk,loop}.c because there was too much
intermingling with my other changes, but I've verified that these
"fake" files compile without warnings related to my changes.  I have
also verified that device-mapper-0.96.07 builds with these changes
present.

	I expect this patch will enable other clean-ups in the future.
For example, I think most block device drivers, including scsi
controller drivers, will be able to just declare a static struct
io_restrictions that can be copied into the corresponding q->limits
record for each detected device.  Eventually, this change may also
help in applying you gather-scatter merging code to other users of DMA
gather/scatter.

	Anyhow, I've done what you asked by waiting a few weeks.  If
this patch looks OK to you, could you please integrate it into your
queue for Linus?  Thanks in advance.
	
-- 
Adam J. Richter     __     ______________   575 Oroville Road
adam@yggdrasil.com     \ /                  Milpitas, California 95035
+1 408 309-6081         | g g d r a s i l   United States of America
                         "Free Software For The Rest Of Us."

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

--- linux-2.5.49/include/linux/blkdev.h	2002-11-22 13:40:23.000000000 -0800
+++ linux/include/linux/blkdev.h	2002-11-23 06:41:35.000000000 -0800
@@ -7,6 +7,7 @@
 #include <linux/pagemap.h>
 #include <linux/backing-dev.h>
 #include <linux/wait.h>
+#include <linux/device-mapper.h>
 
 #include <asm/scatterlist.h>
 
@@ -217,14 +218,9 @@
 	/*
 	 * queue settings
 	 */
-	unsigned short		max_sectors;
-	unsigned short		max_phys_segments;
-	unsigned short		max_hw_segments;
-	unsigned short		hardsect_size;
-	unsigned int		max_segment_size;
+	struct io_restrictions	limits;
 
-	unsigned long		seg_boundary_mask;
 	unsigned int		dma_alignment;
 
 	wait_queue_head_t	queue_wait;
@@ -385,10 +385,10 @@
 {
 	int retval = 512;
 
-	if (q && q->hardsect_size)
-		retval = q->hardsect_size;
+	if (q && q->limits.hardsect_size)
+		retval = q->limits.hardsect_size;
 
 	return retval;
 }
--- linux-2.5.49/include/linux/bio.h	2002-11-22 13:40:55.000000000 -0800
+++ linux/include/linux/bio.h	2002-11-02 18:03:18.000000000 -0800
@@ -165,11 +166,11 @@
 	((((bvec_to_phys((vec1)) + (vec1)->bv_len) | bvec_to_phys((vec2))) & (BIO_VMERGE_BOUNDARY - 1)) == 0)
 #define __BIO_SEG_BOUNDARY(addr1, addr2, mask) \
 	(((addr1) | (mask)) == (((addr2) - 1) | (mask)))
-#define BIOVEC_SEG_BOUNDARY(q, b1, b2) \
-	__BIO_SEG_BOUNDARY(bvec_to_phys((b1)), bvec_to_phys((b2)) + (b2)->bv_len, (q)->seg_boundary_mask)
-#define BIO_SEG_BOUNDARY(q, b1, b2) \
-	BIOVEC_SEG_BOUNDARY((q), __BVEC_END((b1)), __BVEC_START((b2)))
+#define BIOVEC_SEG_BOUNDARY(limits, b1, b2) \
+	__BIO_SEG_BOUNDARY(bvec_to_phys((b1)), bvec_to_phys((b2)) + (b2)->bv_len, (limits)->seg_boundary_mask)
+#define BIO_SEG_BOUNDARY(limits, b1, b2) \
+	BIOVEC_SEG_BOUNDARY((limits), __BVEC_END((b1)), __BVEC_START((b2)))
 
 #define bio_io_error(bio, bytes) bio_endio((bio), (bytes), -EIO)
 
--- linux-2.5.49/drivers/block/ioctl.c	2002-11-22 13:40:15.000000000 -0800
+++ linux/drivers/block/ioctl.c	2002-11-02 18:03:18.000000000 -0800
@@ -147,8 +147,8 @@
 	case BLKSSZGET: /* get block device hardware sector size */
 		return put_int(arg, bdev_hardsect_size(bdev));
 	case BLKSECTGET:
-		return put_ushort(arg, bdev_get_queue(bdev)->max_sectors);
+		return put_ushort(arg, bdev_get_queue(bdev)->limits.max_sectors);
 	case BLKRASET:
 	case BLKFRASET:
 		if(!capable(CAP_SYS_ADMIN))
--- linux-2.5.49/drivers/md/dm-table.c	2002-11-22 13:41:12.000000000 -0800
+++ linux/drivers/md/dm-table.c	2002-11-27 11:20:47.000000000 -0800
@@ -465,16 +465,17 @@
 	int r = __table_get_device(ti->table, ti, path,
 				   start, len, mode, result);
 	if (!r) {
-		request_queue_t *q = bdev_get_queue((*result)->bdev);
+		struct io_restrictions *qlim =
+			&bdev_get_queue((*result)->bdev)->limits;
 		struct io_restrictions *rs = &ti->limits;
 
 		/* combine the device limits low */
-		__LOW(&rs->max_sectors, q->max_sectors);
-		__LOW(&rs->max_phys_segments, q->max_phys_segments);
-		__LOW(&rs->max_hw_segments, q->max_hw_segments);
-		__HIGH(&rs->hardsect_size, q->hardsect_size);
-		__LOW(&rs->max_segment_size, q->max_segment_size);
-		__LOW(&rs->seg_boundary_mask, q->seg_boundary_mask);
+		__LOW(&rs->max_sectors, qlim->max_sectors);
+		__LOW(&rs->max_phys_segments, qlim->max_phys_segments);
+		__LOW(&rs->max_hw_segments, qlim->max_hw_segments);
+		__HIGH(&rs->hardsect_size, qlim->hardsect_size);
+		__LOW(&rs->max_segment_size, qlim->max_segment_size);
+		__LOW(&rs->seg_boundary_mask, qlim->seg_boundary_mask);
 	}
 
 	return r;
@@ -703,13 +704,8 @@
 	 * Make sure we obey the optimistic sub devices
 	 * restrictions.
 	 */
-	q->max_sectors = t->limits.max_sectors;
-	q->max_phys_segments = t->limits.max_phys_segments;
-	q->max_hw_segments = t->limits.max_hw_segments;
-	q->hardsect_size = t->limits.hardsect_size;
-	q->max_segment_size = t->limits.max_segment_size;
-	q->seg_boundary_mask = t->limits.seg_boundary_mask;
+	q->limits = t->limits;
 }
 
 unsigned int dm_table_get_num_targets(struct dm_table *t)
--- linux-2.5.49/fs/bio.c	2002-11-22 13:40:48.000000000 -0800
+++ linux/fs/bio.c	2002-11-02 18:03:18.000000000 -0800
@@ -352,14 +359,14 @@
  */
 int bio_get_nr_vecs(struct block_device *bdev)
 {
-	request_queue_t *q = bdev_get_queue(bdev);
+	struct io_restrictions *limit	= &bdev_get_queue(bdev)->limits;
 	int nr_pages;
 
-	nr_pages = ((q->max_sectors << 9) + PAGE_SIZE - 1) >> PAGE_SHIFT;
-	if (nr_pages > q->max_phys_segments)
-		nr_pages = q->max_phys_segments;
-	if (nr_pages > q->max_hw_segments)
-		nr_pages = q->max_hw_segments;
+	nr_pages = ((limit->max_sectors << 9) + PAGE_SIZE - 1) >> PAGE_SHIFT;
+	if (nr_pages > limit->max_phys_segments)
+		nr_pages = limit->max_phys_segments;
+	if (nr_pages > limit->max_hw_segments)
+		nr_pages = limit->max_hw_segments;
 
 	return nr_pages;
 }
@@ -391,7 +398,7 @@
 	if (bio->bi_vcnt >= bio->bi_max_vecs)
 		return 0;
 
-	if (((bio->bi_size + len) >> 9) > q->max_sectors)
+	if (((bio->bi_size + len) >> 9) > q->limits.max_sectors)
 		return 0;
 
 	/*
@@ -399,8 +406,8 @@
 	 * make this too complex.
 	 */
 retry_segments:
-	if (bio_phys_segments(q, bio) >= q->max_phys_segments
-	    || bio_hw_segments(q, bio) >= q->max_hw_segments)
+	if (bio_phys_segments(q, bio) >= q->limits.max_phys_segments
+	    || bio_hw_segments(q, bio) >= q->limits.max_hw_segments)
 		fail_segments = 1;
 
 	if (fail_segments) {
@@ -446,4 +453,4 @@
 	return len;
 }
 
--- linux-2.5.49/drivers/block/cciss.c	2002-11-22 13:41:10.000000000 -0800
+++ linux/drivers/block/cciss.c	2002-11-17 22:34:54.000000000 -0800
@@ -764,7 +764,7 @@
 		drive_info_struct *drv = &(hba[ctlr]->drv[i]);
 		if (!drv->nr_blocks)
 			continue;
-		hba[ctlr]->queue.hardsect_size = drv->block_size;
+		blk_queue_hardsect_size(&hba[ctlr]->queue, drv->block_size);
 		set_capacity(disk, drv->nr_blocks);
 		add_disk(disk);
 	}
@@ -2442,9 +2442,9 @@
 		disk->private_data = drv;
 		if( !(drv->nr_blocks))
 			continue;
-		hba[i]->queue.hardsect_size = drv->block_size;
+		blk_queue_hardsect_size(&hba[i]->queue, drv->block_size);
 		set_capacity(disk, drv->nr_blocks);
 		add_disk(disk);
 	}
--- linux-2.5.49/drivers/block/cpqarray.c	2002-11-22 13:40:21.000000000 -0800
+++ linux/drivers/block/cpqarray.c	2002-11-17 22:34:44.000000000 -0800
@@ -410,7 +418,7 @@
 			disk->fops = &ida_fops; 
 			if (!drv->nr_blks)
 				continue;
-			hba[i]->queue.hardsect_size = drv->blk_size;
+			blk_queue_hardsect_size(&hba[i]->queue, drv->blk_size);
 			set_capacity(disk, drv->nr_blks);
 			disk->queue = &hba[i]->queue;
 			disk->private_data = drv;
@@ -1439,7 +1447,7 @@
 		drv_info_t *drv = &hba[ctlr]->drv[i];
 		if (!drv->nr_blks)
 			continue;
-		hba[ctlr]->queue.hardsect_size = drv->blk_size;
+		blk_queue_hardsect_size(&hba[ctlr]->queue, drv->blk_size);
 		set_capacity(disk, drv->nr_blks);
 		disk->queue = &hba[ctlr]->queue;
 		disk->private_data = drv;
--- linux-2.5.49/drivers/block/ll_rw_blk.c	2002-11-22 13:40:19.000000000 -0800
+++ linux/drivers/block/ll_rw_blk.c	2002-11-27 11:16:27.000000000 -0800
@@ -228,8 +228,8 @@
 	/*
 	 * set defaults
 	 */
-	q->max_phys_segments = MAX_PHYS_SEGMENTS;
-	q->max_hw_segments = MAX_HW_SEGMENTS;
+	q->limits.max_phys_segments = MAX_PHYS_SEGMENTS;
+	q->limits.max_hw_segments = MAX_HW_SEGMENTS;
 	q->make_request_fn = mfn;
 	q->backing_dev_info.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
 	q->backing_dev_info.state = 0;
@@ -308,7 +308,7 @@
 		printk("%s: set to minimum %d\n", __FUNCTION__, max_sectors);
 	}
 
-	q->max_sectors = max_sectors;
+	q->limits.max_sectors = max_sectors;
 }
 
 /**
@@ -328,7 +328,7 @@
 		printk("%s: set to minimum %d\n", __FUNCTION__, max_segments);
 	}
 
-	q->max_phys_segments = max_segments;
+	q->limits.max_phys_segments = max_segments;
 }
 
 /**
@@ -349,7 +349,7 @@
 		printk("%s: set to minimum %d\n", __FUNCTION__, max_segments);
 	}
 
-	q->max_hw_segments = max_segments;
+	q->limits.max_hw_segments = max_segments;
 }
 
 /**
@@ -368,7 +368,7 @@
 		printk("%s: set to minimum %d\n", __FUNCTION__, max_size);
 	}
 
-	q->max_segment_size = max_size;
+	q->limits.max_segment_size = max_size;
 }
 
 /**
@@ -384,7 +384,7 @@
  **/
 void blk_queue_hardsect_size(request_queue_t *q, unsigned short size)
 {
-	q->hardsect_size = size;
+	q->limits.hardsect_size = size;
 }
 
 /**
@@ -399,7 +399,7 @@
 		printk("%s: set to minimum %lx\n", __FUNCTION__, mask);
 	}
 
-	q->seg_boundary_mask = mask;
+	q->limits.seg_boundary_mask = mask;
 }
 
 /**
@@ -711,11 +711,11 @@
 	seg_size = nr_phys_segs = nr_hw_segs = 0;
 	bio_for_each_segment(bv, bio, i) {
 		if (bvprv && cluster) {
-			if (seg_size + bv->bv_len > q->max_segment_size)
+			if (seg_size + bv->bv_len > q->limits.max_segment_size)
 				goto new_segment;
 			if (!BIOVEC_PHYS_MERGEABLE(bvprv, bv))
 				goto new_segment;
-			if (!BIOVEC_SEG_BOUNDARY(q, bvprv, bv))
+			if (!BIOVEC_SEG_BOUNDARY(&q->limits, bvprv, bv))
 				goto new_segment;
 
 			seg_size += bv->bv_len;
@@ -745,14 +745,14 @@
 
 	if (!BIOVEC_PHYS_MERGEABLE(__BVEC_END(bio), __BVEC_START(nxt)))
 		return 0;
-	if (bio->bi_size + nxt->bi_size > q->max_segment_size)
+	if (bio->bi_size + nxt->bi_size > q->limits.max_segment_size)
 		return 0;
 
 	/*
 	 * bio and nxt are contigous in memory, check if the queue allows
 	 * these two to be merged into one
 	 */
-	if (BIO_SEG_BOUNDARY(q, bio, nxt))
+	if (BIO_SEG_BOUNDARY(&q->limits, bio, nxt))
 		return 1;
 
 	return 0;
@@ -766,14 +766,14 @@
 
 	if (!BIOVEC_VIRT_MERGEABLE(__BVEC_END(bio), __BVEC_START(nxt)))
 		return 0;
-	if (bio->bi_size + nxt->bi_size > q->max_segment_size)
+	if (bio->bi_size + nxt->bi_size > q->limits.max_segment_size)
 		return 0;
 
 	/*
 	 * bio and nxt are contigous in memory, check if the queue allows
 	 * these two to be merged into one
 	 */
-	if (BIO_SEG_BOUNDARY(q, bio, nxt))
+	if (BIO_SEG_BOUNDARY(&q->limits, bio, nxt))
 		return 1;
 
 	return 0;
@@ -804,12 +804,12 @@
 			int nbytes = bvec->bv_len;
 
 			if (bvprv && cluster) {
-				if (sg[nsegs - 1].length + nbytes > q->max_segment_size)
+				if (sg[nsegs - 1].length + nbytes > q->limits.max_segment_size)
 					goto new_segment;
 
 				if (!BIOVEC_PHYS_MERGEABLE(bvprv, bvec))
 					goto new_segment;
-				if (!BIOVEC_SEG_BOUNDARY(q, bvprv, bvec))
+				if (!BIOVEC_SEG_BOUNDARY(&q->limits, bvprv, bvec))
 					goto new_segment;
 
 				sg[nsegs - 1].length += nbytes;
@@ -840,7 +840,7 @@
 {
 	int nr_phys_segs = bio_phys_segments(q, bio);
 
-	if (req->nr_phys_segments + nr_phys_segs > q->max_phys_segments) {
+	if (req->nr_phys_segments + nr_phys_segs > q->limits.max_phys_segments) {
 		req->flags |= REQ_NOMERGE;
 		q->last_merge = NULL;
 		return 0;
@@ -861,8 +861,8 @@
 	int nr_hw_segs = bio_hw_segments(q, bio);
 	int nr_phys_segs = bio_phys_segments(q, bio);
 
-	if (req->nr_hw_segments + nr_hw_segs > q->max_hw_segments
-	    || req->nr_phys_segments + nr_phys_segs > q->max_phys_segments) {
+	if (req->nr_hw_segments + nr_hw_segs > q->limits.max_hw_segments
+	    || req->nr_phys_segments + nr_phys_segs > q->limits.max_phys_segments) {
 		req->flags |= REQ_NOMERGE;
 		q->last_merge = NULL;
 		return 0;
@@ -880,7 +880,7 @@
 static int ll_back_merge_fn(request_queue_t *q, struct request *req, 
 			    struct bio *bio)
 {
-	if (req->nr_sectors + bio_sectors(bio) > q->max_sectors) {
+	if (req->nr_sectors + bio_sectors(bio) > q->limits.max_sectors) {
 		req->flags |= REQ_NOMERGE;
 		q->last_merge = NULL;
 		return 0;
@@ -895,7 +895,7 @@
 static int ll_front_merge_fn(request_queue_t *q, struct request *req, 
 			     struct bio *bio)
 {
-	if (req->nr_sectors + bio_sectors(bio) > q->max_sectors) {
+	if (req->nr_sectors + bio_sectors(bio) > q->limits.max_sectors) {
 		req->flags |= REQ_NOMERGE;
 		q->last_merge = NULL;
 		return 0;
@@ -923,21 +923,21 @@
 	/*
 	 * Will it become to large?
 	 */
-	if ((req->nr_sectors + next->nr_sectors) > q->max_sectors)
+	if ((req->nr_sectors + next->nr_sectors) > q->limits.max_sectors)
 		return 0;
 
 	total_phys_segments = req->nr_phys_segments + next->nr_phys_segments;
 	if (blk_phys_contig_segment(q, req->biotail, next->bio))
 		total_phys_segments--;
 
-	if (total_phys_segments > q->max_phys_segments)
+	if (total_phys_segments > q->limits.max_phys_segments)
 		return 0;
 
 	total_hw_segments = req->nr_hw_segments + next->nr_hw_segments;
 	if (blk_hw_contig_segment(q, req->biotail, next->bio))
 		total_hw_segments--;
 
-	if (total_hw_segments > q->max_hw_segments)
+	if (total_hw_segments > q->limits.max_hw_segments)
 		return 0;
 
 	/* Merge is OK... */
@@ -1915,11 +1915,11 @@
 			break;
 		}
 
-		if (unlikely(bio_sectors(bio) > q->max_sectors)) {
+		if (unlikely(bio_sectors(bio) > q->limits.max_sectors)) {
 			printk("bio too big device %s (%u > %u)\n", 
 			       bdevname(bio->bi_bdev),
 			       bio_sectors(bio),
-			       q->max_sectors);
+			       q->limits.max_sectors);
 			goto end_io;
 		}
 
--- linux-2.5.49/drivers/block/loop.c	2002-11-22 13:40:46.000000000 -0800
+++ linux/drivers/block/loop.c	2002-11-27 11:28:52.000000000 -0800
@@ -728,11 +728,7 @@
 	if (S_ISBLK(inode->i_mode)) {
 		request_queue_t *q = bdev_get_queue(lo_device);
 
-		blk_queue_max_sectors(&lo->lo_queue, q->max_sectors);
-		blk_queue_max_phys_segments(&lo->lo_queue,q->max_phys_segments);
-		blk_queue_max_hw_segments(&lo->lo_queue, q->max_hw_segments);
-		blk_queue_max_segment_size(&lo->lo_queue, q->max_segment_size);
-		blk_queue_segment_boundary(&lo->lo_queue, q->seg_boundary_mask);
+		lo->lo_queue.limits = q->limits;
 		blk_queue_merge_bvec(&lo->lo_queue, q->merge_bvec_fn);
 	}
 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Patch/resubmit(2.5.49): Use struct io_restrictions in blkdev.h
  2002-11-27 19:49 Patch/resubmit(2.5.49): Use struct io_restrictions in blkdev.h Adam J. Richter
@ 2002-11-27 20:03 ` Christoph Hellwig
  0 siblings, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2002-11-27 20:03 UTC (permalink / raw)
  To: Adam J. Richter; +Cc: axboe, linux-kernel

On Wed, Nov 27, 2002 at 11:49:40AM -0800, Adam J. Richter wrote:
> 	Here is an updated version of the patch.  The struct
> io_restrictions declaration is in <linux/device-mapper.h> so that the
> device-mapper user level utilities compile properly (device-mapper.h
> is written to support inclusion by user level programs).

They shouldn't include it anyway.  Please put it into a proper place.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Patch/resubmit(2.5.49): Use struct io_restrictions in blkdev.h
@ 2002-11-27 22:44 Adam J. Richter
  0 siblings, 0 replies; 5+ messages in thread
From: Adam J. Richter @ 2002-11-27 22:44 UTC (permalink / raw)
  To: hch; +Cc: axboe, linux-kernel

Christoph Hellwig wrote:
>On Wed, Nov 27, 2002 at 12:59:46PM -0800, Adam J. Richter wrote:
>> >On Wed, Nov 27, 2002 at 11:49:40AM -0800, Adam J. Richter wrote:
>> >> 	Here is an updated version of the patch.  The struct
>> >> io_restrictions declaration is in <linux/device-mapper.h> so that the
>> >> device-mapper user level utilities compile properly (device-mapper.h
>> >> is written to support inclusion by user level programs).
>> 
>> >They shouldn't include it anyway.  Please put it into a proper place.
>> 
>> 	I don't know what you mean by "shouldn't" or "proper" in this
>> context.  If you'd state technical advantages or disadvanges, others
>> could determine these labels for themselves.
>> 
>> 	Anyhow, what would be a "proper" place as you see it?

>blkdev.h

	I expect struct io_restrictions to be useful beyond blkdev.  I
want to evolve it for use in DMA scatterlists in general, so blkdev.h
could only be a temporary home.  If you really want and nobody else
objects, I'd be willing to create a separate .h file for struct
io_restrictions.  (I assume that what you find "improper" about
device-mapper.h is that block devices themselves do not depend
on any abstractions specific to the device mapper.)

	That would not break device-mapper, and you could take the
less disruptive approach of submitting a patch to glibc and/or
device-mapper to eliminate the user level program including kernel
headers.

Adam J. Richter     __     ______________   575 Oroville Road
adam@yggdrasil.com     \ /                  Milpitas, California 95035
+1 408 309-6081         | g g d r a s i l   United States of America
                         "Free Software For The Rest Of Us."

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Patch/resubmit(2.5.49): Use struct io_restrictions in blkdev.h
  2002-11-27 20:59 Adam J. Richter
@ 2002-11-27 21:19 ` Christoph Hellwig
  0 siblings, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2002-11-27 21:19 UTC (permalink / raw)
  To: Adam J. Richter; +Cc: hch, axboe, linux-kernel

On Wed, Nov 27, 2002 at 12:59:46PM -0800, Adam J. Richter wrote:
> >On Wed, Nov 27, 2002 at 11:49:40AM -0800, Adam J. Richter wrote:
> >> 	Here is an updated version of the patch.  The struct
> >> io_restrictions declaration is in <linux/device-mapper.h> so that the
> >> device-mapper user level utilities compile properly (device-mapper.h
> >> is written to support inclusion by user level programs).
> 
> >They shouldn't include it anyway.  Please put it into a proper place.
> 
> 	I don't know what you mean by "shouldn't" or "proper" in this
> context.  If you'd state technical advantages or disadvanges, others
> could determine these labels for themselves.
> 
> 	Anyhow, what would be a "proper" place as you see it?

blkdev.h


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Patch/resubmit(2.5.49): Use struct io_restrictions in blkdev.h
@ 2002-11-27 20:59 Adam J. Richter
  2002-11-27 21:19 ` Christoph Hellwig
  0 siblings, 1 reply; 5+ messages in thread
From: Adam J. Richter @ 2002-11-27 20:59 UTC (permalink / raw)
  To: hch; +Cc: axboe, linux-kernel

>On Wed, Nov 27, 2002 at 11:49:40AM -0800, Adam J. Richter wrote:
>> 	Here is an updated version of the patch.  The struct
>> io_restrictions declaration is in <linux/device-mapper.h> so that the
>> device-mapper user level utilities compile properly (device-mapper.h
>> is written to support inclusion by user level programs).

>They shouldn't include it anyway.  Please put it into a proper place.

	I don't know what you mean by "shouldn't" or "proper" in this
context.  If you'd state technical advantages or disadvanges, others
could determine these labels for themselves.

	Anyhow, what would be a "proper" place as you see it?

Adam J. Richter     __     ______________   575 Oroville Road
adam@yggdrasil.com     \ /                  Milpitas, California 95035
+1 408 309-6081         | g g d r a s i l   United States of America
                         "Free Software For The Rest Of Us."

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2002-11-27 22:39 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-27 19:49 Patch/resubmit(2.5.49): Use struct io_restrictions in blkdev.h Adam J. Richter
2002-11-27 20:03 ` Christoph Hellwig
2002-11-27 20:59 Adam J. Richter
2002-11-27 21:19 ` Christoph Hellwig
2002-11-27 22:44 Adam J. Richter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®