Kiyoshi Ueda
2e93ccc193
[PATCH] dm: suspend: add noflush pushback
...
In device-mapper I/O is sometimes queued within targets for later processing.
For example the multipath target can be configured to store I/O when no paths
are available instead of returning it -EIO.
This patch allows the device-mapper core to instruct a target to transfer the
contents of any such in-target queue back into the core. This frees up the
resources used by the target so the core can replace that target with an
alternative one and then resend the I/O to it. Without this patch the only
way to change the target in such circumstances involves returning the I/O with
an error back to the filesystem/application. In the multipath case, this
patch will let us add new paths for existing I/O to try after all the existing
paths have failed.
DMF_NOFLUSH_SUSPENDING
----------------------
If the DM_NOFLUSH_FLAG ioctl option is specified at suspend time, the
DMF_NOFLUSH_SUSPENDING flag is set in md->flags during dm_suspend(). It
is always cleared before dm_suspend() returns.
The flag must be visible while the target is flushing pending I/Os so it
is set before presuspend where the flush starts and unset after the wait
for md->pending where the flush ends.
Target drivers can check this flag by calling dm_noflush_suspending().
DM_MAPIO_REQUEUE / DM_ENDIO_REQUEUE
-----------------------------------
A target's map() function can now return DM_MAPIO_REQUEUE to request the
device mapper core queue the bio.
Similarly, a target's end_io() function can return DM_ENDIO_REQUEUE to request
the same. This has been labelled 'pushback'.
The __map_bio() and clone_endio() functions in the core treat these return
values as errors and call dec_pending() to end the I/O.
dec_pending
-----------
dec_pending() saves the pushback request in struct dm_io->error. Once all
the split clones have ended, dec_pending() will put the original bio on
the md->pushback list. Note that this supercedes any I/O errors.
It is possible for the suspend with DM_NOFLUSH_FLAG to be aborted while
in progress (e.g. by user interrupt). dec_pending() checks for this and
returns -EIO if it happened.
pushdback list and pushback_lock
--------------------------------
The bio is queued on md->pushback temporarily in dec_pending(), and after
all pending I/Os return, md->pushback is merged into md->deferred in
dm_suspend() for re-issuing at resume time.
md->pushback_lock protects md->pushback.
The lock should be held with irq disabled because dec_pending() can be
called from interrupt context.
Queueing bios to md->pushback in dec_pending() must be done atomically
with the check for DMF_NOFLUSH_SUSPENDING flag. So md->pushback_lock is
held when checking the flag. Otherwise dec_pending() may queue a bio to
md->pushback after the interrupted dm_suspend() flushes md->pushback.
Then the bio would be left in md->pushback.
Flag setting in dm_suspend() can be done without md->pushback_lock because
the flag is checked only after presuspend and the set value is already
made visible via the target's presuspend function.
The flag can be checked without md->pushback_lock (e.g. the first part of
the dec_pending() or target drivers), because the flag is checked again
with md->pushback_lock held when the bio is really queued to md->pushback
as described above. So even if the flag is cleared after the lockless
checkings, the bio isn't left in md->pushback but returned to applications
with -EIO.
Other notes on the current patch
--------------------------------
- md->pushback is added to the struct mapped_device instead of using
md->deferred directly because md->io_lock which protects md->deferred is
rw_semaphore and can't be used in interrupt context like dec_pending(),
and md->io_lock protects the DMF_BLOCK_IO flag of md->flags too.
- Don't issue lock_fs() in dm_suspend() if the DM_NOFLUSH_FLAG
ioctl option is specified, because I/Os generated by lock_fs() would be
pushed back and never return if there were no valid devices.
- If an error occurs in dm_suspend() after the DMF_NOFLUSH_SUSPENDING
flag is set, md->pushback must be flushed because I/Os may be queued to
the list already. (flush_and_out label in dm_suspend())
Test results
------------
I have tested using multipath target with the next patch.
The following tests are for regression/compatibility:
- I/Os succeed when valid paths exist;
- I/Os fail when there are no valid paths and queue_if_no_path is not
set;
- I/Os are queued in the multipath target when there are no valid paths and
queue_if_no_path is set;
- The queued I/Os above fail when suspend is issued without the
DM_NOFLUSH_FLAG ioctl option. I/Os spanning 2 multipath targets also
fail.
The following tests are for the normal code path of new pushback feature:
- Queued I/Os in the multipath target are flushed from the target
but don't return when suspend is issued with the DM_NOFLUSH_FLAG
ioctl option;
- The I/Os above are queued in the multipath target again when
resume is issued without path recovery;
- The I/Os above succeed when resume is issued after path recovery
or table load;
- Queued I/Os in the multipath target succeed when resume is issued
with the DM_NOFLUSH_FLAG ioctl option after table load. I/Os
spanning 2 multipath targets also succeed.
The following tests are for the error paths of the new pushback feature:
- When the bdget_disk() fails in dm_suspend(), the
DMF_NOFLUSH_SUSPENDING flag is cleared and I/Os already queued to the
pushback list are flushed properly.
- When suspend with the DM_NOFLUSH_FLAG ioctl option is interrupted,
o I/Os which had already been queued to the pushback list
at the time don't return, and are re-issued at resume time;
o I/Os which hadn't been returned at the time return with EIO.
Signed-off-by: Kiyoshi Ueda <k-ueda@ct.jp.nec.com >
Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com >
Signed-off-by: Alasdair G Kergon <agk@redhat.com >
Cc: dm-devel@redhat.com
Signed-off-by: Andrew Morton <akpm@osdl.org >
Signed-off-by: Linus Torvalds <torvalds@osdl.org >
2006-12-08 08:29:09 -08:00
..
2006-04-26 12:56:16 +01:00
2006-09-19 12:43:58 +01:00
2006-09-19 12:43:58 +01:00
2006-09-26 17:40:24 -04:00
2006-07-04 12:55:45 -07:00
2006-12-08 08:28:47 -08:00
2006-12-05 14:37:56 +00:00
2006-10-30 12:08:41 -08:00
2006-12-06 18:39:04 -08:00
2006-11-15 21:18:49 -08:00
2006-12-02 21:32:05 -08:00
2006-12-04 02:00:34 -05:00
2006-12-02 21:31:31 -08:00
2006-11-08 18:29:23 -08:00
2006-12-07 08:39:25 -08:00
2006-06-28 15:51:01 -07:00
2006-12-07 16:35:17 -05:00
2006-09-19 12:43:58 +01:00
2006-09-19 12:43:58 +01:00
2006-12-08 08:28:57 -08:00
2005-07-27 11:41:18 +01:00
2005-06-25 16:25:02 -07:00
2006-10-04 07:55:32 -07:00
2006-12-04 02:00:22 -05:00
2006-10-14 00:49:52 -04:00
2006-10-05 15:10:12 +01:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-09-24 11:13:19 -04:00
2006-09-26 17:43:53 -07:00
2006-05-04 15:49:24 +01:00
2005-04-16 15:20:36 -07:00
2006-04-25 13:58:23 +01:00
2006-10-03 23:01:26 +02:00
2006-12-07 08:39:46 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-10-05 15:10:12 +01:00
2005-06-21 19:07:41 -07:00
2006-12-01 22:40:25 -05:00
2006-09-28 17:53:58 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-12-02 21:22:55 -08:00
2006-12-02 21:22:55 -08:00
2005-04-16 15:20:36 -07:00
2006-09-06 11:00:02 -07:00
2005-04-16 15:20:36 -07:00
2006-09-29 17:13:24 -07:00
2006-12-02 21:22:55 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-08-30 22:44:20 -05:00
2006-12-06 20:14:22 -08:00
2006-03-27 08:44:40 -08:00
2005-04-16 15:20:36 -07:00
2006-01-13 09:12:21 -08:00
2006-10-03 23:01:26 +02:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-10-20 10:26:35 -07:00
2006-03-31 12:19:00 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-10-04 13:22:01 -07:00
2005-06-23 09:45:26 -07:00
2006-10-04 19:32:09 +02:00
2005-09-10 10:06:21 -07:00
2006-10-11 11:14:22 -07:00
2006-03-26 08:57:15 -08:00
2006-12-08 08:28:39 -08:00
2006-12-01 10:40:55 +01:00
2006-04-27 16:46:56 +01:00
2006-12-01 10:39:12 +01:00
2006-04-26 12:56:16 +01:00
2006-12-07 08:39:37 -08:00
2006-12-07 08:39:20 -08:00
2005-04-16 15:20:36 -07:00
2006-10-17 08:18:46 -07:00
2006-12-08 08:28:39 -08:00
2006-04-26 12:56:16 +01:00
2006-01-10 08:01:35 -08:00
2006-03-25 08:22:56 -08:00
2005-04-16 15:20:36 -07:00
2006-12-07 08:39:30 -08:00
2005-04-16 15:20:36 -07:00
2006-12-07 08:39:32 -08:00
2005-04-16 15:20:36 -07:00
2006-10-10 16:15:33 -07:00
2005-09-10 10:16:27 -07:00
2005-04-16 15:20:36 -07:00
2006-03-25 18:15:24 +00:00
2006-06-26 09:58:21 -07:00
2005-11-13 18:14:10 -08:00
2006-07-31 13:28:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-06-28 14:59:04 -07:00
2005-04-16 15:20:36 -07:00
2006-09-24 11:13:19 -04:00
2006-04-26 12:56:16 +01:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-10-21 13:35:05 -07:00
2006-11-03 12:27:59 -08:00
2006-01-14 18:27:15 -08:00
2006-01-14 18:27:16 -08:00
2006-01-10 08:32:35 -08:00
2005-04-16 15:20:36 -07:00
2006-10-01 00:39:26 -07:00
2006-07-10 13:24:14 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-02-03 14:01:05 -08:00
2006-11-22 14:57:56 +00:00
2006-10-02 07:57:14 -07:00
2006-10-03 08:04:12 -07:00
2006-10-03 08:04:12 -07:00
2006-12-07 08:59:11 -08:00
2006-07-26 07:21:40 -07:00
2006-10-11 11:14:22 -07:00
2006-12-07 08:39:46 -08:00
2005-04-16 15:20:36 -07:00
2006-09-29 09:18:20 -07:00
2006-03-28 09:16:06 -08:00
2005-09-12 08:48:08 -07:00
2006-12-08 08:28:39 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-12-06 18:38:54 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-04-26 12:56:16 +01:00
2005-04-16 15:20:36 -07:00
2005-09-14 08:36:54 -04:00
2006-01-08 20:14:07 -08:00
2006-10-11 11:14:25 -07:00
2006-12-02 21:30:59 -08:00
2006-04-26 12:56:16 +01:00
2006-12-07 08:39:43 -08:00
2006-04-27 13:08:56 -07:00
2006-06-21 15:01:33 +10:00
2006-12-07 08:39:25 -08:00
2006-12-08 08:29:09 -08:00
2006-12-07 08:39:22 -08:00
2005-04-16 15:20:36 -07:00
2006-03-25 08:22:53 -08:00
2005-04-16 15:20:36 -07:00
2006-06-09 16:14:20 -04:00
2006-02-23 09:56:38 +00:00
2005-05-15 18:31:07 -04:00
2006-12-08 08:29:09 -08:00
2006-09-29 09:18:10 -07:00
2006-07-03 19:44:51 -07:00
2005-10-08 15:00:57 -07:00
2006-10-21 18:37:02 +02:00
2006-03-20 22:42:39 -08:00
2006-04-26 12:56:16 +01:00
2005-06-24 00:05:19 -07:00
2005-06-24 00:05:19 -07:00
2006-06-30 18:25:18 +02:00
2005-04-16 15:20:36 -07:00
2005-11-17 16:23:43 +00:00
2005-11-17 16:23:42 +00:00
2005-04-16 15:20:36 -07:00
2006-09-26 10:52:38 +02:00
2006-12-07 02:14:11 +01:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-09-24 11:13:19 -04:00
2006-06-28 14:59:04 -07:00
2005-04-16 15:20:36 -07:00
2006-09-27 08:26:19 -07:00
2006-12-01 10:42:33 +01:00
2006-09-26 08:48:54 -07:00
2005-04-16 15:20:36 -07:00
2006-12-07 08:39:48 -08:00
2006-07-10 13:24:22 -07:00
2006-09-26 08:48:56 -07:00
2006-09-27 08:26:18 -07:00
2005-04-16 15:20:36 -07:00
2006-09-28 18:02:08 -07:00
2006-01-03 15:25:45 -08:00
2006-06-23 02:07:36 -07:00
2006-06-25 10:01:13 -07:00
2005-04-16 15:20:36 -07:00
2006-09-30 20:52:28 +02:00
2006-09-27 08:26:10 -07:00
2005-04-16 15:20:36 -07:00
2006-09-30 20:52:29 +02:00
2006-12-07 08:39:35 -08:00
2006-10-11 11:14:16 -07:00
2006-10-11 11:14:18 -07:00
2006-10-11 11:14:18 -07:00
2006-10-11 11:14:18 -07:00
2006-12-07 08:39:35 -08:00
2006-03-31 12:18:54 -08:00
2006-12-08 08:29:03 -08:00
2006-12-08 08:29:05 -08:00
2005-04-16 15:20:36 -07:00
2006-06-25 10:01:22 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-07-12 12:08:43 -07:00
2005-04-16 15:20:36 -07:00
2006-12-02 21:21:42 -08:00
2006-12-07 08:39:23 -08:00
2006-09-22 15:18:47 -07:00
2006-05-21 12:59:19 -07:00
2005-04-16 15:20:36 -07:00
2005-11-12 10:14:02 -08:00
2006-12-07 08:39:28 -08:00
2006-09-21 22:38:05 +04:00
2006-12-08 08:28:40 -08:00
2006-12-07 08:39:23 -08:00
2006-09-21 22:38:05 +04:00
2006-12-08 08:28:41 -08:00
2006-10-04 15:24:27 +10:00
2006-12-08 08:28:41 -08:00
2006-12-07 08:39:32 -08:00
2006-07-28 21:02:00 -07:00
2006-04-25 13:59:30 +01:00
2005-04-16 15:20:36 -07:00
2006-10-02 07:57:12 -07:00
2006-09-29 09:18:24 -07:00
2006-12-08 08:28:57 -08:00
2006-12-06 18:38:41 -08:00
2006-12-08 08:29:02 -08:00
2006-09-30 01:47:55 +02:00
2006-12-07 08:39:21 -08:00
2006-11-30 10:34:36 -05:00
2006-03-26 08:57:05 -08:00
2006-10-04 07:55:28 -07:00
2006-10-03 23:01:26 +02:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-09-26 17:40:24 -04:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-11-19 22:17:55 +01:00
2005-04-16 15:20:36 -07:00
2006-10-05 15:10:12 +01:00
2006-12-07 08:39:21 -08:00
2006-04-26 12:56:16 +01:00
2005-10-21 22:58:51 -04:00
2005-10-21 22:58:51 -04:00
2005-08-29 16:10:54 -07:00
2005-10-21 22:58:51 -04:00
2006-03-26 08:56:56 -08:00
2006-09-29 09:18:15 -07:00
2006-11-08 18:29:25 -08:00
2006-12-07 08:39:21 -08:00
2006-06-26 09:58:19 -07:00
2006-03-23 14:21:50 -08:00
2006-01-05 22:16:26 -08:00
2005-09-05 09:14:17 -07:00
2005-04-16 15:20:36 -07:00
2006-09-26 15:38:51 -07:00
2006-04-25 14:10:40 +01:00
2005-10-28 14:02:10 -07:00
2006-09-26 15:38:52 -07:00
2005-04-16 15:20:36 -07:00
2005-10-28 14:02:09 -07:00
2006-09-30 09:36:56 -07:00
2005-09-05 09:14:31 -07:00
2006-06-22 11:10:33 -07:00
2006-11-30 12:24:45 +00:00
2006-09-26 15:38:52 -07:00
2006-05-04 17:32:44 +01:00
2006-12-07 08:39:40 -08:00
2005-04-16 15:20:36 -07:00
2005-09-14 08:33:24 -04:00
2006-12-02 21:23:26 -08:00
2006-12-02 21:23:26 -08:00
2006-10-05 15:10:12 +01:00
2006-07-03 15:27:02 -07:00
2006-09-22 15:20:29 -07:00
2005-04-16 15:20:36 -07:00
2006-09-28 18:02:13 -07:00
2005-06-26 17:54:11 -04:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-03-03 20:58:00 -05:00
2005-08-29 16:10:54 -07:00
2006-05-16 23:25:37 +01:00
2006-04-26 12:56:16 +01:00
2005-08-29 16:10:54 -07:00
2005-04-16 15:20:36 -07:00
2006-09-28 18:02:50 -07:00
2005-05-05 14:25:59 -07:00
2006-12-02 21:21:24 -08:00
2005-04-16 15:20:36 -07:00
2005-11-08 09:40:47 -08:00
2006-01-03 13:11:23 -08:00
2005-07-05 15:03:46 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-04-26 12:56:16 +01:00
2005-09-01 17:40:05 -07:00
2006-12-02 21:21:17 -08:00
2006-10-10 16:15:34 -07:00
2005-11-09 07:55:57 -08:00
2005-04-16 15:20:36 -07:00
2006-09-28 18:02:50 -07:00
2006-12-04 02:00:34 -05:00
2006-12-02 21:21:21 -08:00
2005-04-16 15:20:36 -07:00
2006-12-02 21:22:46 -08:00
2006-09-28 18:02:29 -07:00
2006-12-02 22:04:04 -08:00
2006-12-02 21:22:50 -08:00
2006-12-08 08:28:52 -08:00
2006-11-20 11:47:18 -08:00
2005-04-16 15:20:36 -07:00
2006-06-20 05:25:19 -04:00
2006-11-24 00:43:09 -05:00
2006-12-07 08:39:20 -08:00
2006-10-11 11:14:23 -07:00
2006-10-05 15:10:12 +01:00
2006-10-10 15:37:22 -07:00
2005-09-07 16:57:20 -07:00
2005-04-16 15:20:36 -07:00
2006-12-01 14:36:58 -08:00
2006-08-21 10:02:50 +02:00
2006-12-02 21:21:21 -08:00
2005-04-16 15:20:36 -07:00
2006-12-02 21:23:26 -08:00
2006-10-04 07:55:12 -07:00
2006-12-07 08:39:47 -08:00
2006-12-07 08:39:47 -08:00
2006-12-07 08:39:47 -08:00
2006-10-04 00:31:09 -07:00
2006-03-20 17:06:24 -08:00
2006-12-02 21:21:21 -08:00
2006-11-05 14:11:24 -08:00
2006-03-20 22:21:10 -08:00
2006-04-26 12:56:16 +01:00
2006-10-20 10:26:37 -07:00
2006-11-26 16:27:17 -08:00
2006-06-23 07:43:08 -07:00
2006-06-21 12:40:49 -07:00
2006-04-26 12:56:16 +01:00
2005-04-16 15:20:36 -07:00
2006-04-26 12:56:16 +01:00
2006-12-08 08:28:57 -08:00
2006-04-26 12:56:16 +01:00
2006-01-10 08:02:01 -08:00
2006-09-24 11:13:19 -04:00
2006-12-08 08:29:00 -08:00
2006-11-30 05:24:39 +01:00
2006-12-07 08:39:40 -08:00
2006-12-07 08:39:40 -08:00
2006-09-24 11:13:19 -04:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-11-30 04:53:49 +01:00
2005-04-16 15:20:36 -07:00
2006-06-03 00:27:53 +01:00
2006-10-03 08:03:41 -07:00
2005-04-16 15:20:36 -07:00
2006-11-22 14:54:01 +00:00
2006-12-07 08:39:44 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-04-26 12:56:16 +01:00
2006-12-08 08:28:51 -08:00
2006-12-04 12:45:29 -08:00
2006-12-07 15:39:22 -08:00
2005-10-30 17:37:23 -08:00
2006-06-29 10:26:20 -07:00
2006-04-02 00:10:28 -05:00
2006-01-08 20:13:53 -08:00
2005-10-08 15:00:57 -07:00
2005-09-07 18:26:54 -07:00
2006-03-06 18:40:44 -08:00
2006-10-01 00:39:33 -07:00
2006-03-20 13:42:58 -08:00
2006-12-01 14:52:01 -08:00
2006-12-07 08:39:38 -08:00
2005-04-16 15:20:36 -07:00
2006-07-14 21:53:52 -07:00
2006-12-07 08:39:37 -08:00
2005-04-16 15:20:36 -07:00
2006-10-01 00:39:19 -07:00
2005-04-16 15:20:36 -07:00
2006-09-29 09:18:13 -07:00
2006-12-05 17:01:28 +00:00
2006-09-14 01:31:27 -04:00
2006-06-09 21:53:55 +02:00
2005-04-16 15:20:36 -07:00
2006-09-26 10:52:34 +02:00
2005-04-16 15:20:36 -07:00
2006-09-29 09:18:05 -07:00
2005-04-16 15:20:36 -07:00
2006-09-19 08:45:18 -04:00
2006-07-31 15:44:29 -04:00
2006-12-07 08:39:39 -08:00
2006-12-08 08:28:51 -08:00
2006-09-29 09:18:06 -07:00
2005-04-16 15:20:36 -07:00
2006-06-22 11:10:32 -07:00
2006-06-05 12:29:17 -07:00
2006-10-11 11:14:15 -07:00
2006-03-25 08:22:53 -08:00
2005-04-16 15:20:36 -07:00
2005-10-28 08:16:47 -07:00
2005-04-16 15:20:36 -07:00
2006-07-10 13:24:25 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-10-01 00:39:18 -07:00
2006-10-01 00:39:18 -07:00
2006-10-21 13:35:06 -07:00
2006-03-26 08:57:00 -08:00
2005-04-16 15:20:36 -07:00
2006-06-25 10:00:55 -07:00
2006-04-29 01:53:47 +01:00
2006-09-24 11:13:19 -04:00
2006-12-01 14:51:59 -08:00
2006-03-22 07:53:57 -08:00
2006-09-27 08:26:12 -07:00
2006-12-07 08:39:25 -08:00
2006-04-26 12:56:16 +01:00
2005-04-16 15:20:36 -07:00
2006-12-07 08:39:46 -08:00
2006-12-08 08:28:51 -08:00
2006-09-27 08:26:19 -07:00
2006-12-08 08:28:39 -08:00
2005-04-16 15:20:36 -07:00
2006-12-07 08:39:34 -08:00
2006-12-08 08:28:51 -08:00
2006-09-30 20:52:31 +02:00
2006-11-30 04:40:22 +01:00
2006-09-28 18:02:22 -07:00
2006-11-16 11:43:38 -08:00
2006-12-07 08:39:38 -08:00
2006-10-04 07:55:29 -07:00
2005-04-16 15:20:36 -07:00
2006-07-03 15:27:04 -07:00
2006-12-08 08:28:39 -08:00
2006-12-02 00:22:29 -05:00
2005-12-24 15:37:00 -08:00
2006-12-08 08:28:40 -08:00
2006-12-07 08:39:47 -08:00
2006-03-23 07:38:14 -08:00
2006-11-22 14:57:56 +00:00
2006-10-01 00:39:23 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-01-08 20:14:07 -08:00
2006-09-22 14:54:04 -07:00
2006-12-02 21:22:57 -08:00
2006-12-04 02:00:34 -05:00
2006-04-26 12:56:16 +01:00
2006-12-02 21:22:56 -08:00
2005-08-29 16:00:54 -07:00
2006-12-02 21:23:38 -08:00
2006-12-02 21:23:38 -08:00
2006-12-04 12:45:29 -08:00
2006-12-02 21:30:43 -08:00
2006-12-05 19:36:26 +00:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-07-10 13:24:27 -07:00
2006-03-20 13:44:40 -05:00
2006-11-22 14:54:01 +00:00
2006-12-06 10:46:40 -05:00
2006-09-22 23:24:32 -04:00
2005-06-22 16:07:24 -04:00
2006-12-06 10:46:39 -05:00
2006-12-06 10:46:38 -05:00
2006-04-25 14:51:45 +01:00
2005-06-22 16:07:23 -04:00
2005-06-24 00:06:32 -07:00
2005-04-16 15:20:36 -07:00
2006-12-07 02:14:01 +01:00
2006-08-27 11:01:32 -07:00
2006-10-11 11:14:22 -07:00
2006-10-04 07:55:30 -07:00
2006-07-14 21:53:54 -07:00
2006-12-08 08:28:52 -08:00
2005-04-16 15:20:36 -07:00
2006-04-26 12:56:16 +01:00
2005-06-25 16:25:03 -07:00
2006-10-20 10:26:38 -07:00
2006-03-28 09:16:05 -08:00
2006-09-29 09:18:03 -07:00
2006-10-28 11:30:50 -07:00
2006-01-08 20:13:52 -08:00
2005-04-16 15:20:36 -07:00
2006-01-06 08:33:58 -08:00
2006-10-05 15:10:12 +01:00
2005-04-16 15:20:36 -07:00
2006-12-01 22:40:28 -05:00
2005-05-05 16:36:31 -07:00
2006-10-18 11:36:12 -07:00
2006-12-08 08:28:53 -08:00
2006-12-01 14:36:56 -08:00
2006-06-11 14:02:27 -07:00
2006-12-01 14:36:59 -08:00
2006-09-26 17:43:53 -07:00
2006-06-23 07:43:06 -07:00
2006-10-06 08:53:41 -07:00
2006-11-13 07:40:42 -08:00
2006-12-06 18:38:51 -08:00
2006-03-27 08:44:48 -08:00
2005-04-16 15:20:36 -07:00
2005-11-09 07:55:57 -08:00
2006-12-02 00:33:11 -05:00
2006-12-08 08:28:52 -08:00
2006-12-08 08:28:52 -08:00
2006-05-04 06:55:12 +02:00
2006-09-22 15:18:12 -07:00
2006-01-03 13:11:05 -08:00
2006-12-08 08:28:38 -08:00
2006-12-01 14:52:02 -08:00
2006-06-28 15:54:27 -07:00
2006-07-12 16:09:08 -07:00
2006-11-03 12:27:58 -08:00
2006-07-31 13:28:45 -07:00
2006-06-27 09:24:00 -07:00
2005-04-16 15:20:36 -07:00
2006-07-03 19:48:25 -07:00
2006-12-04 02:00:36 -05:00
2005-06-23 09:45:33 -07:00
2005-10-08 15:00:57 -07:00
2005-04-16 15:20:36 -07:00
2006-09-29 09:18:15 -07:00
2006-10-03 23:01:26 +02:00
2005-04-16 15:20:36 -07:00
2006-05-04 12:07:37 +01:00
2005-11-08 09:40:47 -08:00
2006-06-09 21:24:13 +10:00
2006-04-26 12:56:16 +01:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-10-02 07:57:13 -07:00
2006-12-07 08:39:36 -08:00
2005-04-16 15:20:36 -07:00
2006-09-29 09:18:16 -07:00
2005-04-16 15:20:36 -07:00
2006-09-24 11:13:19 -04:00
2005-06-24 14:14:24 -07:00
2006-04-25 14:52:13 +01:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-12-07 08:39:44 -08:00
2005-04-16 15:20:36 -07:00
2006-12-07 08:39:25 -08:00
2006-10-04 13:27:26 -05:00
2006-09-30 20:52:18 +02:00
2006-12-02 21:22:51 -08:00
2005-04-16 15:20:36 -07:00
2006-09-30 20:26:56 +02:00
2006-10-04 07:55:31 -07:00
2005-05-01 08:58:49 -07:00
2006-06-25 10:01:06 -07:00
2006-09-29 09:18:11 -07:00
2006-09-29 09:18:11 -07:00
2006-12-05 14:37:56 +00:00
2006-12-08 08:28:40 -08:00
2006-09-29 09:18:11 -07:00
2006-12-07 08:39:46 -08:00
2006-06-25 10:01:06 -07:00
2006-09-26 08:49:04 -07:00
2006-04-26 12:56:16 +01:00
2005-11-07 07:53:46 -08:00
2005-11-07 07:53:46 -08:00
2006-04-26 12:56:16 +01:00
2006-12-07 08:39:25 -08:00
2005-04-16 15:20:36 -07:00
2006-07-13 13:21:35 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-11-07 14:25:38 +01:00
2006-06-25 10:01:14 -07:00
2006-10-05 15:10:12 +01:00
2006-12-07 08:39:36 -08:00
2006-12-02 21:30:44 -08:00
2006-12-07 08:39:36 -08:00
2006-07-10 13:24:14 -07:00
2005-04-16 15:20:36 -07:00
2006-09-21 11:46:16 +10:00
2006-04-26 12:56:16 +01:00
2006-12-08 08:29:02 -08:00
2006-12-07 02:14:04 +01:00
2006-12-02 21:26:16 -08:00
2006-09-29 09:18:06 -07:00
2006-10-04 07:55:14 -07:00
2005-04-16 15:20:36 -07:00
2006-01-08 20:14:07 -08:00
2006-04-26 12:56:16 +01:00
2005-04-16 15:20:36 -07:00
2006-12-02 21:21:34 -08:00
2005-04-16 15:20:36 -07:00
2005-08-29 16:00:54 -07:00
2006-09-26 08:48:52 -07:00
2006-04-25 14:55:13 +01:00
2006-12-07 08:39:46 -08:00
2006-07-03 15:27:02 -07:00
2005-04-16 15:20:36 -07:00
2006-12-07 08:39:35 -08:00
2006-12-08 08:28:57 -08:00
2005-10-29 19:31:54 +01:00
2006-02-23 09:49:35 +00:00
2005-10-30 17:37:32 -08:00
2006-04-26 12:56:16 +01:00
2006-11-23 23:34:49 -05:00
2005-11-07 07:53:37 -08:00
2006-09-29 09:18:24 -07:00
2006-12-07 08:39:22 -08:00
2006-12-07 08:39:25 -08:00
2006-12-07 08:39:25 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-10-10 16:15:34 -07:00
2005-04-16 15:20:36 -07:00
2006-09-27 08:26:18 -07:00
2005-04-16 15:20:36 -07:00
2006-04-26 12:56:16 +01:00
2006-12-07 08:39:38 -08:00
2006-09-22 14:55:16 -07:00
2006-12-02 21:23:32 -08:00
2006-12-02 21:22:23 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-09-07 16:57:24 -07:00
2005-04-16 15:20:36 -07:00
2006-10-04 07:55:32 -07:00
2005-05-05 16:36:31 -07:00
2006-11-25 13:28:34 -08:00
2006-07-03 15:27:04 -07:00
2006-07-03 15:27:04 -07:00
2006-07-03 15:27:04 -07:00
2006-07-03 15:27:04 -07:00
2006-12-07 08:39:20 -08:00
2006-10-04 07:55:30 -07:00
2006-09-26 10:52:34 +02:00
2006-12-08 08:28:59 -08:00
2006-12-07 02:14:08 +01:00
2006-10-03 08:03:40 -07:00
2006-03-26 08:57:00 -08:00
2006-10-01 00:39:18 -07:00
2006-04-26 12:56:16 +01:00
2006-10-01 00:39:19 -07:00
2005-04-16 15:20:36 -07:00
2005-11-07 07:53:28 -08:00
2006-12-07 08:39:27 -08:00
2006-12-07 08:39:27 -08:00
2006-06-23 07:42:50 -07:00
2006-10-01 00:39:22 -07:00
2005-04-16 15:20:36 -07:00
2006-10-11 11:14:21 -07:00
2006-12-02 21:30:56 -08:00
2006-06-21 12:40:48 -07:00
2006-12-01 14:52:01 -08:00
2006-10-05 15:10:12 +01:00
2005-04-16 15:20:36 -07:00
2006-12-07 08:39:34 -08:00
2006-10-01 00:39:29 -07:00
2006-12-02 21:30:54 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-06-23 20:59:16 -07:00
2006-11-30 05:32:19 +01:00
2006-12-02 21:30:42 -08:00
2005-11-13 18:14:14 -08:00
2006-04-26 12:56:16 +01:00
2005-04-16 15:20:36 -07:00
2006-10-08 12:32:36 -07:00
2006-07-14 21:53:56 -07:00
2006-04-26 12:56:16 +01:00
2005-04-16 15:20:36 -07:00
2006-10-06 08:53:40 -07:00
2006-03-31 12:18:56 -08:00
2006-12-02 21:21:08 -08:00
2006-10-18 19:55:22 -07:00
2006-10-03 08:04:06 -07:00
2005-04-16 15:20:36 -07:00
2005-08-14 17:21:27 -05:00
2006-09-28 17:53:59 -07:00
2006-10-01 00:39:29 -07:00
2006-12-08 08:28:56 -08:00
2006-06-28 14:59:05 -07:00
2006-12-08 08:28:56 -08:00
2006-12-08 08:28:56 -08:00
2006-12-04 19:41:15 -08:00
2006-12-07 08:59:11 -08:00
2006-03-25 08:23:01 -08:00
2006-03-23 07:38:14 -08:00
2006-01-03 13:19:13 +01:00
2006-12-02 21:23:26 -08:00
2006-06-25 10:01:03 -07:00
2006-02-03 08:32:04 -08:00
2006-11-03 12:27:56 -08:00
2006-07-19 01:41:09 -04:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-10-02 07:57:23 -07:00
2006-10-21 18:37:01 +02:00
2006-07-12 16:03:21 -07:00
2006-07-12 16:03:24 -07:00
2005-04-16 15:20:36 -07:00
2006-09-27 11:58:54 -07:00
2006-12-05 14:37:56 +00:00
2006-09-24 11:13:19 -04:00
2005-04-16 15:20:36 -07:00
2006-10-01 00:39:19 -07:00
2005-04-16 15:20:36 -07:00
2006-10-04 07:55:12 -07:00
2006-09-26 10:52:37 +02:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-01-09 15:32:31 -02:00
2005-04-16 15:20:36 -07:00
2006-10-14 00:44:23 -03:00
2006-09-10 13:45:55 -03:00
2005-04-16 15:20:36 -07:00
2006-11-13 07:40:42 -08:00
2006-09-29 09:18:13 -07:00
2006-04-26 12:56:16 +01:00
2006-10-02 07:57:13 -07:00
2006-08-27 11:01:29 -07:00
2006-10-30 12:08:40 -08:00
2006-04-25 15:00:56 +01:00
2006-06-20 19:00:30 +02:00
2006-12-02 00:11:58 -05:00
2006-12-07 09:28:19 -08:00
2006-10-20 10:26:35 -07:00
2006-03-22 00:01:31 -08:00
2006-10-09 14:20:38 -07:00
2006-12-02 22:22:25 -08:00
2005-04-16 15:20:36 -07:00
2006-06-22 15:05:58 -07:00
2006-06-22 15:05:58 -07:00
2005-04-16 15:20:36 -07:00
2006-06-23 07:43:00 -07:00
2006-06-22 15:05:58 -07:00