* GFS2: Pre-pull patch posting
@ 2008-09-26 12:00 Steven Whitehouse
0 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2008-09-26 12:00 UTC (permalink / raw)
To: linux-kernel, cluster-devel
I'm guessing that the merge window opening might not be too far
away now, and in any case, I won't have quite my normal internet
access next week. So I'm pushing out the current GFS2 tree so
that (I hope) there will be time to fix any issues.
Again, there are fewer patches here. A lot of them are fairly small
too. The most noteable item deals with the meta filesystem which
was in response to Al Viro's suggestions concerning a better way
to structure that code. It certainly results in a much cleaner
implementation, so thanks go to Al for pointing that out.
A couple of new features: I/O barrier support (needs no user
configuration, see the patch for details) and UUID support
(no code changes, its all userland but we reserve space in
the super block, again details in the patch itself).
I know that I hardly need say, but please let me know if you have any
comments :-)
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* GFS2: Pre-pull patch posting
@ 2008-12-17 11:29 swhiteho
0 siblings, 0 replies; 19+ messages in thread
From: swhiteho @ 2008-12-17 11:29 UTC (permalink / raw)
To: linux-kernel, cluster-devel
In preparation for the next merge window, here is the current content
of the GFS2 git tree. Firstly, we have one new feature, which is
support for the FIEMAP ioctl. That patch does touch some code
outside of GFS2 itself, but its the only patch in this series which
does so.
The remaining patches are mostly clean up and bug fixes, as usual.
They are working towards a point where I can submit a patch to finally
merge the lock_dlm module (not dlm itself I should emphasise) into
GFS2. That is a large patch and a preliminary version has already been
posted to cluster-devel. My plan is to put that patch into my -nmw
git tree as the first patch for the following merge window to give
it maximum exposure.
The other highlight of this patch series, is a patch which removes
the two daemons (gfs2_scand and gfs2_glockd) and replaces them with
a "shrinker" routine registered with the VM. As expected, this also
reduces the code size. We are also expecting do do a similar thing
with the GFS2 quota data strucutures at some point in the future.
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* GFS2: Pre-pull patch posting
@ 2009-06-10 8:30 Steven Whitehouse
0 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2009-06-10 8:30 UTC (permalink / raw)
To: linux-kernel, cluster-devel
Hi,
As the merge window is more or less upon us, here is the content
of the GFS2 -nmw tree. There is nothing too startling this time
as the focus has very much been bug fixes and clean up.
We have a new mount option, commit= which does exactly the same
thing as the ext3 equivalent option. We have a long term plan to
make all the tunable parameters available as mount options and
thus to be able to eventually drop the sysfs interface to these
parameters.
Another long term plan is to get rid of the files named
ops_somethingorother and to either merge them into other
files, or rename them to not have the ops_ prefix. This
patch series makes a start on that, and does all the easy
ones. As a result some functions with only one caller are
moved to the same file as their caller and made static.
The docs are also updated to reflect the fact that the
lock_dlm interface module no longer exists and that interface is
now built into GFS2.
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* GFS2: Pre-pull patch posting
@ 2009-09-10 11:27 Steven Whitehouse
2009-09-10 14:46 ` Daniel Walker
0 siblings, 1 reply; 19+ messages in thread
From: Steven Whitehouse @ 2009-09-10 11:27 UTC (permalink / raw)
To: linux-kernel, cluster-devel
As merge time is approaching, here is the current content of the
GFS2 -nmw git tree. I'm not expecting to take any more patches
now for the current merge window unless any last minute bugs
are discovered.
There is not a huge amount new this time. Some extra context for
uevent messages, better error handling during block allocation,
and a clean up of extended attribute support. There is still more
to do on the extended attribute side of things, but this is a good
start I think.
There are a few bug fixes as well. Once these patches are merged
I'm intending to start off the next -nmw tree with a patch to
remove some of the (now unused) sysfs files as per the message
on cluster-devel a few weeks back.
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: GFS2: Pre-pull patch posting
2009-09-10 11:27 Steven Whitehouse
@ 2009-09-10 14:46 ` Daniel Walker
2009-09-14 7:57 ` Steven Whitehouse
0 siblings, 1 reply; 19+ messages in thread
From: Daniel Walker @ 2009-09-10 14:46 UTC (permalink / raw)
To: Steven Whitehouse; +Cc: linux-kernel, cluster-devel
On Thu, 2009-09-10 at 12:27 +0100, Steven Whitehouse wrote:
> As merge time is approaching, here is the current content of the
> GFS2 -nmw git tree. I'm not expecting to take any more patches
> now for the current merge window unless any last minute bugs
> are discovered.
>
> There is not a huge amount new this time. Some extra context for
> uevent messages, better error handling during block allocation,
> and a clean up of extended attribute support. There is still more
> to do on the extended attribute side of things, but this is a good
> start I think.
>
> There are a few bug fixes as well. Once these patches are merged
> I'm intending to start off the next -nmw tree with a patch to
> remove some of the (now unused) sysfs files as per the message
> on cluster-devel a few weeks back.
This patch set has a couple of checkpatch issues..
Patch 3,
ERROR: code indent should use tabs where possible
#83: FILE: fs/gfs2/rgrp.c:1466:
+^I (unsigned long long)rgd->rd_addr);$
Patch 11,
ERROR: trailing whitespace
#741: FILE: fs/gfs2/eattr.c:565:
+^Iif (size) $
and patch 12,
ERROR: trailing whitespace
#2349: FILE: fs/gfs2/xattr.c:565:
+^Iif (size) $
ERROR: space required after that ',' (ctx:VxV)
#2833: FILE: fs/gfs2/xattr.c:1049:
+ return ea_remove_unstuffed(ip, el->el_bh, el->el_ea, el->el_prev,0);
ERROR: code indent should use tabs where possible
#3370: FILE: fs/gfs2/xattr.h:22:
+ (sizeof(__be64) * (ea)->ea_num_ptrs)), 8)$
Could you correct these prior to you pull request?
Daniel
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: GFS2: Pre-pull patch posting
2009-09-10 14:46 ` Daniel Walker
@ 2009-09-14 7:57 ` Steven Whitehouse
2009-09-14 14:15 ` Daniel Walker
0 siblings, 1 reply; 19+ messages in thread
From: Steven Whitehouse @ 2009-09-14 7:57 UTC (permalink / raw)
To: Daniel Walker; +Cc: linux-kernel, cluster-devel
Hi,
On Thu, 2009-09-10 at 07:46 -0700, Daniel Walker wrote:
> On Thu, 2009-09-10 at 12:27 +0100, Steven Whitehouse wrote:
> > As merge time is approaching, here is the current content of the
> > GFS2 -nmw git tree. I'm not expecting to take any more patches
> > now for the current merge window unless any last minute bugs
> > are discovered.
> >
> > There is not a huge amount new this time. Some extra context for
> > uevent messages, better error handling during block allocation,
> > and a clean up of extended attribute support. There is still more
> > to do on the extended attribute side of things, but this is a good
> > start I think.
> >
> > There are a few bug fixes as well. Once these patches are merged
> > I'm intending to start off the next -nmw tree with a patch to
> > remove some of the (now unused) sysfs files as per the message
> > on cluster-devel a few weeks back.
>
> This patch set has a couple of checkpatch issues..
>
> Patch 3,
>
> ERROR: code indent should use tabs where possible
> #83: FILE: fs/gfs2/rgrp.c:1466:
> +^I (unsigned long long)rgd->rd_addr);$
>
>
Now fixed in the latest -nmw tree.
> Patch 11,
>
> ERROR: trailing whitespace
> #741: FILE: fs/gfs2/eattr.c:565:
> +^Iif (size) $
>
> and patch 12,
>
> ERROR: trailing whitespace
> #2349: FILE: fs/gfs2/xattr.c:565:
> +^Iif (size) $
>
This is the same line of code. There is no need to report it twice.
> ERROR: space required after that ',' (ctx:VxV)
> #2833: FILE: fs/gfs2/xattr.c:1049:
> + return ea_remove_unstuffed(ip, el->el_bh, el->el_ea, el->el_prev,0);
>
> ERROR: code indent should use tabs where possible
> #3370: FILE: fs/gfs2/xattr.h:22:
> + (sizeof(__be64) * (ea)->ea_num_ptrs)), 8)$
>
> Could you correct these prior to you pull request?
>
> Daniel
>
The above two are both part of the context rather than something I've
added. I've fixed them anyway though,
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: GFS2: Pre-pull patch posting
2009-09-14 7:57 ` Steven Whitehouse
@ 2009-09-14 14:15 ` Daniel Walker
0 siblings, 0 replies; 19+ messages in thread
From: Daniel Walker @ 2009-09-14 14:15 UTC (permalink / raw)
To: Steven Whitehouse; +Cc: linux-kernel, cluster-devel
On Mon, 2009-09-14 at 08:57 +0100, Steven Whitehouse wrote:
> > ERROR: code indent should use tabs where possible
> > #83: FILE: fs/gfs2/rgrp.c:1466:
> > +^I (unsigned long long)rgd->rd_addr);$
> >
> >
> Now fixed in the latest -nmw tree.
>
Ok, Thank you.
Daniel
^ permalink raw reply [flat|nested] 19+ messages in thread
* GFS2: Pre-pull patch posting
@ 2010-03-01 15:08 Steven Whitehouse
0 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2010-03-01 15:08 UTC (permalink / raw)
To: linux-kernel, cluster-devel
Hi,
Not so many patches for GFS2 this merge window. The bulk of the changes are
aimed at reducing overheads when caching large numbers of inodes and
the consequent simplification of the umount code,
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* GFS2: Pre-pull patch posting
@ 2010-03-11 17:21 Steven Whitehouse
0 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2010-03-11 17:21 UTC (permalink / raw)
To: linux-kernel, cluster-devel
Here are three small (but important!) fixes to GFS2.
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* GFS2: Pre-pull patch posting
@ 2010-05-17 12:40 Steven Whitehouse
0 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2010-05-17 12:40 UTC (permalink / raw)
To: linux-kernel, cluster-devel
Hi,
Nothing very exciting this time.... mostly minor bug fixes and
a docs update. The gfs2_logd patch has been hanging around for
a long time and is now finally integrated. It is the first step
towards a longer term goal of improving performance in that
area,
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* GFS2: Pre-pull patch posting
@ 2010-08-02 9:27 Steven Whitehouse
0 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2010-08-02 9:27 UTC (permalink / raw)
To: linux-kernel, cluster-devel
Hi,
Here is the current content of the GFS2 -nmw git tree. Mostly its
just clean up and bug fixes this time. There is one exception which
is the "wait for journal id" patch which is a new feature aimed
at (eventually) allowing us to simplify the userland support which
GFS2 requires,
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* GFS2: Pre-pull patch posting
@ 2010-10-18 14:15 Steven Whitehouse
0 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2010-10-18 14:15 UTC (permalink / raw)
To: linux-kernel, cluster-devel
Hi,
I know the merge window isn't open yet, but at this stage I'm going to
hold off on any larger patches until the following merge window so this
patch set isn't likely to change much, hence kicking it out a bit early
for review.
There are a few interesting points to note in this patch set:
o GFS2 is updated to use the new truncate sequence
o Support for fallocate is added
o Clean up of some unused/obsolete mount options
I'm currently working on a patch to allow the glock hash table
to use RCU. That is currently a work-in-progress and that will
hopefully be ready for the succeeding merge window.
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* GFS2: Pre-pull patch posting
@ 2013-01-03 11:50 Steven Whitehouse
2013-01-03 11:50 ` [PATCH 1/4] GFS2: Initialize hex string to '0' Steven Whitehouse
` (3 more replies)
0 siblings, 4 replies; 19+ messages in thread
From: Steven Whitehouse @ 2013-01-03 11:50 UTC (permalink / raw)
To: cluster-devel, linux-kernel
Hi,
Here are four small bug fixes for GFS2. There is no common theme here
really, just a few items that were fixed recently. The first fixes
lock name generation when the glock number is 0. The second fixes a
race allocating reservation structures and the final two fix a performance
issue by making small changes in the allocation code,
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 1/4] GFS2: Initialize hex string to '0'
2013-01-03 11:50 GFS2: Pre-pull patch posting Steven Whitehouse
@ 2013-01-03 11:50 ` Steven Whitehouse
2013-01-03 11:50 ` [PATCH 2/4] GFS2: Fix race in gfs2_rs_alloc Steven Whitehouse
` (2 subsequent siblings)
3 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2013-01-03 11:50 UTC (permalink / raw)
To: cluster-devel, linux-kernel; +Cc: Nathan Straz, Steven Whitehouse
From: Nathan Straz <nstraz@redhat.com>
When generating the DLM lock name, a value of 0 would skip
the loop and leave the string unchanged. This left locks with
a value of 0 unlabeled. Initializing the string to '0' fixes this.
Signed-off-by: Nathan Straz <nstraz@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
diff --git a/fs/gfs2/lock_dlm.c b/fs/gfs2/lock_dlm.c
index 8dad6b0..b906ed1 100644
--- a/fs/gfs2/lock_dlm.c
+++ b/fs/gfs2/lock_dlm.c
@@ -241,6 +241,7 @@ static u32 make_flags(struct gfs2_glock *gl, const unsigned int gfs_flags,
static void gfs2_reverse_hex(char *c, u64 value)
{
+ *c = '0';
while (value) {
*c-- = hex_asc[value & 0x0f];
value >>= 4;
--
1.7.4
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 2/4] GFS2: Fix race in gfs2_rs_alloc
2013-01-03 11:50 GFS2: Pre-pull patch posting Steven Whitehouse
2013-01-03 11:50 ` [PATCH 1/4] GFS2: Initialize hex string to '0' Steven Whitehouse
@ 2013-01-03 11:50 ` Steven Whitehouse
2013-01-03 11:50 ` [PATCH 3/4] GFS2: Stop looking for free blocks at end of rgrp Steven Whitehouse
2013-01-03 11:50 ` [PATCH 4/4] GFS2: Reset rd_last_alloc when it reaches the end of the rgrp Steven Whitehouse
3 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2013-01-03 11:50 UTC (permalink / raw)
To: cluster-devel, linux-kernel; +Cc: Abhijith Das, Steven Whitehouse
From: Abhijith Das <adas@redhat.com>
QE aio tests uncovered a race condition in gfs2_rs_alloc where it's possible
to come out of the function with a valid ip->i_res allocation but it gets
freed before use resulting in a NULL ptr dereference.
This patch envelopes the initial short-circuit check for non-NULL ip->i_res
into the mutex lock. With this patch, I was able to successfully run the
reproducer test multiple times.
Resolves: rhbz#878476
Signed-off-by: Abhi Das <adas@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 37ee061..738b388 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -557,22 +557,20 @@ void gfs2_free_clones(struct gfs2_rgrpd *rgd)
*/
int gfs2_rs_alloc(struct gfs2_inode *ip)
{
- struct gfs2_blkreserv *res;
+ int error = 0;
+ down_write(&ip->i_rw_mutex);
if (ip->i_res)
- return 0;
-
- res = kmem_cache_zalloc(gfs2_rsrv_cachep, GFP_NOFS);
- if (!res)
- return -ENOMEM;
+ goto out;
- RB_CLEAR_NODE(&res->rs_node);
+ ip->i_res = kmem_cache_zalloc(gfs2_rsrv_cachep, GFP_NOFS);
+ if (!ip->i_res) {
+ error = -ENOMEM;
+ goto out;
+ }
- down_write(&ip->i_rw_mutex);
- if (ip->i_res)
- kmem_cache_free(gfs2_rsrv_cachep, res);
- else
- ip->i_res = res;
+ RB_CLEAR_NODE(&ip->i_res->rs_node);
+out:
up_write(&ip->i_rw_mutex);
return 0;
}
--
1.7.4
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 3/4] GFS2: Stop looking for free blocks at end of rgrp
2013-01-03 11:50 GFS2: Pre-pull patch posting Steven Whitehouse
2013-01-03 11:50 ` [PATCH 1/4] GFS2: Initialize hex string to '0' Steven Whitehouse
2013-01-03 11:50 ` [PATCH 2/4] GFS2: Fix race in gfs2_rs_alloc Steven Whitehouse
@ 2013-01-03 11:50 ` Steven Whitehouse
2013-01-03 11:50 ` [PATCH 4/4] GFS2: Reset rd_last_alloc when it reaches the end of the rgrp Steven Whitehouse
3 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2013-01-03 11:50 UTC (permalink / raw)
To: cluster-devel, linux-kernel; +Cc: Bob Peterson, Steven Whitehouse
From: Bob Peterson <rpeterso@redhat.com>
This patch adds a return code check after calling function
gfs2_rbm_from_block while determining the free extent size.
That way, when the end of an rgrp is reached, it won't try
to process unaligned blocks after the end.
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 738b388..712dd4f 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -350,10 +350,14 @@ static u32 gfs2_free_extlen(const struct gfs2_rbm *rrbm, u32 len)
BUG_ON(len < chunk_size);
len -= chunk_size;
block = gfs2_rbm_to_block(&rbm);
- gfs2_rbm_from_block(&rbm, block + chunk_size);
- n_unaligned = 3;
- if (ptr)
+ if (gfs2_rbm_from_block(&rbm, block + chunk_size)) {
+ n_unaligned = 0;
break;
+ }
+ if (ptr) {
+ n_unaligned = 3;
+ break;
+ }
n_unaligned = len & 3;
}
--
1.7.4
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 4/4] GFS2: Reset rd_last_alloc when it reaches the end of the rgrp
2013-01-03 11:50 GFS2: Pre-pull patch posting Steven Whitehouse
` (2 preceding siblings ...)
2013-01-03 11:50 ` [PATCH 3/4] GFS2: Stop looking for free blocks at end of rgrp Steven Whitehouse
@ 2013-01-03 11:50 ` Steven Whitehouse
3 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2013-01-03 11:50 UTC (permalink / raw)
To: cluster-devel, linux-kernel; +Cc: Bob Peterson, Steven Whitehouse
From: Bob Peterson <rpeterso@redhat.com>
In function rg_mblk_search, it's searching for multiple blocks in
a given state (e.g. "free"). If there's an active block reservation
its goal is the next free block of that. If the resource group
contains the dinode's goal block, that's used for the search. But
if neither is the case, it uses the rgrp's last allocated block.
That way, consecutive allocations appear after one another on media.
The problem comes in when you hit the end of the rgrp; it would never
start over and search from the beginning. This became a problem,
since if you deleted all the files and data from the rgrp, it would
never start over and find free blocks. So it had to keep searching
further out on the media to allocate blocks. This patch resets the
rd_last_alloc after it does an unsuccessful search at the end of
the rgrp.
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 712dd4f..b7eff07 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -1426,6 +1426,9 @@ static void rg_mblk_search(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip,
rs->rs_free = extlen;
rs->rs_inum = ip->i_no_addr;
rs_insert(ip);
+ } else {
+ if (goal == rgd->rd_last_alloc + rgd->rd_data0)
+ rgd->rd_last_alloc = 0;
}
}
--
1.7.4
^ permalink raw reply related [flat|nested] 19+ messages in thread
* GFS2: Pre-pull patch posting
@ 2013-04-05 9:57 Steven Whitehouse
0 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2013-04-05 9:57 UTC (permalink / raw)
To: linux-kernel, cluster-devel
Hi,
Here are a few GFS2 fixes which are pending. There are two patches
which fix up a couple of minor issues in the DLM interface code,
a missing error path in gfs2_rs_alloc(), two patches which fix problems
during "withdraw" and a fix for discards/FITRIM when using 4k sector
sized devices,
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
* GFS2: Pre-pull patch posting
@ 2015-02-10 10:36 Steven Whitehouse
0 siblings, 0 replies; 19+ messages in thread
From: Steven Whitehouse @ 2015-02-10 10:36 UTC (permalink / raw)
To: linux-kernel, cluster-devel
This time we have mostly clean ups. There is a bug fix for a NULL dereference
relating to ACLs, and another which improves (but does not fix entirely) an
allocation fall-back code path. The other three patches are small clean ups.
Steve.
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2015-02-10 10:36 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-03 11:50 GFS2: Pre-pull patch posting Steven Whitehouse
2013-01-03 11:50 ` [PATCH 1/4] GFS2: Initialize hex string to '0' Steven Whitehouse
2013-01-03 11:50 ` [PATCH 2/4] GFS2: Fix race in gfs2_rs_alloc Steven Whitehouse
2013-01-03 11:50 ` [PATCH 3/4] GFS2: Stop looking for free blocks at end of rgrp Steven Whitehouse
2013-01-03 11:50 ` [PATCH 4/4] GFS2: Reset rd_last_alloc when it reaches the end of the rgrp Steven Whitehouse
-- strict thread matches above, loose matches on Subject: below --
2015-02-10 10:36 GFS2: Pre-pull patch posting Steven Whitehouse
2013-04-05 9:57 Steven Whitehouse
2010-10-18 14:15 Steven Whitehouse
2010-08-02 9:27 Steven Whitehouse
2010-05-17 12:40 Steven Whitehouse
2010-03-11 17:21 Steven Whitehouse
2010-03-01 15:08 Steven Whitehouse
2009-09-10 11:27 Steven Whitehouse
2009-09-10 14:46 ` Daniel Walker
2009-09-14 7:57 ` Steven Whitehouse
2009-09-14 14:15 ` Daniel Walker
2009-06-10 8:30 Steven Whitehouse
2008-12-17 11:29 swhiteho
2008-09-26 12:00 Steven Whitehouse
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).