lkml.org 
[lkml]   [2006]   [Oct]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    Subject[Q] missing ->d_delete() in shrink_dcache_for_umount()?
    David,

    Vasily Averin wrote:
    > Hello folks,
    >
    > I would like to ask you clarify me one question in the the following patch:
    > http://linux.bkbits.net:8080/linux-2.6/gnupatch@449b144ecSF1rYskg3q-SeR2vf88zg
    > # ChangeSet
    > # 2006/06/22 15:05:57-07:00 neilb@suse.de
    > # [PATCH] Fix dcache race during umount
    >
    > # If prune_dcache finds a dentry that it cannot free, it leaves it where it
    > # is (at the tail of the list) and exits, on the assumption that some other
    > # thread will be removing that dentry soon.

    It looks like I've noticed yet one suspicious place in your patch. As far as I
    see you have removed dput(root) call in shrink_dcache_for_umount() function.
    However I would note that dput contains ->d_delete() call that is missing in
    your function:

    if (dentry->d_op && dentry->d_op->d_delete) {
    if (dentry->d_op->d_delete(dentry))
    goto unhash_it;

    I'm not sure but it seems to me some (probably out-of-tree) filesystems can do
    something useful in this place.

    Thank you,
    Vasily Averin
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-10-31 14:27    [W:0.020 / U:2.472 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site