Commit 8e8ef297 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:
  docbook: add pipes, other fixes
  blktrace: use cpu_clock() instead of sched_clock()
  bsg: Fix build for CONFIG_BLOCK=n
  [patch] QUEUE_FLAG_READFULL QUEUE_FLAG_WRITEFULL comment fix
parents 933a6208 79685b8d
Loading
Loading
Loading
Loading
+11 −2
Original line number Original line Diff line number Diff line
@@ -704,14 +704,23 @@ X!Idrivers/video/console/fonts.c


  <chapter id="splice">
  <chapter id="splice">
      <title>splice API</title>
      <title>splice API</title>
  <para>)
  <para>
	splice is a method for moving blocks of data around inside the
	splice is a method for moving blocks of data around inside the
	kernel, without continually transferring it between the kernel
	kernel, without continually transferring them between the kernel
	and user space.
	and user space.
  </para>
  </para>
!Iinclude/linux/splice.h
!Iinclude/linux/splice.h
!Ffs/splice.c
!Ffs/splice.c
  </chapter>
  </chapter>


  <chapter id="pipes">
      <title>pipes API</title>
  <para>
	Pipe interfaces are all for in-kernel (builtin image) use.
	They are not exported for use by modules.
  </para>
!Iinclude/linux/pipe_fs_i.h
!Ffs/pipe.c
  </chapter>


</book>
</book>
+2 −2
Original line number Original line Diff line number Diff line
@@ -49,8 +49,6 @@ config LSF


	  If unsure, say Y.
	  If unsure, say Y.


endif # BLOCK

config BLK_DEV_BSG
config BLK_DEV_BSG
	bool "Block layer SG support v4 (EXPERIMENTAL)"
	bool "Block layer SG support v4 (EXPERIMENTAL)"
	depends on EXPERIMENTAL
	depends on EXPERIMENTAL
@@ -64,4 +62,6 @@ config BLK_DEV_BSG
	protocols (e.g. Task Management Functions and SMP in Serial
	protocols (e.g. Task Management Functions and SMP in Serial
	Attached SCSI).
	Attached SCSI).


endif # BLOCK

source block/Kconfig.iosched
source block/Kconfig.iosched
+10 −10
Original line number Original line Diff line number Diff line
@@ -41,7 +41,7 @@ static void trace_note(struct blk_trace *bt, pid_t pid, int action,
		const int cpu = smp_processor_id();
		const int cpu = smp_processor_id();


		t->magic = BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION;
		t->magic = BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION;
		t->time = sched_clock() - per_cpu(blk_trace_cpu_offset, cpu);
		t->time = cpu_clock(cpu) - per_cpu(blk_trace_cpu_offset, cpu);
		t->device = bt->dev;
		t->device = bt->dev;
		t->action = action;
		t->action = action;
		t->pid = pid;
		t->pid = pid;
@@ -159,7 +159,7 @@ void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes,


		t->magic = BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION;
		t->magic = BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION;
		t->sequence = ++(*sequence);
		t->sequence = ++(*sequence);
		t->time = sched_clock() - per_cpu(blk_trace_cpu_offset, cpu);
		t->time = cpu_clock(cpu) - per_cpu(blk_trace_cpu_offset, cpu);
		t->sector = sector;
		t->sector = sector;
		t->bytes = bytes;
		t->bytes = bytes;
		t->action = what;
		t->action = what;
@@ -488,17 +488,17 @@ void blk_trace_shutdown(struct request_queue *q)
}
}


/*
/*
 * Average offset over two calls to sched_clock() with a gettimeofday()
 * Average offset over two calls to cpu_clock() with a gettimeofday()
 * in the middle
 * in the middle
 */
 */
static void blk_check_time(unsigned long long *t)
static void blk_check_time(unsigned long long *t, int this_cpu)
{
{
	unsigned long long a, b;
	unsigned long long a, b;
	struct timeval tv;
	struct timeval tv;


	a = sched_clock();
	a = cpu_clock(this_cpu);
	do_gettimeofday(&tv);
	do_gettimeofday(&tv);
	b = sched_clock();
	b = cpu_clock(this_cpu);


	*t = tv.tv_sec * 1000000000 + tv.tv_usec * 1000;
	*t = tv.tv_sec * 1000000000 + tv.tv_usec * 1000;
	*t -= (a + b) / 2;
	*t -= (a + b) / 2;
@@ -510,16 +510,16 @@ static void blk_check_time(unsigned long long *t)
static void blk_trace_check_cpu_time(void *data)
static void blk_trace_check_cpu_time(void *data)
{
{
	unsigned long long *t;
	unsigned long long *t;
	int cpu = get_cpu();
	int this_cpu = get_cpu();


	t = &per_cpu(blk_trace_cpu_offset, cpu);
	t = &per_cpu(blk_trace_cpu_offset, this_cpu);


	/*
	/*
	 * Just call it twice, hopefully the second call will be cache hot
	 * Just call it twice, hopefully the second call will be cache hot
	 * and a little more precise
	 * and a little more precise
	 */
	 */
	blk_check_time(t);
	blk_check_time(t, this_cpu);
	blk_check_time(t);
	blk_check_time(t, this_cpu);


	put_cpu();
	put_cpu();
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -255,7 +255,7 @@ void generic_pipe_buf_get(struct pipe_inode_info *pipe, struct pipe_buffer *buf)


/**
/**
 * generic_pipe_buf_confirm - verify contents of the pipe buffer
 * generic_pipe_buf_confirm - verify contents of the pipe buffer
 * @pipe:	the pipe that the buffer belongs to
 * @info:	the pipe that the buffer belongs to
 * @buf:	the buffer to confirm
 * @buf:	the buffer to confirm
 *
 *
 * Description:
 * Description:
+2 −2
Original line number Original line Diff line number Diff line
@@ -164,7 +164,7 @@ static const struct pipe_buf_operations user_page_pipe_buf_ops = {
 * @spd:	data to fill
 * @spd:	data to fill
 *
 *
 * Description:
 * Description:
 *    @spd contains a map of pages and len/offset tupples, a long with
 *    @spd contains a map of pages and len/offset tuples, along with
 *    the struct pipe_buf_operations associated with these pages. This
 *    the struct pipe_buf_operations associated with these pages. This
 *    function will link that data to the pipe.
 *    function will link that data to the pipe.
 *
 *
Loading