Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8a9f772c authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block

* 'for-linus' of git://git.kernel.dk/linux-2.6-block: (27 commits)
  block: remove unused copy_io_context()
  Documentation: remove anticipatory scheduler info
  block: remove REQ_HARDBARRIER
  ioprio: rcu_read_lock/unlock protect find_task_by_vpid call (V2)
  ioprio: fix RCU locking around task dereference
  block: ioctl: fix information leak to userland
  block: read i_size with i_size_read()
  cciss: fix proc warning on attempt to remove non-existant directory
  bio: take care not overflow page count when mapping/copying user data
  block: limit vec count in bio_kmalloc() and bio_alloc_map_data()
  block: take care not to overflow when calculating total iov length
  block: check for proper length of iov entries in blk_rq_map_user_iov()
  cciss: remove controllers supported by hpsa
  cciss: use usleep_range not msleep for small sleeps
  cciss: limit commands allocated on reset_devices
  cciss: Use kernel provided PCI state save and restore functions
  cciss: fix board status waiting code
  drbd: Removed checks for REQ_HARDBARRIER on incomming BIOs
  drbd: REQ_HARDBARRIER -> REQ_FUA transition for meta data accesses
  drbd: Removed the BIO_RW_BARRIER support form the receiver/epoch code
  ...
parents 25a34554 cedb4a7d
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -16,7 +16,7 @@ you can do so by typing:
As of the Linux 2.6.10 kernel, it is now possible to change the
As of the Linux 2.6.10 kernel, it is now possible to change the
IO scheduler for a given block device on the fly (thus making it possible,
IO scheduler for a given block device on the fly (thus making it possible,
for instance, to set the CFQ scheduler for the system default, but
for instance, to set the CFQ scheduler for the system default, but
set a specific device to use the anticipatory or noop schedulers - which
set a specific device to use the deadline or noop schedulers - which
can improve that device's throughput).
can improve that device's throughput).


To set a specific scheduler, simply do this:
To set a specific scheduler, simply do this:
@@ -31,7 +31,7 @@ a "cat /sys/block/DEV/queue/scheduler" - the list of valid names
will be displayed, with the currently selected scheduler in brackets:
will be displayed, with the currently selected scheduler in brackets:


# cat /sys/block/hda/queue/scheduler
# cat /sys/block/hda/queue/scheduler
noop anticipatory deadline [cfq]
noop deadline [cfq]
# echo anticipatory > /sys/block/hda/queue/scheduler
# echo deadline > /sys/block/hda/queue/scheduler
# cat /sys/block/hda/queue/scheduler
# cat /sys/block/hda/queue/scheduler
noop [anticipatory] deadline cfq
noop [deadline] cfq
+1 −1
Original line number Original line Diff line number Diff line
@@ -706,7 +706,7 @@ and is between 256 and 4096 characters. It is defined in the file
			arch/x86/kernel/cpu/cpufreq/elanfreq.c.
			arch/x86/kernel/cpu/cpufreq/elanfreq.c.


	elevator=	[IOSCHED]
	elevator=	[IOSCHED]
			Format: {"anticipatory" | "cfq" | "deadline" | "noop"}
			Format: {"cfq" | "deadline" | "noop"}
			See Documentation/block/as-iosched.txt and
			See Documentation/block/as-iosched.txt and
			Documentation/block/deadline-iosched.txt for details.
			Documentation/block/deadline-iosched.txt for details.


+2 −2
Original line number Original line Diff line number Diff line
@@ -21,8 +21,8 @@ three rotations, respectively, to balance the tree), with slightly slower
To quote Linux Weekly News:
To quote Linux Weekly News:


    There are a number of red-black trees in use in the kernel.
    There are a number of red-black trees in use in the kernel.
    The anticipatory, deadline, and CFQ I/O schedulers all employ
    The deadline and CFQ I/O schedulers employ rbtrees to
    rbtrees to track requests; the packet CD/DVD driver does the same.
    track requests; the packet CD/DVD driver does the same.
    The high-resolution timer code uses an rbtree to organize outstanding
    The high-resolution timer code uses an rbtree to organize outstanding
    timer requests.  The ext3 filesystem tracks directory entries in a
    timer requests.  The ext3 filesystem tracks directory entries in a
    red-black tree.  Virtual memory areas (VMAs) are tracked with red-black
    red-black tree.  Virtual memory areas (VMAs) are tracked with red-black
+2 −9
Original line number Original line Diff line number Diff line
@@ -1194,13 +1194,6 @@ static int __make_request(struct request_queue *q, struct bio *bio)
	int where = ELEVATOR_INSERT_SORT;
	int where = ELEVATOR_INSERT_SORT;
	int rw_flags;
	int rw_flags;


	/* REQ_HARDBARRIER is no more */
	if (WARN_ONCE(bio->bi_rw & REQ_HARDBARRIER,
		"block: HARDBARRIER is deprecated, use FLUSH/FUA instead\n")) {
		bio_endio(bio, -EOPNOTSUPP);
		return 0;
	}

	/*
	/*
	 * low level driver can indicate that it wants pages above a
	 * low level driver can indicate that it wants pages above a
	 * certain limit bounced to low memory (ie for highmem, or even
	 * certain limit bounced to low memory (ie for highmem, or even
@@ -1351,7 +1344,7 @@ static void handle_bad_sector(struct bio *bio)
			bdevname(bio->bi_bdev, b),
			bdevname(bio->bi_bdev, b),
			bio->bi_rw,
			bio->bi_rw,
			(unsigned long long)bio->bi_sector + bio_sectors(bio),
			(unsigned long long)bio->bi_sector + bio_sectors(bio),
			(long long)(bio->bi_bdev->bd_inode->i_size >> 9));
			(long long)(i_size_read(bio->bi_bdev->bd_inode) >> 9));


	set_bit(BIO_EOF, &bio->bi_flags);
	set_bit(BIO_EOF, &bio->bi_flags);
}
}
@@ -1404,7 +1397,7 @@ static inline int bio_check_eod(struct bio *bio, unsigned int nr_sectors)
		return 0;
		return 0;


	/* Test device or partition size, when known. */
	/* Test device or partition size, when known. */
	maxsector = bio->bi_bdev->bd_inode->i_size >> 9;
	maxsector = i_size_read(bio->bi_bdev->bd_inode) >> 9;
	if (maxsector) {
	if (maxsector) {
		sector_t sector = bio->bi_sector;
		sector_t sector = bio->bi_sector;


+0 −14
Original line number Original line Diff line number Diff line
@@ -153,20 +153,6 @@ struct io_context *get_io_context(gfp_t gfp_flags, int node)
}
}
EXPORT_SYMBOL(get_io_context);
EXPORT_SYMBOL(get_io_context);


void copy_io_context(struct io_context **pdst, struct io_context **psrc)
{
	struct io_context *src = *psrc;
	struct io_context *dst = *pdst;

	if (src) {
		BUG_ON(atomic_long_read(&src->refcount) == 0);
		atomic_long_inc(&src->refcount);
		put_io_context(dst);
		*pdst = src;
	}
}
EXPORT_SYMBOL(copy_io_context);

static int __init blk_ioc_init(void)
static int __init blk_ioc_init(void)
{
{
	iocontext_cachep = kmem_cache_create("blkdev_ioc",
	iocontext_cachep = kmem_cache_create("blkdev_ioc",
Loading