* [PATCH] SUNRPC: set desired file system root before connecting local transports
@ 2012-02-29 14:59 Stanislav Kinsbursky
2012-03-07 0:19 ` Myklebust, Trond
0 siblings, 1 reply; 6+ messages in thread
From: Stanislav Kinsbursky @ 2012-02-29 14:59 UTC (permalink / raw)
To: Trond.Myklebust
Cc: linux-nfs, xemul, neilb, netdev, linux-kernel, jbottomley,
bfields, davem, devel
Today, there is a problem in connecting of local SUNRPC thansports. These
transports uses UNIX sockets and connection itself is done by rpciod workqueue.
But UNIX sockets lookup is done in context of process file system root. I.e.
all local thunsports are connecting in rpciod context.
This works nice until we will try to mount NFS from process with other root -
for example in container. This container can have it's own (nested) root and
rcpbind process, listening on it's own unix sockets. But NFS mount attempt in
this container will register new service (Lockd for example) in global rpcbind
- not containers's one.
This patch solves the problem by switching rpciod kernel thread's file system
root to right one (stored on transport) while connecting of local transports.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
---
fs/fs_struct.c | 1 +
net/sunrpc/xprtsock.c | 32 ++++++++++++++++++++++++++++++--
2 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/fs/fs_struct.c b/fs/fs_struct.c
index 78b519c..0f984c3 100644
--- a/fs/fs_struct.c
+++ b/fs/fs_struct.c
@@ -36,6 +36,7 @@ void set_fs_root(struct fs_struct *fs, struct path *path)
if (old_root.dentry)
path_put_longterm(&old_root);
}
+EXPORT_SYMBOL_GPL(set_fs_root);
/*
* Replace the fs->{pwdmnt,pwd} with {mnt,dentry}. Put the old values.
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index 4c8281d..c94c181 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -37,6 +37,7 @@
#include <linux/sunrpc/svcsock.h>
#include <linux/sunrpc/xprtsock.h>
#include <linux/file.h>
+#include <linux/fs_struct.h>
#ifdef CONFIG_SUNRPC_BACKCHANNEL
#include <linux/sunrpc/bc_xprt.h>
#endif
@@ -255,6 +256,11 @@ struct sock_xprt {
void (*old_state_change)(struct sock *);
void (*old_write_space)(struct sock *);
void (*old_error_report)(struct sock *);
+
+ /*
+ * Saved transport creator root. Required for local transports only.
+ */
+ struct path root;
};
/*
@@ -1891,6 +1897,7 @@ static void xs_local_setup_socket(struct work_struct *work)
struct rpc_xprt *xprt = &transport->xprt;
struct socket *sock;
int status = -EIO;
+ struct path root;
if (xprt->shutdown)
goto out;
@@ -1908,7 +1915,14 @@ static void xs_local_setup_socket(struct work_struct *work)
dprintk("RPC: worker connecting xprt %p via AF_LOCAL to %s\n",
xprt, xprt->address_strings[RPC_DISPLAY_ADDR]);
+ get_fs_root(current->fs, &root);
+ set_fs_root(current->fs, &transport->root);
+
status = xs_local_finish_connecting(xprt, sock);
+
+ set_fs_root(current->fs, &root);
+ path_put(&root);
+
switch (status) {
case 0:
dprintk("RPC: xprt %p connected to %s\n",
@@ -2213,6 +2227,18 @@ static void xs_connect(struct rpc_task *task)
}
}
+static void xs_local_destroy(struct rpc_xprt *xprt)
+{
+ struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt);
+ struct path root = transport->root;
+
+ dprintk("RPC: xs_local_destroy xprt %p\n", xprt);
+
+ xs_destroy(xprt);
+
+ path_put(&root);
+}
+
/**
* xs_local_print_stats - display AF_LOCAL socket-specifc stats
* @xprt: rpc_xprt struct containing statistics
@@ -2431,7 +2457,7 @@ static struct rpc_xprt_ops xs_local_ops = {
.send_request = xs_local_send_request,
.set_retrans_timeout = xprt_set_retrans_timeout_def,
.close = xs_close,
- .destroy = xs_destroy,
+ .destroy = xs_local_destroy,
.print_stats = xs_local_print_stats,
};
@@ -2606,8 +2632,10 @@ static struct rpc_xprt *xs_setup_local(struct xprt_create *args)
dprintk("RPC: set up xprt to %s via AF_LOCAL\n",
xprt->address_strings[RPC_DISPLAY_ADDR]);
- if (try_module_get(THIS_MODULE))
+ if (try_module_get(THIS_MODULE)) {
+ get_fs_root(current->fs, &transport->root);
return xprt;
+ }
ret = ERR_PTR(-EINVAL);
out_err:
xprt_free(xprt);
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH] SUNRPC: set desired file system root before connecting local transports
2012-02-29 14:59 [PATCH] SUNRPC: set desired file system root before connecting local transports Stanislav Kinsbursky
@ 2012-03-07 0:19 ` Myklebust, Trond
2012-03-07 0:21 ` Myklebust, Trond
2012-03-07 8:34 ` Stanislav Kinsbursky
0 siblings, 2 replies; 6+ messages in thread
From: Myklebust, Trond @ 2012-03-07 0:19 UTC (permalink / raw)
To: Stanislav Kinsbursky
Cc: linux-nfs@vger.kernel.org, xemul@parallels.com, neilb@suse.de,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
jbottomley@parallels.com, bfields@fieldses.org,
davem@davemloft.net, devel@openvz.org
T24gV2VkLCAyMDEyLTAyLTI5IGF0IDE4OjU5ICswNDAwLCBTdGFuaXNsYXYgS2luc2J1cnNreSB3
cm90ZToNCj4gVG9kYXksIHRoZXJlIGlzIGEgcHJvYmxlbSBpbiBjb25uZWN0aW5nIG9mIGxvY2Fs
IFNVTlJQQyB0aGFuc3BvcnRzLiBUaGVzZQ0KPiB0cmFuc3BvcnRzIHVzZXMgVU5JWCBzb2NrZXRz
IGFuZCBjb25uZWN0aW9uIGl0c2VsZiBpcyBkb25lIGJ5IHJwY2lvZCB3b3JrcXVldWUuDQo+IEJ1
dCBVTklYIHNvY2tldHMgbG9va3VwIGlzIGRvbmUgaW4gY29udGV4dCBvZiBwcm9jZXNzIGZpbGUg
c3lzdGVtIHJvb3QuIEkuZS4NCj4gYWxsIGxvY2FsIHRodW5zcG9ydHMgYXJlIGNvbm5lY3Rpbmcg
aW4gcnBjaW9kIGNvbnRleHQuDQo+IFRoaXMgd29ya3MgbmljZSB1bnRpbCB3ZSB3aWxsIHRyeSB0
byBtb3VudCBORlMgZnJvbSBwcm9jZXNzIHdpdGggb3RoZXIgcm9vdCAtDQo+IGZvciBleGFtcGxl
IGluIGNvbnRhaW5lci4gVGhpcyBjb250YWluZXIgY2FuIGhhdmUgaXQncyBvd24gKG5lc3RlZCkg
cm9vdCBhbmQNCj4gcmNwYmluZCBwcm9jZXNzLCBsaXN0ZW5pbmcgb24gaXQncyBvd24gdW5peCBz
b2NrZXRzLiBCdXQgTkZTIG1vdW50IGF0dGVtcHQgaW4NCj4gdGhpcyBjb250YWluZXIgd2lsbCBy
ZWdpc3RlciBuZXcgc2VydmljZSAoTG9ja2QgZm9yIGV4YW1wbGUpIGluIGdsb2JhbCBycGNiaW5k
DQo+IC0gbm90IGNvbnRhaW5lcnMncyBvbmUuDQo+IFRoaXMgcGF0Y2ggc29sdmVzIHRoZSBwcm9i
bGVtIGJ5IHN3aXRjaGluZyBycGNpb2Qga2VybmVsIHRocmVhZCdzIGZpbGUgc3lzdGVtDQo+IHJv
b3QgdG8gcmlnaHQgb25lIChzdG9yZWQgb24gdHJhbnNwb3J0KSB3aGlsZSBjb25uZWN0aW5nIG9m
IGxvY2FsIHRyYW5zcG9ydHMuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNsYXYgS2luc2J1
cnNreSA8c2tpbnNidXJza3lAcGFyYWxsZWxzLmNvbT4NCj4gDQo+IC0tLQ0KPiAgZnMvZnNfc3Ry
dWN0LmMgICAgICAgIHwgICAgMSArDQo+ICBuZXQvc3VucnBjL3hwcnRzb2NrLmMgfCAgIDMyICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tDQo+ICAyIGZpbGVzIGNoYW5nZWQsIDMxIGlu
c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZnMvZnNfc3Ry
dWN0LmMgYi9mcy9mc19zdHJ1Y3QuYw0KPiBpbmRleCA3OGI1MTljLi4wZjk4NGMzIDEwMDY0NA0K
PiAtLS0gYS9mcy9mc19zdHJ1Y3QuYw0KPiArKysgYi9mcy9mc19zdHJ1Y3QuYw0KPiBAQCAtMzYs
NiArMzYsNyBAQCB2b2lkIHNldF9mc19yb290KHN0cnVjdCBmc19zdHJ1Y3QgKmZzLCBzdHJ1Y3Qg
cGF0aCAqcGF0aCkNCj4gIAlpZiAob2xkX3Jvb3QuZGVudHJ5KQ0KPiAgCQlwYXRoX3B1dF9sb25n
dGVybSgmb2xkX3Jvb3QpOw0KPiAgfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwoc2V0X2ZzX3Jvb3Qp
Ow0KPiAgDQo+ICAvKg0KPiAgICogUmVwbGFjZSB0aGUgZnMtPntwd2RtbnQscHdkfSB3aXRoIHtt
bnQsZGVudHJ5fS4gUHV0IHRoZSBvbGQgdmFsdWVzLg0KPiBkaWZmIC0tZ2l0IGEvbmV0L3N1bnJw
Yy94cHJ0c29jay5jIGIvbmV0L3N1bnJwYy94cHJ0c29jay5jDQo+IGluZGV4IDRjODI4MWQuLmM5
NGMxODEgMTAwNjQ0DQo+IC0tLSBhL25ldC9zdW5ycGMveHBydHNvY2suYw0KPiArKysgYi9uZXQv
c3VucnBjL3hwcnRzb2NrLmMNCj4gQEAgLTM3LDYgKzM3LDcgQEANCj4gICNpbmNsdWRlIDxsaW51
eC9zdW5ycGMvc3Zjc29jay5oPg0KPiAgI2luY2x1ZGUgPGxpbnV4L3N1bnJwYy94cHJ0c29jay5o
Pg0KPiAgI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9mc19zdHJ1
Y3QuaD4NCj4gICNpZmRlZiBDT05GSUdfU1VOUlBDX0JBQ0tDSEFOTkVMDQo+ICAjaW5jbHVkZSA8
bGludXgvc3VucnBjL2JjX3hwcnQuaD4NCj4gICNlbmRpZg0KPiBAQCAtMjU1LDYgKzI1NiwxMSBA
QCBzdHJ1Y3Qgc29ja194cHJ0IHsNCj4gIAl2b2lkCQkJKCpvbGRfc3RhdGVfY2hhbmdlKShzdHJ1
Y3Qgc29jayAqKTsNCj4gIAl2b2lkCQkJKCpvbGRfd3JpdGVfc3BhY2UpKHN0cnVjdCBzb2NrICop
Ow0KPiAgCXZvaWQJCQkoKm9sZF9lcnJvcl9yZXBvcnQpKHN0cnVjdCBzb2NrICopOw0KPiArDQo+
ICsJLyoNCj4gKwkgKiBTYXZlZCB0cmFuc3BvcnQgY3JlYXRvciByb290LiBSZXF1aXJlZCBmb3Ig
bG9jYWwgdHJhbnNwb3J0cyBvbmx5Lg0KPiArCSAqLw0KPiArCXN0cnVjdCBwYXRoCQlyb290Ow0K
PiAgfTsNCj4gIA0KPiAgLyoNCj4gQEAgLTE4OTEsNiArMTg5Nyw3IEBAIHN0YXRpYyB2b2lkIHhz
X2xvY2FsX3NldHVwX3NvY2tldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ICAJc3RydWN0
IHJwY194cHJ0ICp4cHJ0ID0gJnRyYW5zcG9ydC0+eHBydDsNCj4gIAlzdHJ1Y3Qgc29ja2V0ICpz
b2NrOw0KPiAgCWludCBzdGF0dXMgPSAtRUlPOw0KPiArCXN0cnVjdCBwYXRoIHJvb3Q7DQo+ICAN
Cj4gIAlpZiAoeHBydC0+c2h1dGRvd24pDQo+ICAJCWdvdG8gb3V0Ow0KPiBAQCAtMTkwOCw3ICsx
OTE1LDE0IEBAIHN0YXRpYyB2b2lkIHhzX2xvY2FsX3NldHVwX3NvY2tldChzdHJ1Y3Qgd29ya19z
dHJ1Y3QgKndvcmspDQo+ICAJZHByaW50aygiUlBDOiAgICAgICB3b3JrZXIgY29ubmVjdGluZyB4
cHJ0ICVwIHZpYSBBRl9MT0NBTCB0byAlc1xuIiwNCj4gIAkJCXhwcnQsIHhwcnQtPmFkZHJlc3Nf
c3RyaW5nc1tSUENfRElTUExBWV9BRERSXSk7DQo+ICANCj4gKwlnZXRfZnNfcm9vdChjdXJyZW50
LT5mcywgJnJvb3QpOw0KPiArCXNldF9mc19yb290KGN1cnJlbnQtPmZzLCAmdHJhbnNwb3J0LT5y
b290KTsNCj4gKw0KPiAgCXN0YXR1cyA9IHhzX2xvY2FsX2ZpbmlzaF9jb25uZWN0aW5nKHhwcnQs
IHNvY2spOw0KPiArDQo+ICsJc2V0X2ZzX3Jvb3QoY3VycmVudC0+ZnMsICZyb290KTsNCj4gKwlw
YXRoX3B1dCgmcm9vdCk7DQo+ICsNCj4gIAlzd2l0Y2ggKHN0YXR1cykgew0KPiAgCWNhc2UgMDoN
Cg0KSGkgU3RhbmlzbGF2LA0KDQpXaGF0IGhhcHBlbnMgaGVyZSBpZiB0aGUgbW91bnQgbmFtZXNw
YWNlIG9mIHRoZSBwcm9jZXNzIHRoYXQgb3JpZ2luYWxseQ0KY3JlYXRlZCB0aGUgc29ja194cHJ0
IG5vIGxvbmdlciBleGlzdHM/IFNob3VsZCB3ZSBjYXJlIGFib3V0IHRoYXQgY2FzZT8NCg0KQ2hl
ZXJzDQogIFRyb25kDQoNCi0tIA0KVHJvbmQgTXlrbGVidXN0DQpMaW51eCBORlMgY2xpZW50IG1h
aW50YWluZXINCg0KTmV0QXBwDQpUcm9uZC5NeWtsZWJ1c3RAbmV0YXBwLmNvbQ0Kd3d3Lm5ldGFw
cC5jb20NCg0K
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] SUNRPC: set desired file system root before connecting local transports
2012-03-07 0:19 ` Myklebust, Trond
@ 2012-03-07 0:21 ` Myklebust, Trond
2012-03-07 8:36 ` Stanislav Kinsbursky
2012-03-07 8:34 ` Stanislav Kinsbursky
1 sibling, 1 reply; 6+ messages in thread
From: Myklebust, Trond @ 2012-03-07 0:21 UTC (permalink / raw)
To: Stanislav Kinsbursky
Cc: linux-nfs@vger.kernel.org, xemul@parallels.com, neilb@suse.de,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
jbottomley@parallels.com, bfields@fieldses.org,
davem@davemloft.net, devel@openvz.org
T24gV2VkLCAyMDEyLTAzLTA3IGF0IDAwOjE5ICswMDAwLCBNeWtsZWJ1c3QsIFRyb25kIHdyb3Rl
Og0KPiBPbiBXZWQsIDIwMTItMDItMjkgYXQgMTg6NTkgKzA0MDAsIFN0YW5pc2xhdiBLaW5zYnVy
c2t5IHdyb3RlOg0KPiA+IFRvZGF5LCB0aGVyZSBpcyBhIHByb2JsZW0gaW4gY29ubmVjdGluZyBv
ZiBsb2NhbCBTVU5SUEMgdGhhbnNwb3J0cy4gVGhlc2UNCj4gPiB0cmFuc3BvcnRzIHVzZXMgVU5J
WCBzb2NrZXRzIGFuZCBjb25uZWN0aW9uIGl0c2VsZiBpcyBkb25lIGJ5IHJwY2lvZCB3b3JrcXVl
dWUuDQo+ID4gQnV0IFVOSVggc29ja2V0cyBsb29rdXAgaXMgZG9uZSBpbiBjb250ZXh0IG9mIHBy
b2Nlc3MgZmlsZSBzeXN0ZW0gcm9vdC4gSS5lLg0KPiA+IGFsbCBsb2NhbCB0aHVuc3BvcnRzIGFy
ZSBjb25uZWN0aW5nIGluIHJwY2lvZCBjb250ZXh0Lg0KPiA+IFRoaXMgd29ya3MgbmljZSB1bnRp
bCB3ZSB3aWxsIHRyeSB0byBtb3VudCBORlMgZnJvbSBwcm9jZXNzIHdpdGggb3RoZXIgcm9vdCAt
DQo+ID4gZm9yIGV4YW1wbGUgaW4gY29udGFpbmVyLiBUaGlzIGNvbnRhaW5lciBjYW4gaGF2ZSBp
dCdzIG93biAobmVzdGVkKSByb290IGFuZA0KPiA+IHJjcGJpbmQgcHJvY2VzcywgbGlzdGVuaW5n
IG9uIGl0J3Mgb3duIHVuaXggc29ja2V0cy4gQnV0IE5GUyBtb3VudCBhdHRlbXB0IGluDQo+ID4g
dGhpcyBjb250YWluZXIgd2lsbCByZWdpc3RlciBuZXcgc2VydmljZSAoTG9ja2QgZm9yIGV4YW1w
bGUpIGluIGdsb2JhbCBycGNiaW5kDQo+ID4gLSBub3QgY29udGFpbmVycydzIG9uZS4NCj4gPiBU
aGlzIHBhdGNoIHNvbHZlcyB0aGUgcHJvYmxlbSBieSBzd2l0Y2hpbmcgcnBjaW9kIGtlcm5lbCB0
aHJlYWQncyBmaWxlIHN5c3RlbQ0KPiA+IHJvb3QgdG8gcmlnaHQgb25lIChzdG9yZWQgb24gdHJh
bnNwb3J0KSB3aGlsZSBjb25uZWN0aW5nIG9mIGxvY2FsIHRyYW5zcG9ydHMuDQo+ID4gDQo+ID4g
U2lnbmVkLW9mZi1ieTogU3RhbmlzbGF2IEtpbnNidXJza3kgPHNraW5zYnVyc2t5QHBhcmFsbGVs
cy5jb20+DQo+ID4gDQo+ID4gLS0tDQo+ID4gIGZzL2ZzX3N0cnVjdC5jICAgICAgICB8ICAgIDEg
Kw0KPiA+ICBuZXQvc3VucnBjL3hwcnRzb2NrLmMgfCAgIDMyICsrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKy0tDQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgMiBk
ZWxldGlvbnMoLSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvZnMvZnNfc3RydWN0LmMgYi9mcy9m
c19zdHJ1Y3QuYw0KPiA+IGluZGV4IDc4YjUxOWMuLjBmOTg0YzMgMTAwNjQ0DQo+ID4gLS0tIGEv
ZnMvZnNfc3RydWN0LmMNCj4gPiArKysgYi9mcy9mc19zdHJ1Y3QuYw0KPiA+IEBAIC0zNiw2ICsz
Niw3IEBAIHZvaWQgc2V0X2ZzX3Jvb3Qoc3RydWN0IGZzX3N0cnVjdCAqZnMsIHN0cnVjdCBwYXRo
ICpwYXRoKQ0KPiA+ICAJaWYgKG9sZF9yb290LmRlbnRyeSkNCj4gPiAgCQlwYXRoX3B1dF9sb25n
dGVybSgmb2xkX3Jvb3QpOw0KPiA+ICB9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHNldF9mc19y
b290KTsNCj4gPiAgDQo+ID4gIC8qDQo+ID4gICAqIFJlcGxhY2UgdGhlIGZzLT57cHdkbW50LHB3
ZH0gd2l0aCB7bW50LGRlbnRyeX0uIFB1dCB0aGUgb2xkIHZhbHVlcy4NCj4gPiBkaWZmIC0tZ2l0
IGEvbmV0L3N1bnJwYy94cHJ0c29jay5jIGIvbmV0L3N1bnJwYy94cHJ0c29jay5jDQo+ID4gaW5k
ZXggNGM4MjgxZC4uYzk0YzE4MSAxMDA2NDQNCj4gPiAtLS0gYS9uZXQvc3VucnBjL3hwcnRzb2Nr
LmMNCj4gPiArKysgYi9uZXQvc3VucnBjL3hwcnRzb2NrLmMNCj4gPiBAQCAtMzcsNiArMzcsNyBA
QA0KPiA+ICAjaW5jbHVkZSA8bGludXgvc3VucnBjL3N2Y3NvY2suaD4NCj4gPiAgI2luY2x1ZGUg
PGxpbnV4L3N1bnJwYy94cHJ0c29jay5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvZmlsZS5oPg0K
PiA+ICsjaW5jbHVkZSA8bGludXgvZnNfc3RydWN0Lmg+DQo+ID4gICNpZmRlZiBDT05GSUdfU1VO
UlBDX0JBQ0tDSEFOTkVMDQo+ID4gICNpbmNsdWRlIDxsaW51eC9zdW5ycGMvYmNfeHBydC5oPg0K
PiA+ICAjZW5kaWYNCj4gPiBAQCAtMjU1LDYgKzI1NiwxMSBAQCBzdHJ1Y3Qgc29ja194cHJ0IHsN
Cj4gPiAgCXZvaWQJCQkoKm9sZF9zdGF0ZV9jaGFuZ2UpKHN0cnVjdCBzb2NrICopOw0KPiA+ICAJ
dm9pZAkJCSgqb2xkX3dyaXRlX3NwYWNlKShzdHJ1Y3Qgc29jayAqKTsNCj4gPiAgCXZvaWQJCQko
Km9sZF9lcnJvcl9yZXBvcnQpKHN0cnVjdCBzb2NrICopOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4g
KwkgKiBTYXZlZCB0cmFuc3BvcnQgY3JlYXRvciByb290LiBSZXF1aXJlZCBmb3IgbG9jYWwgdHJh
bnNwb3J0cyBvbmx5Lg0KPiA+ICsJICovDQo+ID4gKwlzdHJ1Y3QgcGF0aAkJcm9vdDsNCj4gPiAg
fTsNCj4gPiAgDQo+ID4gIC8qDQo+ID4gQEAgLTE4OTEsNiArMTg5Nyw3IEBAIHN0YXRpYyB2b2lk
IHhzX2xvY2FsX3NldHVwX3NvY2tldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ID4gIAlz
dHJ1Y3QgcnBjX3hwcnQgKnhwcnQgPSAmdHJhbnNwb3J0LT54cHJ0Ow0KPiA+ICAJc3RydWN0IHNv
Y2tldCAqc29jazsNCj4gPiAgCWludCBzdGF0dXMgPSAtRUlPOw0KPiA+ICsJc3RydWN0IHBhdGgg
cm9vdDsNCj4gPiAgDQo+ID4gIAlpZiAoeHBydC0+c2h1dGRvd24pDQo+ID4gIAkJZ290byBvdXQ7
DQo+ID4gQEAgLTE5MDgsNyArMTkxNSwxNCBAQCBzdGF0aWMgdm9pZCB4c19sb2NhbF9zZXR1cF9z
b2NrZXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiA+ICAJZHByaW50aygiUlBDOiAgICAg
ICB3b3JrZXIgY29ubmVjdGluZyB4cHJ0ICVwIHZpYSBBRl9MT0NBTCB0byAlc1xuIiwNCj4gPiAg
CQkJeHBydCwgeHBydC0+YWRkcmVzc19zdHJpbmdzW1JQQ19ESVNQTEFZX0FERFJdKTsNCj4gPiAg
DQo+ID4gKwlnZXRfZnNfcm9vdChjdXJyZW50LT5mcywgJnJvb3QpOw0KPiA+ICsJc2V0X2ZzX3Jv
b3QoY3VycmVudC0+ZnMsICZ0cmFuc3BvcnQtPnJvb3QpOw0KPiA+ICsNCj4gPiAgCXN0YXR1cyA9
IHhzX2xvY2FsX2ZpbmlzaF9jb25uZWN0aW5nKHhwcnQsIHNvY2spOw0KPiA+ICsNCj4gPiArCXNl
dF9mc19yb290KGN1cnJlbnQtPmZzLCAmcm9vdCk7DQo+ID4gKwlwYXRoX3B1dCgmcm9vdCk7DQo+
ID4gKw0KPiA+ICAJc3dpdGNoIChzdGF0dXMpIHsNCj4gPiAgCWNhc2UgMDoNCj4gDQo+IEhpIFN0
YW5pc2xhdiwNCj4gDQo+IFdoYXQgaGFwcGVucyBoZXJlIGlmIHRoZSBtb3VudCBuYW1lc3BhY2Ug
b2YgdGhlIHByb2Nlc3MgdGhhdCBvcmlnaW5hbGx5DQo+IGNyZWF0ZWQgdGhlIHNvY2tfeHBydCBu
byBsb25nZXIgZXhpc3RzPyBTaG91bGQgd2UgY2FyZSBhYm91dCB0aGF0IGNhc2U/DQo+IA0KPiBD
aGVlcnMNCj4gICBUcm9uZA0KDQpCVFc6IFdlIHdpbGwgaW4gYW55IGNhc2UgbmVlZCBBbCBWaXJv
IGFuZCBDaHJpc3RvcGgncyBBQ0sgaW4gb3JkZXIgdG8NCmV4cG9ydCB0aGUgc2V0X2ZzX3Jvb3Qo
KSBmdW5jdGlvbi4NCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFp
bnRhaW5lcg0KDQpOZXRBcHANClRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tDQp3d3cubmV0YXBw
LmNvbQ0KDQo=
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] SUNRPC: set desired file system root before connecting local transports
2012-03-07 0:21 ` Myklebust, Trond
@ 2012-03-07 8:36 ` Stanislav Kinsbursky
0 siblings, 0 replies; 6+ messages in thread
From: Stanislav Kinsbursky @ 2012-03-07 8:36 UTC (permalink / raw)
To: Myklebust, Trond
Cc: linux-nfs@vger.kernel.org, Pavel Emelianov, neilb@suse.de,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
James Bottomley, bfields@fieldses.org, davem@davemloft.net,
devel@openvz.org
07.03.2012 04:21, Myklebust, Trond пишет:
> BTW: We will in any case need Al Viro and Christoph's ACK in order to
> export the set_fs_root() function.
Yep, you right.
Is it better to add them into recipients on a reply to the patch or send the
patch once more?
--
Best regards,
Stanislav Kinsbursky
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] SUNRPC: set desired file system root before connecting local transports
2012-03-07 0:19 ` Myklebust, Trond
2012-03-07 0:21 ` Myklebust, Trond
@ 2012-03-07 8:34 ` Stanislav Kinsbursky
2012-03-07 13:21 ` Myklebust, Trond
1 sibling, 1 reply; 6+ messages in thread
From: Stanislav Kinsbursky @ 2012-03-07 8:34 UTC (permalink / raw)
To: Myklebust, Trond
Cc: linux-nfs@vger.kernel.org, Pavel Emelianov, neilb@suse.de,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
James Bottomley, bfields@fieldses.org, davem@davemloft.net,
devel@openvz.org
07.03.2012 04:19, Myklebust, Trond пишет:
> On Wed, 2012-02-29 at 18:59 +0400, Stanislav Kinsbursky wrote:
>> Today, there is a problem in connecting of local SUNRPC thansports. These
>> transports uses UNIX sockets and connection itself is done by rpciod workqueue.
>> But UNIX sockets lookup is done in context of process file system root. I.e.
>> all local thunsports are connecting in rpciod context.
>> This works nice until we will try to mount NFS from process with other root -
>> for example in container. This container can have it's own (nested) root and
>> rcpbind process, listening on it's own unix sockets. But NFS mount attempt in
>> this container will register new service (Lockd for example) in global rpcbind
>> - not containers's one.
>> This patch solves the problem by switching rpciod kernel thread's file system
>> root to right one (stored on transport) while connecting of local transports.
>>
>> Signed-off-by: Stanislav Kinsbursky<skinsbursky@parallels.com>
>>
>> ---
>> fs/fs_struct.c | 1 +
>> net/sunrpc/xprtsock.c | 32 ++++++++++++++++++++++++++++++--
>> 2 files changed, 31 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/fs_struct.c b/fs/fs_struct.c
>> index 78b519c..0f984c3 100644
>> --- a/fs/fs_struct.c
>> +++ b/fs/fs_struct.c
>> @@ -36,6 +36,7 @@ void set_fs_root(struct fs_struct *fs, struct path *path)
>> if (old_root.dentry)
>> path_put_longterm(&old_root);
>> }
>> +EXPORT_SYMBOL_GPL(set_fs_root);
>>
>> /*
>> * Replace the fs->{pwdmnt,pwd} with {mnt,dentry}. Put the old values.
>> diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
>> index 4c8281d..c94c181 100644
>> --- a/net/sunrpc/xprtsock.c
>> +++ b/net/sunrpc/xprtsock.c
>> @@ -37,6 +37,7 @@
>> #include<linux/sunrpc/svcsock.h>
>> #include<linux/sunrpc/xprtsock.h>
>> #include<linux/file.h>
>> +#include<linux/fs_struct.h>
>> #ifdef CONFIG_SUNRPC_BACKCHANNEL
>> #include<linux/sunrpc/bc_xprt.h>
>> #endif
>> @@ -255,6 +256,11 @@ struct sock_xprt {
>> void (*old_state_change)(struct sock *);
>> void (*old_write_space)(struct sock *);
>> void (*old_error_report)(struct sock *);
>> +
>> + /*
>> + * Saved transport creator root. Required for local transports only.
>> + */
>> + struct path root;
>> };
>>
>> /*
>> @@ -1891,6 +1897,7 @@ static void xs_local_setup_socket(struct work_struct *work)
>> struct rpc_xprt *xprt =&transport->xprt;
>> struct socket *sock;
>> int status = -EIO;
>> + struct path root;
>>
>> if (xprt->shutdown)
>> goto out;
>> @@ -1908,7 +1915,14 @@ static void xs_local_setup_socket(struct work_struct *work)
>> dprintk("RPC: worker connecting xprt %p via AF_LOCAL to %s\n",
>> xprt, xprt->address_strings[RPC_DISPLAY_ADDR]);
>>
>> + get_fs_root(current->fs,&root);
>> + set_fs_root(current->fs,&transport->root);
>> +
>> status = xs_local_finish_connecting(xprt, sock);
>> +
>> + set_fs_root(current->fs,&root);
>> + path_put(&root);
>> +
>> switch (status) {
>> case 0:
>
> Hi Stanislav,
>
> What happens here if the mount namespace of the process that originally
> created the sock_xprt no longer exists? Should we care about that case?
>
Hi, Trond.
Looks like this is not a problem, because process fs->root->mnt usage counter
was increased on transport creation.
IOW, transport holds current root and thus mount namespace can't disappear.
--
Best regards,
Stanislav Kinsbursky
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] SUNRPC: set desired file system root before connecting local transports
2012-03-07 8:34 ` Stanislav Kinsbursky
@ 2012-03-07 13:21 ` Myklebust, Trond
0 siblings, 0 replies; 6+ messages in thread
From: Myklebust, Trond @ 2012-03-07 13:21 UTC (permalink / raw)
To: Stanislav Kinsbursky
Cc: linux-nfs@vger.kernel.org, Pavel Emelianov, neilb@suse.de,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
James Bottomley, bfields@fieldses.org, davem@davemloft.net,
devel@openvz.org
T24gV2VkLCAyMDEyLTAzLTA3IGF0IDEyOjM0ICswNDAwLCBTdGFuaXNsYXYgS2luc2J1cnNreSB3
cm90ZToNCj4gMDcuMDMuMjAxMiAwNDoxOSwgTXlrbGVidXN0LCBUcm9uZCDQv9C40YjQtdGCOg0K
PiA+IE9uIFdlZCwgMjAxMi0wMi0yOSBhdCAxODo1OSArMDQwMCwgU3RhbmlzbGF2IEtpbnNidXJz
a3kgd3JvdGU6DQo+ID4+IFRvZGF5LCB0aGVyZSBpcyBhIHByb2JsZW0gaW4gY29ubmVjdGluZyBv
ZiBsb2NhbCBTVU5SUEMgdGhhbnNwb3J0cy4gVGhlc2UNCj4gPj4gdHJhbnNwb3J0cyB1c2VzIFVO
SVggc29ja2V0cyBhbmQgY29ubmVjdGlvbiBpdHNlbGYgaXMgZG9uZSBieSBycGNpb2Qgd29ya3F1
ZXVlLg0KPiA+PiBCdXQgVU5JWCBzb2NrZXRzIGxvb2t1cCBpcyBkb25lIGluIGNvbnRleHQgb2Yg
cHJvY2VzcyBmaWxlIHN5c3RlbSByb290LiBJLmUuDQo+ID4+IGFsbCBsb2NhbCB0aHVuc3BvcnRz
IGFyZSBjb25uZWN0aW5nIGluIHJwY2lvZCBjb250ZXh0Lg0KPiA+PiBUaGlzIHdvcmtzIG5pY2Ug
dW50aWwgd2Ugd2lsbCB0cnkgdG8gbW91bnQgTkZTIGZyb20gcHJvY2VzcyB3aXRoIG90aGVyIHJv
b3QgLQ0KPiA+PiBmb3IgZXhhbXBsZSBpbiBjb250YWluZXIuIFRoaXMgY29udGFpbmVyIGNhbiBo
YXZlIGl0J3Mgb3duIChuZXN0ZWQpIHJvb3QgYW5kDQo+ID4+IHJjcGJpbmQgcHJvY2VzcywgbGlz
dGVuaW5nIG9uIGl0J3Mgb3duIHVuaXggc29ja2V0cy4gQnV0IE5GUyBtb3VudCBhdHRlbXB0IGlu
DQo+ID4+IHRoaXMgY29udGFpbmVyIHdpbGwgcmVnaXN0ZXIgbmV3IHNlcnZpY2UgKExvY2tkIGZv
ciBleGFtcGxlKSBpbiBnbG9iYWwgcnBjYmluZA0KPiA+PiAtIG5vdCBjb250YWluZXJzJ3Mgb25l
Lg0KPiA+PiBUaGlzIHBhdGNoIHNvbHZlcyB0aGUgcHJvYmxlbSBieSBzd2l0Y2hpbmcgcnBjaW9k
IGtlcm5lbCB0aHJlYWQncyBmaWxlIHN5c3RlbQ0KPiA+PiByb290IHRvIHJpZ2h0IG9uZSAoc3Rv
cmVkIG9uIHRyYW5zcG9ydCkgd2hpbGUgY29ubmVjdGluZyBvZiBsb2NhbCB0cmFuc3BvcnRzLg0K
PiA+Pg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNsYXYgS2luc2J1cnNreTxza2luc2J1cnNr
eUBwYXJhbGxlbHMuY29tPg0KPiA+Pg0KPiA+PiAtLS0NCj4gPj4gICBmcy9mc19zdHJ1Y3QuYyAg
ICAgICAgfCAgICAxICsNCj4gPj4gICBuZXQvc3VucnBjL3hwcnRzb2NrLmMgfCAgIDMyICsrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKy0tDQo+ID4+ICAgMiBmaWxlcyBjaGFuZ2VkLCAzMSBp
bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvZnMv
ZnNfc3RydWN0LmMgYi9mcy9mc19zdHJ1Y3QuYw0KPiA+PiBpbmRleCA3OGI1MTljLi4wZjk4NGMz
IDEwMDY0NA0KPiA+PiAtLS0gYS9mcy9mc19zdHJ1Y3QuYw0KPiA+PiArKysgYi9mcy9mc19zdHJ1
Y3QuYw0KPiA+PiBAQCAtMzYsNiArMzYsNyBAQCB2b2lkIHNldF9mc19yb290KHN0cnVjdCBmc19z
dHJ1Y3QgKmZzLCBzdHJ1Y3QgcGF0aCAqcGF0aCkNCj4gPj4gICAJaWYgKG9sZF9yb290LmRlbnRy
eSkNCj4gPj4gICAJCXBhdGhfcHV0X2xvbmd0ZXJtKCZvbGRfcm9vdCk7DQo+ID4+ICAgfQ0KPiA+
PiArRVhQT1JUX1NZTUJPTF9HUEwoc2V0X2ZzX3Jvb3QpOw0KPiA+Pg0KPiA+PiAgIC8qDQo+ID4+
ICAgICogUmVwbGFjZSB0aGUgZnMtPntwd2RtbnQscHdkfSB3aXRoIHttbnQsZGVudHJ5fS4gUHV0
IHRoZSBvbGQgdmFsdWVzLg0KPiA+PiBkaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0c29jay5j
IGIvbmV0L3N1bnJwYy94cHJ0c29jay5jDQo+ID4+IGluZGV4IDRjODI4MWQuLmM5NGMxODEgMTAw
NjQ0DQo+ID4+IC0tLSBhL25ldC9zdW5ycGMveHBydHNvY2suYw0KPiA+PiArKysgYi9uZXQvc3Vu
cnBjL3hwcnRzb2NrLmMNCj4gPj4gQEAgLTM3LDYgKzM3LDcgQEANCj4gPj4gICAjaW5jbHVkZTxs
aW51eC9zdW5ycGMvc3Zjc29jay5oPg0KPiA+PiAgICNpbmNsdWRlPGxpbnV4L3N1bnJwYy94cHJ0
c29jay5oPg0KPiA+PiAgICNpbmNsdWRlPGxpbnV4L2ZpbGUuaD4NCj4gPj4gKyNpbmNsdWRlPGxp
bnV4L2ZzX3N0cnVjdC5oPg0KPiA+PiAgICNpZmRlZiBDT05GSUdfU1VOUlBDX0JBQ0tDSEFOTkVM
DQo+ID4+ICAgI2luY2x1ZGU8bGludXgvc3VucnBjL2JjX3hwcnQuaD4NCj4gPj4gICAjZW5kaWYN
Cj4gPj4gQEAgLTI1NSw2ICsyNTYsMTEgQEAgc3RydWN0IHNvY2tfeHBydCB7DQo+ID4+ICAgCXZv
aWQJCQkoKm9sZF9zdGF0ZV9jaGFuZ2UpKHN0cnVjdCBzb2NrICopOw0KPiA+PiAgIAl2b2lkCQkJ
KCpvbGRfd3JpdGVfc3BhY2UpKHN0cnVjdCBzb2NrICopOw0KPiA+PiAgIAl2b2lkCQkJKCpvbGRf
ZXJyb3JfcmVwb3J0KShzdHJ1Y3Qgc29jayAqKTsNCj4gPj4gKw0KPiA+PiArCS8qDQo+ID4+ICsJ
ICogU2F2ZWQgdHJhbnNwb3J0IGNyZWF0b3Igcm9vdC4gUmVxdWlyZWQgZm9yIGxvY2FsIHRyYW5z
cG9ydHMgb25seS4NCj4gPj4gKwkgKi8NCj4gPj4gKwlzdHJ1Y3QgcGF0aAkJcm9vdDsNCj4gPj4g
ICB9Ow0KPiA+Pg0KPiA+PiAgIC8qDQo+ID4+IEBAIC0xODkxLDYgKzE4OTcsNyBAQCBzdGF0aWMg
dm9pZCB4c19sb2NhbF9zZXR1cF9zb2NrZXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiA+
PiAgIAlzdHJ1Y3QgcnBjX3hwcnQgKnhwcnQgPSZ0cmFuc3BvcnQtPnhwcnQ7DQo+ID4+ICAgCXN0
cnVjdCBzb2NrZXQgKnNvY2s7DQo+ID4+ICAgCWludCBzdGF0dXMgPSAtRUlPOw0KPiA+PiArCXN0
cnVjdCBwYXRoIHJvb3Q7DQo+ID4+DQo+ID4+ICAgCWlmICh4cHJ0LT5zaHV0ZG93bikNCj4gPj4g
ICAJCWdvdG8gb3V0Ow0KPiA+PiBAQCAtMTkwOCw3ICsxOTE1LDE0IEBAIHN0YXRpYyB2b2lkIHhz
X2xvY2FsX3NldHVwX3NvY2tldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ID4+ICAgCWRw
cmludGsoIlJQQzogICAgICAgd29ya2VyIGNvbm5lY3RpbmcgeHBydCAlcCB2aWEgQUZfTE9DQUwg
dG8gJXNcbiIsDQo+ID4+ICAgCQkJeHBydCwgeHBydC0+YWRkcmVzc19zdHJpbmdzW1JQQ19ESVNQ
TEFZX0FERFJdKTsNCj4gPj4NCj4gPj4gKwlnZXRfZnNfcm9vdChjdXJyZW50LT5mcywmcm9vdCk7
DQo+ID4+ICsJc2V0X2ZzX3Jvb3QoY3VycmVudC0+ZnMsJnRyYW5zcG9ydC0+cm9vdCk7DQo+ID4+
ICsNCj4gPj4gICAJc3RhdHVzID0geHNfbG9jYWxfZmluaXNoX2Nvbm5lY3RpbmcoeHBydCwgc29j
ayk7DQo+ID4+ICsNCj4gPj4gKwlzZXRfZnNfcm9vdChjdXJyZW50LT5mcywmcm9vdCk7DQo+ID4+
ICsJcGF0aF9wdXQoJnJvb3QpOw0KPiA+PiArDQo+ID4+ICAgCXN3aXRjaCAoc3RhdHVzKSB7DQo+
ID4+ICAgCWNhc2UgMDoNCj4gPg0KPiA+IEhpIFN0YW5pc2xhdiwNCj4gPg0KPiA+IFdoYXQgaGFw
cGVucyBoZXJlIGlmIHRoZSBtb3VudCBuYW1lc3BhY2Ugb2YgdGhlIHByb2Nlc3MgdGhhdCBvcmln
aW5hbGx5DQo+ID4gY3JlYXRlZCB0aGUgc29ja194cHJ0IG5vIGxvbmdlciBleGlzdHM/IFNob3Vs
ZCB3ZSBjYXJlIGFib3V0IHRoYXQgY2FzZT8NCj4gPg0KPiANCj4gSGksIFRyb25kLg0KPiBMb29r
cyBsaWtlIHRoaXMgaXMgbm90IGEgcHJvYmxlbSwgYmVjYXVzZSBwcm9jZXNzIGZzLT5yb290LT5t
bnQgdXNhZ2UgY291bnRlciANCj4gd2FzIGluY3JlYXNlZCBvbiB0cmFuc3BvcnQgY3JlYXRpb24u
DQo+IElPVywgdHJhbnNwb3J0IGhvbGRzIGN1cnJlbnQgcm9vdCBhbmQgdGh1cyBtb3VudCBuYW1l
c3BhY2UgY2FuJ3QgZGlzYXBwZWFyLg0KPiANCg0KVGhhdCBwaW5zIHRoZSByb290IHN0cnVjdCB2
ZnNtb3VudCwgYnV0IGl0IGRvZXNuJ3QgcGluIHRoZSBhY3R1YWwNCnByb2Nlc3MgbW91bnQgbmFt
ZXNwYWNlLiBJZiB0aGUgcHJvY2VzcyBpcyBkZWFkLCB0aGVuIGl0IGlzIHF1aXRlDQpwb3NzaWJs
ZSB0aGF0IHRoZSBzdHJ1Y3QgbW50X25hbWVzcGFjZSBpcyBnb25lLCBpbiB3aGljaCBjYXNlIHdo
aWxlIHlvdQ0KYXJlIHBpbm5pbmcgdGhlIHJvb3QgKGkuZS4gJy8nKSwgc3VibW91bnRzIHN1Y2gg
YXMgJy92YXInIG1heSBiZSBnb25lLg0KDQpPVE9ILCBJIHN1cHBvc2UgdGhhdCB5b3UgY2FuIGFy
Z3VlIHRoYXQgaWYgdGhlIG1udF9uYW1lc3BhY2UgaXMgZ29uZSwNCnRoZW4gcnBjYmluZCBjYW4n
dCBiZSBsaXN0ZW5pbmcgb24gL3Zhci9ydW4vcnBjYmluZC5zb2NrIGFuZCBzbyB5b3UgYXJlDQpz
Y3Jld2VkIGFueXdheS4uLg0KDQpPSy4uLi4gUGxlYXNlIGp1c3QgcmVzZW5kIHRoZSBwYXRjaCwg
Q2NpbmcgQWwgVmlybyBhbmQgQ2hyaXN0b3BoIHNvIHRoYXQNCndlIGNhbiBnZXQgdGhlaXIgb3Bp
bmlvbi4NCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5l
cg0KDQpOZXRBcHANClRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tDQp3d3cubmV0YXBwLmNvbQ0K
DQo=
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-03-07 13:21 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-29 14:59 [PATCH] SUNRPC: set desired file system root before connecting local transports Stanislav Kinsbursky
2012-03-07 0:19 ` Myklebust, Trond
2012-03-07 0:21 ` Myklebust, Trond
2012-03-07 8:36 ` Stanislav Kinsbursky
2012-03-07 8:34 ` Stanislav Kinsbursky
2012-03-07 13:21 ` Myklebust, Trond
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).