tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: WAPBL fix for deallocation exhaustion + slow file removal



The fix was committed, with only minor changes (some comments, and
fixed mishandling of error return value in ffs_indirtrunc().

Jaromir

2016-10-06 22:36 GMT+02:00 Jaromír Doleček <jaromir.dolecek%gmail.com@localhost>:
> I've incorporated the mutex fix, here is the final patch relative to
> trunk. I'd like to commit this sometime next week.
>
> Jaromir
>
> 2016-10-01 19:00 GMT+02:00 Taylor R Campbell
> <campbell+netbsd-tech-kern%mumble.net@localhost>:
>>    Date: Sat, 1 Oct 2016 18:40:31 +0200
>>    From: Jaromír Dole ek <jaromir.dolecek%gmail.com@localhost>
>>
>>    > Thanks for taking a shot at this!  But I think it needs a little more
>>    > time for review -- certainly I can't digest it in the 24 hours you're
>>    > giving.
>>
>>    Sure.
>>
>> OK, thanks!  I'll try to find some time to review this more carefully
>> in the next few days.  For now, one comment:
>>
>>    > From a quick glance at the patch, I see one bug immediately in
>>    > vfs_wapbl.c that must have been introduced in a recent change:
>>    > pool_get(PR_WAITOK) is forbidden while holding a mutex, but
>>    > wapbl_register_deallocation does just that.
>>
>>    I'll recheck this, thank you. I run it under rump only, I think I had
>>    it compiled LOCKDEBUG, so should trigger the same assertions as
>>    LOCKDEBUG kernel. But apparently not.
>>
>> Since wl->wl_mtx is an adaptive lock, not a spin lock, nothing
>> automatically detects this.  But in general, with minor exceptions,
>> one is not supposed to sleep while holding an adaptive lock.
>> (Exception example: waiting for a cheap cross-call to complete in
>> pserialize_perform(9).)
>>
>> It's also suboptimal that we sleep while holding rwlocks for vnode
>> locks, since rw_enter is uninterruptable, so if a wait inside the
>> kernel hangs with a vnode lock held, anyone else trying to examine
>> that vnode will hang uninterruptably too.  But it will take some
>> effort to undo that state of affairs by teaching all callers of
>> vn_lock to accept failure.
>>
>> The same goes for the the long-term file system transaction lock
>> wl->wl_rwlock.  However, suboptimality of sleeping with those
>> long-term locks aside, certainly one should not sleep while holding
>> the short-term wl->wl_mtx.


Home | Main Index | Thread Index | Old Index