mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
Merge branch 'for-2.6.32' of git://git.kernel.dk/linux-2.6-block
* 'for-2.6.32' of git://git.kernel.dk/linux-2.6-block: (29 commits) block: use blkdev_issue_discard in blk_ioctl_discard Make DISCARD_BARRIER and DISCARD_NOBARRIER writes instead of reads block: don't assume device has a request list backing in nr_requests store block: Optimal I/O limit wrapper cfq: choose a new next_req when a request is dispatched Seperate read and write statistics of in_flight requests aoe: end barrier bios with EOPNOTSUPP block: trace bio queueing trial only when it occurs block: enable rq CPU completion affinity by default cfq: fix the log message after dispatched a request block: use printk_once cciss: memory leak in cciss_init_one() splice: update mtime and atime on files block: make blk_iopoll_prep_sched() follow normal 0/1 return convention cfq-iosched: get rid of must_alloc flag block: use interrupts disabled version of raise_softirq_irqoff() block: fix comment in blk-iopoll.c block: adjust default budget for blk-iopoll block: fix long lines in block/blk-iopoll.c block: add blk-iopoll, a NAPI like approach for block devices ...
This commit is contained in:
commit
355bbd8cb8
42 changed files with 729 additions and 284 deletions
|
|
@ -1511,7 +1511,8 @@ static int remove_extent_backref(struct btrfs_trans_handle *trans,
|
|||
static void btrfs_issue_discard(struct block_device *bdev,
|
||||
u64 start, u64 len)
|
||||
{
|
||||
blkdev_issue_discard(bdev, start >> 9, len >> 9, GFP_KERNEL);
|
||||
blkdev_issue_discard(bdev, start >> 9, len >> 9, GFP_KERNEL,
|
||||
DISCARD_FL_BARRIER);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -260,7 +260,7 @@ loop_lock:
|
|||
num_run++;
|
||||
batch_run++;
|
||||
|
||||
if (bio_sync(cur))
|
||||
if (bio_rw_flagged(cur, BIO_RW_SYNCIO))
|
||||
num_sync_run++;
|
||||
|
||||
if (need_resched()) {
|
||||
|
|
@ -2903,7 +2903,7 @@ static noinline int schedule_bio(struct btrfs_root *root,
|
|||
bio->bi_rw |= rw;
|
||||
|
||||
spin_lock(&device->io_lock);
|
||||
if (bio_sync(bio))
|
||||
if (bio_rw_flagged(bio, BIO_RW_SYNCIO))
|
||||
pending_bios = &device->pending_sync_bios;
|
||||
else
|
||||
pending_bios = &device->pending_bios;
|
||||
|
|
|
|||
|
|
@ -857,7 +857,8 @@ static void gfs2_rgrp_send_discards(struct gfs2_sbd *sdp, u64 offset,
|
|||
goto start_new_extent;
|
||||
if ((start + nr_sects) != blk) {
|
||||
rv = blkdev_issue_discard(bdev, start,
|
||||
nr_sects, GFP_NOFS);
|
||||
nr_sects, GFP_NOFS,
|
||||
DISCARD_FL_BARRIER);
|
||||
if (rv)
|
||||
goto fail;
|
||||
nr_sects = 0;
|
||||
|
|
@ -871,7 +872,8 @@ start_new_extent:
|
|||
}
|
||||
}
|
||||
if (nr_sects) {
|
||||
rv = blkdev_issue_discard(bdev, start, nr_sects, GFP_NOFS);
|
||||
rv = blkdev_issue_discard(bdev, start, nr_sects, GFP_NOFS,
|
||||
DISCARD_FL_BARRIER);
|
||||
if (rv)
|
||||
goto fail;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -248,11 +248,19 @@ ssize_t part_stat_show(struct device *dev,
|
|||
part_stat_read(p, merges[WRITE]),
|
||||
(unsigned long long)part_stat_read(p, sectors[WRITE]),
|
||||
jiffies_to_msecs(part_stat_read(p, ticks[WRITE])),
|
||||
p->in_flight,
|
||||
part_in_flight(p),
|
||||
jiffies_to_msecs(part_stat_read(p, io_ticks)),
|
||||
jiffies_to_msecs(part_stat_read(p, time_in_queue)));
|
||||
}
|
||||
|
||||
ssize_t part_inflight_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct hd_struct *p = dev_to_part(dev);
|
||||
|
||||
return sprintf(buf, "%8u %8u\n", p->in_flight[0], p->in_flight[1]);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_FAIL_MAKE_REQUEST
|
||||
ssize_t part_fail_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
|
|
@ -281,6 +289,7 @@ static DEVICE_ATTR(start, S_IRUGO, part_start_show, NULL);
|
|||
static DEVICE_ATTR(size, S_IRUGO, part_size_show, NULL);
|
||||
static DEVICE_ATTR(alignment_offset, S_IRUGO, part_alignment_offset_show, NULL);
|
||||
static DEVICE_ATTR(stat, S_IRUGO, part_stat_show, NULL);
|
||||
static DEVICE_ATTR(inflight, S_IRUGO, part_inflight_show, NULL);
|
||||
#ifdef CONFIG_FAIL_MAKE_REQUEST
|
||||
static struct device_attribute dev_attr_fail =
|
||||
__ATTR(make-it-fail, S_IRUGO|S_IWUSR, part_fail_show, part_fail_store);
|
||||
|
|
@ -292,6 +301,7 @@ static struct attribute *part_attrs[] = {
|
|||
&dev_attr_size.attr,
|
||||
&dev_attr_alignment_offset.attr,
|
||||
&dev_attr_stat.attr,
|
||||
&dev_attr_inflight.attr,
|
||||
#ifdef CONFIG_FAIL_MAKE_REQUEST
|
||||
&dev_attr_fail.attr,
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -502,8 +502,10 @@ ssize_t generic_file_splice_read(struct file *in, loff_t *ppos,
|
|||
len = left;
|
||||
|
||||
ret = __generic_file_splice_read(in, ppos, pipe, len, flags);
|
||||
if (ret > 0)
|
||||
if (ret > 0) {
|
||||
*ppos += ret;
|
||||
file_accessed(in);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -963,8 +965,10 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
|
|||
|
||||
mutex_lock_nested(&inode->i_mutex, I_MUTEX_CHILD);
|
||||
ret = file_remove_suid(out);
|
||||
if (!ret)
|
||||
if (!ret) {
|
||||
file_update_time(out);
|
||||
ret = splice_from_pipe_feed(pipe, &sd, pipe_to_file);
|
||||
}
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
} while (ret > 0);
|
||||
splice_from_pipe_end(pipe, &sd);
|
||||
|
|
|
|||
Loading…
Reference in a new issue