• Frederic Weisbecker's avatar
    kill-the-BKL/reiserfs: release write lock while rescheduling on prepare_for_delete_or_cut() · 5e69e3a4
    Frederic Weisbecker authored
    prepare_for_delete_or_cut() can process several types of items, including
    indirect items, ie: items which contain no file data but pointers to
    unformatted nodes scattering the datas of a file.
    
    In this case it has to zero out these pointers to block numbers of
    unformatted nodes and release the bitmap from these block numbers.
    
    It can take some time, so a rescheduling() is performed between each
    block processed. We can safely release the write lock while
    rescheduling(), like the bkl did, because the code checks just after
    if the item has moved after sleeping.
    
    [ Impact: release the reiserfs write lock when it is not needed ]
    
    Cc: Jeff Mahoney <jeffm@suse.com>
    Cc: Chris Mason <chris.mason@oracle.com>
    Cc: Alexander Beregalov <a.beregalov@gmail.com>
    Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    5e69e3a4
stree.c 63.3 KB