* [PATCH v2] Only call stat() when adding a disk if we expect a device to exist.
@ 2013-04-23 9:59 David Scott
2013-04-23 14:08 ` Roger Pau Monné
0 siblings, 1 reply; 9+ messages in thread
From: David Scott @ 2013-04-23 9:59 UTC (permalink / raw)
To: Ian.Campbell; +Cc: xen-devel, David Scott, roger.pau
We consider calling stat() a helpful error check in the following
circumstances only:
1. the disk backend type must be PHYsical
2. the disk backend domain must be the same as the running libxl
code (ie LIBXL_TOOLSTACK_DOMID)
3. there must not be a hotplug script because this would imply that
the device won't be created until after the hotplug script has
run.
With this fix, it is possible to use qemu's built-in block drivers
such as ceph/rbd, with a xl config disk spec like this:
disk=[ 'backendtype=qdisk,format=raw,vdev=hda,access=rw,target=rbd:rbd/ubuntu1204.img' ]
Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
---
tools/libxl/libxl_device.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
index eeea9d9..eb60fd5 100644
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -236,7 +236,9 @@ int libxl__device_disk_set_backend(libxl__gc *gc, libxl_device_disk *disk) {
return ERROR_INVAL;
}
memset(&a.stab, 0, sizeof(a.stab));
- } else if (!disk->script) {
+ } else if (disk->backend == LIBXL_DISK_BACKEND_PHY &&
+ disk->backend_domid == LIBXL_TOOLSTACK_DOMID &&
+ !disk->script) {
if (stat(disk->pdev_path, &a.stab)) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "Disk vdev=%s "
"failed to stat: %s",
--
1.8.1.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2] Only call stat() when adding a disk if we expect a device to exist.
2013-04-23 9:59 [PATCH v2] Only call stat() when adding a disk if we expect a device to exist David Scott
@ 2013-04-23 14:08 ` Roger Pau Monné
2013-04-24 11:56 ` Ian Campbell
0 siblings, 1 reply; 9+ messages in thread
From: Roger Pau Monné @ 2013-04-23 14:08 UTC (permalink / raw)
To: David Scott; +Cc: Ian Campbell, xen-devel
On 23/04/13 11:59, David Scott wrote:
> We consider calling stat() a helpful error check in the following
> circumstances only:
> 1. the disk backend type must be PHYsical
> 2. the disk backend domain must be the same as the running libxl
> code (ie LIBXL_TOOLSTACK_DOMID)
> 3. there must not be a hotplug script because this would imply that
> the device won't be created until after the hotplug script has
> run.
>
> With this fix, it is possible to use qemu's built-in block drivers
> such as ceph/rbd, with a xl config disk spec like this:
>
> disk=[ 'backendtype=qdisk,format=raw,vdev=hda,access=rw,target=rbd:rbd/ubuntu1204.img' ]
>
> Signed-off-by: David Scott <dave.scott@eu.citrix.com>
> Acked-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> tools/libxl/libxl_device.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
> index eeea9d9..eb60fd5 100644
> --- a/tools/libxl/libxl_device.c
> +++ b/tools/libxl/libxl_device.c
> @@ -236,7 +236,9 @@ int libxl__device_disk_set_backend(libxl__gc *gc, libxl_device_disk *disk) {
> return ERROR_INVAL;
> }
> memset(&a.stab, 0, sizeof(a.stab));
> - } else if (!disk->script) {
> + } else if (disk->backend == LIBXL_DISK_BACKEND_PHY &&
> + disk->backend_domid == LIBXL_TOOLSTACK_DOMID &&
> + !disk->script) {
> if (stat(disk->pdev_path, &a.stab)) {
> LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "Disk vdev=%s "
> "failed to stat: %s",
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] Only call stat() when adding a disk if we expect a device to exist.
2013-04-23 14:08 ` Roger Pau Monné
@ 2013-04-24 11:56 ` Ian Campbell
2013-04-26 10:55 ` Ian Campbell
0 siblings, 1 reply; 9+ messages in thread
From: Ian Campbell @ 2013-04-24 11:56 UTC (permalink / raw)
To: Roger Pau Monne; +Cc: Dave Scott, xen-devel
On Tue, 2013-04-23 at 15:08 +0100, Roger Pau Monne wrote:
> On 23/04/13 11:59, David Scott wrote:
> > We consider calling stat() a helpful error check in the following
> > circumstances only:
> > 1. the disk backend type must be PHYsical
> > 2. the disk backend domain must be the same as the running libxl
> > code (ie LIBXL_TOOLSTACK_DOMID)
> > 3. there must not be a hotplug script because this would imply that
> > the device won't be created until after the hotplug script has
> > run.
> >
> > With this fix, it is possible to use qemu's built-in block drivers
> > such as ceph/rbd, with a xl config disk spec like this:
> >
> > disk=[ 'backendtype=qdisk,format=raw,vdev=hda,access=rw,target=rbd:rbd/ubuntu1204.img' ]
> >
> > Signed-off-by: David Scott <dave.scott@eu.citrix.com>
> > Acked-by: Ian Campbell <ian.campbell@citrix.com>
>
> Acked-by: Roger Pau Monné <roger.pau@citrix.com>
Applied, thanks.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] Only call stat() when adding a disk if we expect a device to exist.
2013-04-24 11:56 ` Ian Campbell
@ 2013-04-26 10:55 ` Ian Campbell
2013-04-26 11:07 ` David Scott
0 siblings, 1 reply; 9+ messages in thread
From: Ian Campbell @ 2013-04-26 10:55 UTC (permalink / raw)
To: Roger Pau Monne; +Cc: Dave Scott, xen-devel
On Wed, 2013-04-24 at 12:56 +0100, Ian Campbell wrote:
> On Tue, 2013-04-23 at 15:08 +0100, Roger Pau Monne wrote:
> > On 23/04/13 11:59, David Scott wrote:
> > > We consider calling stat() a helpful error check in the following
> > > circumstances only:
> > > 1. the disk backend type must be PHYsical
> > > 2. the disk backend domain must be the same as the running libxl
> > > code (ie LIBXL_TOOLSTACK_DOMID)
> > > 3. there must not be a hotplug script because this would imply that
> > > the device won't be created until after the hotplug script has
> > > run.
> > >
> > > With this fix, it is possible to use qemu's built-in block drivers
> > > such as ceph/rbd, with a xl config disk spec like this:
> > >
> > > disk=[ 'backendtype=qdisk,format=raw,vdev=hda,access=rw,target=rbd:rbd/ubuntu1204.img' ]
> > >
> > > Signed-off-by: David Scott <dave.scott@eu.citrix.com>
> > > Acked-by: Ian Campbell <ian.campbell@citrix.com>
> >
> > Acked-by: Roger Pau Monné <roger.pau@citrix.com>
>
> Applied, thanks.
This patch had the slightly unfortunate impact of causing libxl to not
use blkback for actual block devices present in dom0, causing it to fall
back to tap/qemu.
I'm having a look now...
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] Only call stat() when adding a disk if we expect a device to exist.
2013-04-26 10:55 ` Ian Campbell
@ 2013-04-26 11:07 ` David Scott
2013-04-26 11:17 ` Ian Campbell
0 siblings, 1 reply; 9+ messages in thread
From: David Scott @ 2013-04-26 11:07 UTC (permalink / raw)
To: Ian Campbell; +Cc: xen-devel, Roger Pau Monne
On 26/04/13 11:55, Ian Campbell wrote:
> On Wed, 2013-04-24 at 12:56 +0100, Ian Campbell wrote:
>> On Tue, 2013-04-23 at 15:08 +0100, Roger Pau Monne wrote:
>>> On 23/04/13 11:59, David Scott wrote:
>>>> We consider calling stat() a helpful error check in the following
>>>> circumstances only:
>>>> 1. the disk backend type must be PHYsical
>>>> 2. the disk backend domain must be the same as the running libxl
>>>> code (ie LIBXL_TOOLSTACK_DOMID)
>>>> 3. there must not be a hotplug script because this would imply that
>>>> the device won't be created until after the hotplug script has
>>>> run.
>>>>
>>>> With this fix, it is possible to use qemu's built-in block drivers
>>>> such as ceph/rbd, with a xl config disk spec like this:
>>>>
>>>> disk=[ 'backendtype=qdisk,format=raw,vdev=hda,access=rw,target=rbd:rbd/ubuntu1204.img' ]
>>>>
>>>> Signed-off-by: David Scott <dave.scott@eu.citrix.com>
>>>> Acked-by: Ian Campbell <ian.campbell@citrix.com>
>>>
>>> Acked-by: Roger Pau Monné <roger.pau@citrix.com>
>>
>> Applied, thanks.
>
> This patch had the slightly unfortunate impact of causing libxl to not
> use blkback for actual block devices present in dom0, causing it to fall
> back to tap/qemu.
>
> I'm having a look now...
Thanks (and sorry!)
Looking at the code again, is it because bypassing the stat() in the
UNKNOWN case where in fact it is a block device, leaves a.stab
uninitialised which then confuses
if (libxl__try_phy_backend(a->stab.st_mode))
return backend;
in disk_try_backend?
Perhaps a better patch would do the stat() anyway and only worry about
the failure if (disk->backend = ... PHY && disk->backend_domid = ... etc)
Cheers,
Dave
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] Only call stat() when adding a disk if we expect a device to exist.
2013-04-26 11:07 ` David Scott
@ 2013-04-26 11:17 ` Ian Campbell
2013-04-26 12:17 ` David Scott
0 siblings, 1 reply; 9+ messages in thread
From: Ian Campbell @ 2013-04-26 11:17 UTC (permalink / raw)
To: Dave Scott; +Cc: xen-devel, Roger Pau Monne
On Fri, 2013-04-26 at 12:07 +0100, Dave Scott wrote:
> On 26/04/13 11:55, Ian Campbell wrote:
> > On Wed, 2013-04-24 at 12:56 +0100, Ian Campbell wrote:
> >> On Tue, 2013-04-23 at 15:08 +0100, Roger Pau Monne wrote:
> >>> On 23/04/13 11:59, David Scott wrote:
> >>>> We consider calling stat() a helpful error check in the following
> >>>> circumstances only:
> >>>> 1. the disk backend type must be PHYsical
> >>>> 2. the disk backend domain must be the same as the running libxl
> >>>> code (ie LIBXL_TOOLSTACK_DOMID)
> >>>> 3. there must not be a hotplug script because this would imply that
> >>>> the device won't be created until after the hotplug script has
> >>>> run.
> >>>>
> >>>> With this fix, it is possible to use qemu's built-in block drivers
> >>>> such as ceph/rbd, with a xl config disk spec like this:
> >>>>
> >>>> disk=[ 'backendtype=qdisk,format=raw,vdev=hda,access=rw,target=rbd:rbd/ubuntu1204.img' ]
> >>>>
> >>>> Signed-off-by: David Scott <dave.scott@eu.citrix.com>
> >>>> Acked-by: Ian Campbell <ian.campbell@citrix.com>
> >>>
> >>> Acked-by: Roger Pau Monné <roger.pau@citrix.com>
> >>
> >> Applied, thanks.
> >
> > This patch had the slightly unfortunate impact of causing libxl to not
> > use blkback for actual block devices present in dom0, causing it to fall
> > back to tap/qemu.
> >
> > I'm having a look now...
>
> Thanks (and sorry!)
>
> Looking at the code again, is it because bypassing the stat() in the
> UNKNOWN case where in fact it is a block device, leaves a.stab
> uninitialised which then confuses
>
> if (libxl__try_phy_backend(a->stab.st_mode))
> return backend;
>
> in disk_try_backend?
That's my working theory at the minute.
> Perhaps a better patch would do the stat() anyway and only worry about
> the failure if (disk->backend = ... PHY && disk->backend_domid = ... etc)
I'm not sure why we can't do the libxl__try_phy_backend at the same time
as the stat, all it does is abstract the difference away between Linux
and BSD duplicating a subset of the existing test after the stat...
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] Only call stat() when adding a disk if we expect a device to exist.
2013-04-26 11:17 ` Ian Campbell
@ 2013-04-26 12:17 ` David Scott
2013-04-26 13:11 ` Ian Campbell
0 siblings, 1 reply; 9+ messages in thread
From: David Scott @ 2013-04-26 12:17 UTC (permalink / raw)
To: Ian Campbell; +Cc: xen-devel, Roger Pau Monne
[-- Attachment #1: Type: text/plain, Size: 3020 bytes --]
On 26/04/13 12:17, Ian Campbell wrote:
> On Fri, 2013-04-26 at 12:07 +0100, Dave Scott wrote:
>> On 26/04/13 11:55, Ian Campbell wrote:
>>> On Wed, 2013-04-24 at 12:56 +0100, Ian Campbell wrote:
>>>> On Tue, 2013-04-23 at 15:08 +0100, Roger Pau Monne wrote:
>>>>> On 23/04/13 11:59, David Scott wrote:
>>>>>> We consider calling stat() a helpful error check in the following
>>>>>> circumstances only:
>>>>>> 1. the disk backend type must be PHYsical
>>>>>> 2. the disk backend domain must be the same as the running libxl
>>>>>> code (ie LIBXL_TOOLSTACK_DOMID)
>>>>>> 3. there must not be a hotplug script because this would imply that
>>>>>> the device won't be created until after the hotplug script has
>>>>>> run.
>>>>>>
>>>>>> With this fix, it is possible to use qemu's built-in block drivers
>>>>>> such as ceph/rbd, with a xl config disk spec like this:
>>>>>>
>>>>>> disk=[ 'backendtype=qdisk,format=raw,vdev=hda,access=rw,target=rbd:rbd/ubuntu1204.img' ]
>>>>>>
>>>>>> Signed-off-by: David Scott <dave.scott@eu.citrix.com>
>>>>>> Acked-by: Ian Campbell <ian.campbell@citrix.com>
>>>>>
>>>>> Acked-by: Roger Pau Monné <roger.pau@citrix.com>
>>>>
>>>> Applied, thanks.
>>>
>>> This patch had the slightly unfortunate impact of causing libxl to not
>>> use blkback for actual block devices present in dom0, causing it to fall
>>> back to tap/qemu.
>>>
>>> I'm having a look now...
>>
>> Thanks (and sorry!)
>>
>> Looking at the code again, is it because bypassing the stat() in the
>> UNKNOWN case where in fact it is a block device, leaves a.stab
>> uninitialised which then confuses
>>
>> if (libxl__try_phy_backend(a->stab.st_mode))
>> return backend;
>>
>> in disk_try_backend?
>
> That's my working theory at the minute.
>
>> Perhaps a better patch would do the stat() anyway and only worry about
>> the failure if (disk->backend = ... PHY && disk->backend_domid = ... etc)
>
> I'm not sure why we can't do the libxl__try_phy_backend at the same time
> as the stat, all it does is abstract the difference away between Linux
> and BSD duplicating a subset of the existing test after the stat...
That's a good point -- we could do only one (platform specific) set of
S_IS{BLK,REG} checks if we merged them together.
How about a refactoring along the lines of the attached (built but not
yet tested) patch? The changes are:
1. remove the cached stat results in disk_try_backend_args
2. in disk_try_backend(... PHY) we
* fail if not RAW or empty (as before)
* assume phy is ok if we have a hotplug script (as before)
* if we're in LIBXL_TOOLSTACK_DOMID, stat() the disk and call
libxl__try_backend
* if we're not in LIBXL_TOOLSTACK_DOMID then assume phy is ok
(basically we can't tell for sure)
2. in libxl__device_disk_set_backend we
* keep the CDROM sanity check
* don't do any stat()ing
* immediately call disk_try_backend (probing if UNKNOWN as before)
Does that make sense? I'll do a bit of testing now.
Cheers,
Dave
[-- Attachment #2: libxl-device-stat.patch --]
[-- Type: text/x-patch, Size: 3275 bytes --]
diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
index eb60fd5..47b5afc 100644
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -143,7 +143,6 @@ retry_transaction:
typedef struct {
libxl__gc *gc;
libxl_device_disk *disk;
- struct stat stab;
} disk_try_backend_args;
static int disk_try_backend(disk_try_backend_args *a,
@@ -153,6 +152,7 @@ static int disk_try_backend(disk_try_backend_args *a,
/* returns 0 (ie, DISK_BACKEND_UNKNOWN) on failure, or
* backend on success */
libxl_ctx *ctx = libxl__gc_owner(gc);
+ struct stat stab;
switch (backend) {
case LIBXL_DISK_BACKEND_PHY:
@@ -167,13 +167,21 @@ static int disk_try_backend(disk_try_backend_args *a,
return backend;
}
- if (libxl__try_phy_backend(a->stab.st_mode))
- return backend;
+ if (a->disk->backend_domid == LIBXL_TOOLSTACK_DOMID) {
+ if (stat(a->disk->pdev_path, &stab)) {
+ LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "Disk vdev=%s "
+ "failed to stat: %s",
+ a->disk->vdev, a->disk->pdev_path);
+ return 0;
+ }
- LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Disk vdev=%s, backend phy"
- " unsuitable as phys path not a block device",
+ if (libxl__try_phy_backend(stab.st_mode))
+ return backend;
+ }
+
+ LOG(DEBUG, "Disk vdev=%s, uses driver domain, assuming phy backend",
a->disk->vdev);
- return 0;
+ return backend;
case LIBXL_DISK_BACKEND_TAP:
if (a->disk->script) goto bad_script;
@@ -228,30 +236,11 @@ int libxl__device_disk_set_backend(libxl__gc *gc, libxl_device_disk *disk) {
disk->vdev,
libxl_disk_backend_to_string(disk->backend));
- if (disk->format == LIBXL_DISK_FORMAT_EMPTY) {
- if (!disk->is_cdrom) {
- LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Disk vdev=%s is empty"
- " but not cdrom",
- disk->vdev);
- return ERROR_INVAL;
- }
- memset(&a.stab, 0, sizeof(a.stab));
- } else if (disk->backend == LIBXL_DISK_BACKEND_PHY &&
- disk->backend_domid == LIBXL_TOOLSTACK_DOMID &&
- !disk->script) {
- if (stat(disk->pdev_path, &a.stab)) {
- LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "Disk vdev=%s "
- "failed to stat: %s",
- disk->vdev, disk->pdev_path);
- return ERROR_INVAL;
- }
- if (!S_ISBLK(a.stab.st_mode) &
- !S_ISREG(a.stab.st_mode)) {
- LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Disk vdev=%s "
- "phys path is not a block dev or file: %s",
- disk->vdev, disk->pdev_path);
- return ERROR_INVAL;
- }
+ if (disk->format == LIBXL_DISK_FORMAT_EMPTY && !disk->is_cdrom) {
+ LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Disk vdev=%s is empty"
+ " but not cdrom",
+ disk->vdev);
+ return ERROR_INVAL;
}
if (disk->backend != LIBXL_DISK_BACKEND_UNKNOWN) {
[-- Attachment #3: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2] Only call stat() when adding a disk if we expect a device to exist.
2013-04-26 12:17 ` David Scott
@ 2013-04-26 13:11 ` Ian Campbell
2013-04-26 14:16 ` Ian Campbell
0 siblings, 1 reply; 9+ messages in thread
From: Ian Campbell @ 2013-04-26 13:11 UTC (permalink / raw)
To: Dave Scott; +Cc: xen-devel, Roger Pau Monne
On Fri, 2013-04-26 at 13:17 +0100, Dave Scott wrote:
> 1. remove the cached stat results in disk_try_backend_args
> 2. in disk_try_backend(... PHY) we
> * fail if not RAW or empty (as before)
> * assume phy is ok if we have a hotplug script (as before)
> * if we're in LIBXL_TOOLSTACK_DOMID, stat() the disk and call
> libxl__try_backend
> * if we're not in LIBXL_TOOLSTACK_DOMID then assume phy is ok
> (basically we can't tell for sure)
Right, this is the case which concerned me. Roger probably has a better
handler than me but I think it is probably true to say that at least as
things stand phy was the only option in a driver domain. Maybe blktap1
(which libxl doesn't support) would have worked but blktap2 won't and
neither will qdisk.
I was looking at this as the most minimal fix:
@@ -236,9 +236,10 @@ int libxl__device_disk_set_backend(libxl__gc *gc, libxl_de
return ERROR_INVAL;
}
memset(&a.stab, 0, sizeof(a.stab));
- } else if (disk->backend == LIBXL_DISK_BACKEND_PHY &&
+ } else if ((disk->backend == LIBXL_DISK_BACKEND_PHY ||
+ disk->backend == LIBXL_DISK_BACKEND_UNKNOWN) &&
disk->backend_domid == LIBXL_TOOLSTACK_DOMID &&
!disk->script) {
if (stat(disk->pdev_path, &a.stab)) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "Disk vdev=%s "
"failed to stat: %s",
but I'm not 100% sure of this.
If it is right the arguable TAP should be included too, it's only qdisk
which can deal with things which aren't block or file (so the == PHY
should be a != QDISK).
Which begs the question whether your variant shouldn't also add a stat
in the tap case too?
> 2. in libxl__device_disk_set_backend we
> * keep the CDROM sanity check
> * don't do any stat()ing
> * immediately call disk_try_backend (probing if UNKNOWN as before)
>
> Does that make sense? I'll do a bit of testing now.
I think it might...
>
> Cheers,
> Dave
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] Only call stat() when adding a disk if we expect a device to exist.
2013-04-26 13:11 ` Ian Campbell
@ 2013-04-26 14:16 ` Ian Campbell
0 siblings, 0 replies; 9+ messages in thread
From: Ian Campbell @ 2013-04-26 14:16 UTC (permalink / raw)
To: Dave Scott; +Cc: Roger Pau Monne, xen-devel
On Fri, 2013-04-26 at 14:11 +0100, Ian Campbell wrote:
> If it is right the arguable TAP should be included too, it's only
> qdisk
> which can deal with things which aren't block or file (so the == PHY
> should be a != QDISK).
I've just sent out "libxl: stat the path for all non-qdisk backends
(including unknown)" which I think is the minimal fix, but we should
perhaps consider your approach after that too.
Ian.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-04-26 14:16 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-23 9:59 [PATCH v2] Only call stat() when adding a disk if we expect a device to exist David Scott
2013-04-23 14:08 ` Roger Pau Monné
2013-04-24 11:56 ` Ian Campbell
2013-04-26 10:55 ` Ian Campbell
2013-04-26 11:07 ` David Scott
2013-04-26 11:17 ` Ian Campbell
2013-04-26 12:17 ` David Scott
2013-04-26 13:11 ` Ian Campbell
2013-04-26 14:16 ` Ian Campbell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.