[dm-devel] NetBSD libdevmapper port

Mikulas Patocka mpatocka at redhat.com
Fri Jun 13 22:12:01 UTC 2008


On Fri, 13 Jun 2008, Alasdair G Kergon wrote:

> On Fri, Jun 13, 2008 at 12:51:48PM -0400, Mikulas Patocka wrote:
>> This suspend thing was a big misdesign and if you are writing it from
>> scratch, try to avoid it.
>
> Despite how things might seem, we gained some substantial
> simplifications by doing things this way and I reject the term
> 'misdesign':-)  If writing this from scratch under similar time
> constraints, we would still handle this a similar way.

If you sum up the time that you spent looking for the deadlocks (for 
example that one when writing to raw device while suspended updated inode 
mtime field and the kernel tried to write that inode to the suspended root 
device), thinking how to do proper memory and stack preallocation and 
locking, how to allocate structure for ioctl arguments (that trick with 
PF_MEMALLOC, still not bug-free, but at least works in typical scenarios) 
+ plus the time still needed to fix things that are still broken (that 
GFP_KERNEL allocation in direct IO path, PF_MEMALLOC allocation in ioctl 
parameter copying) --- and compare this time to the hypothetical time how 
long it would take to write IOCTL call that performs few operations in a 
batch and never returns to userspace with suspended device --- which one 
do you think would win? I think the second solution would be written 
faster and with fewer bugs.

BTW. is there any need to update on-disk metadata while suspended? What 
would happen if we first updated metadata and then did suspend+resume in 
just one syscall? For linear or snapshots, there should be no problem, I'm 
interested if there's a dm target where this could produce a race 
condition.

Mikulas

> But this suspend/resume mechanism was never intended to last as long as
> it has - it was meant to be a stepping stone to a more-sophisticated
> transaction mechanism that we have still not found time to develop,
> mostly because this existing mechanism is "good enough" most of the
> time.
>
> Alasdair
> -- 
> agk at redhat.com
>
> --
> dm-devel mailing list
> dm-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
>




More information about the dm-devel mailing list