[d-kernel] PATCH: 2.6 fixes for fix-drivers-block and fix-build
Konstantin A. Lepikhov
lakostis на anti-leasure.ru
Сб Окт 23 13:36:51 MSD 2004
Hi!
Найдено в -ck1 updates. Есть ли смысл их добавить?
--
WBR, Konstantin chat with ==>ICQ: 109916175
Lepikhov, speak to ==>JID: lakostis на jabber.org
aka L.A. Kostis write to ==>mailto:lakostis на pisem.net.nospam
...The information is like the bank... (c) EC8OR
----------- следущая часть -----------
# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
# 2004/10/18 22:43:26-07:00 torvalds на ppc970.osdl.org
# Wrap <linux/compiler.h> inside '#ifndef __ASSEMBLY__'
#
# None of the compatibility defines make sense for assembly
# files, and gcc has trouble with vararg macros when using
# "-traditional" (which is used for asm), to the point of
# ICE'ing.
#
# include/linux/compiler.h
# 2004/10/18 22:43:20-07:00 torvalds на ppc970.osdl.org +4 -2
# Wrap <linux/compiler.h> inside '#ifndef __ASSEMBLY__'
#
# None of the compatibility defines make sense for assembly
# files, and gcc has trouble with vararg macros when using
# "-traditional" (which is used for asm), to the point of
# ICE'ing.
#
Index: linux-2.6.9-ck1/include/linux/compiler.h
===================================================================
--- linux-2.6.9-ck1.orig/include/linux/compiler.h 2004-10-19 08:57:12.000000000 +1000
+++ linux-2.6.9-ck1/include/linux/compiler.h 2004-10-19 20:05:41.255008517 +1000
@@ -1,6 +1,8 @@
#ifndef __LINUX_COMPILER_H
#define __LINUX_COMPILER_H
+#ifndef __ASSEMBLY__
+
#ifdef __CHECKER__
# define __user __attribute__((noderef, address_space(1)))
# define __kernel /* default address space */
@@ -21,7 +23,6 @@ extern void __chk_io_ptr(void __iomem *)
#ifdef __KERNEL__
-#ifndef __ASSEMBLY__
#if __GNUC__ > 3
# include <linux/compiler-gcc+.h> /* catch-all for GCC 4, 5, etc. */
#elif __GNUC__ == 3
@@ -31,7 +32,6 @@ extern void __chk_io_ptr(void __iomem *)
#else
# error Sorry, your compiler is too old/not recognized.
#endif
-#endif
/* Intel compiler defines __GNUC__. So we will overwrite implementations
* coming from above header files here
@@ -61,6 +61,8 @@ extern void __chk_io_ptr(void __iomem *)
(typeof(ptr)) (__ptr + (off)); })
#endif
+#endif /* __ASSEMBLY__ */
+
#endif /* __KERNEL__ */
/*
----------- следущая часть -----------
From: Jens Axboe <axboe на suse.de>
blk_recalc_rq_segments forgots to take ->max_segment_size into account and
gladly merges segments bigger than we can support, thus underestimating the
number of segments needed to fill it.
Signed-off-by: Jens Axboe <axboe на suse.de>
Signed-off-by: Andrew Morton <akpm на osdl.org>
Index: linux-2.6.9-ck2/drivers/block/ll_rw_blk.c
===================================================================
--- linux-2.6.9-ck2.orig/drivers/block/ll_rw_blk.c 2004-10-22 10:34:33.000000000 +1000
+++ linux-2.6.9-ck2/drivers/block/ll_rw_blk.c 2004-10-22 21:46:27.286378575 +1000
@@ -2740,22 +2740,36 @@ void blk_recalc_rq_segments(struct reque
{
struct bio *bio, *prevbio = NULL;
int nr_phys_segs, nr_hw_segs;
+ unsigned int phys_size, hw_size;
+ request_queue_t *q = rq->q;
if (!rq->bio)
return;
- nr_phys_segs = nr_hw_segs = 0;
+ phys_size = hw_size = nr_phys_segs = nr_hw_segs = 0;
rq_for_each_bio(bio, rq) {
/* Force bio hw/phys segs to be recalculated. */
bio->bi_flags &= ~(1 << BIO_SEG_VALID);
- nr_phys_segs += bio_phys_segments(rq->q, bio);
- nr_hw_segs += bio_hw_segments(rq->q, bio);
+ nr_phys_segs += bio_phys_segments(q, bio);
+ nr_hw_segs += bio_hw_segments(q, bio);
if (prevbio) {
- if (blk_phys_contig_segment(rq->q, prevbio, bio))
+ int pseg = phys_size + prevbio->bi_size + bio->bi_size;
+ int hseg = hw_size + prevbio->bi_size + bio->bi_size;
+
+ if (blk_phys_contig_segment(q, prevbio, bio) &&
+ pseg <= q->max_segment_size) {
nr_phys_segs--;
- if (blk_hw_contig_segment(rq->q, prevbio, bio))
+ phys_size += prevbio->bi_size + bio->bi_size;
+ } else
+ phys_size = 0;
+
+ if (blk_hw_contig_segment(q, prevbio, bio) &&
+ hseg <= q->max_segment_size) {
nr_hw_segs--;
+ hw_size += prevbio->bi_size + bio->bi_size;
+ } else
+ hw_size = 0;
}
prevbio = bio;
}
Подробная информация о списке рассылки devel-kernel