On 2019/4/18 下午10:10, Josef Bacik wrote: > On Thu, Apr 18, 2019 at 10:24:10AM +0300, Nikolay Borisov wrote: >> >> >> On 18.04.19 г. 10:21 ч., Qu Wenruo wrote: >>> There is a BUG_ON() in __clear_extent_bit() for memory allocation >>> failure. >>> >>> While comment of __clear_extent_bit() says it can return error, but we >>> always return 0. >>> >>> Some __clear_extent_bit() callers just ignore the return value, while >>> some still expect error. >>> >>> Let's return proper error for this memory allocation anyway, to remove >>> that BUG_ON() as a first step, so at least we can continue test. >> >> I remember Josef did some changes into this code and said that prealloc >> shouldn't fail because this will cause mayhem down the road i.e. proper >> error handling is missing. If anything I think it should be added first >> and then remove the BUG_ONs. > > I'm ok with changing this, but it needs to be more than just one patch. Make > alloc_extent_state_atomic() error injectable and then use either error-inject.py > in bcc or use > https://github.com/josefbacik/debug-scripts/blob/master/inject-error.py to test > it and fix all the fallout from not handling lock_extent() succeeding. Exactly what I'm going to do. With some blend from bcc inject.py, for stack filter to provide more precious match. > > You can use https://github.com/josefbacik/debug-scripts/blob/master/codepaths.py > to find all call sites for inject-error to make sure you are catching all the > cases. Thanks, That script is awesome! Thanks, Qu > > Josef >
