[dm-devel] [PATCH 1/2] Add userspace device-mapper target
FUJITA Tomonori
fujita.tomonori at lab.ntt.co.jp
Mon Feb 19 23:55:22 UTC 2007
From: Dan Smith <danms at us.ibm.com>
Subject: Re: [dm-devel] [PATCH 1/2] Add userspace device-mapper target
Date: Mon, 19 Feb 2007 07:16:29 -0800
> I've got a hacked-up version running that allows userspace to provide
> a pointer to a buffer to be written after the original bio completes.
Great.
> This seems to work pretty well, but I haven't added support to the
> library or my cow application, so I'm not sure how the performance
> differs.
>
> There is something that needs to be resolved, however. Currently,
> bio_map_user() assumes it is being run in process context. Since we
> defer to a kthread for all ring buffer processing, we can't easily
> construct the extra bios. So, there are two paths forward that I can
> think of:
>
> 1. Redesign how we process messages going to the kernel. Userspace
> could mark them as "tentatively ready" and then do the write()
> which just goes through and constructs extra bios and marks them
> "ready". This seems undesirable to me, because we're increasing
> the amount of time that userspace is blocked in the kernel.
Yeah, it's not the best way for the performance perspective. But your
original code used this logic, didn't it? I guess that the code
doesn't give notable performance difference even if dmu_ctl_write
checks new requests and calls bio_map_user if necessary.
> 2. Add a bio_map_user_from() call to the kernel, which behaves just
> like bio_map_user(), but takes a struct task struct pointer to the
> process to map from, thus allowing the kthread to construct the
> bios asynchronously. I have a patch cooked up to do this, but I'm
> worried that it might be rather controversial.
This path isn't easy,
More information about the dm-devel
mailing list