lkml.org 
[lkml]   [2007]   [Oct]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH 09/31] IGET: Stop BFS from using iget() and read_inode() [try #3]
    Date
    Roel Kluin <12o3l@tiscali.nl> wrote:

    > > + if (IS_ERR(inode))
    > > + return ERR_PTR(-ENOMEM);
    > > + if (!(inode->i_state & I_NEW))
    > > + return inode;
    >
    > Don't you have to unlock_new_inode(inode) before returning?

    In the first case, no because an OOM error was returned rather than an inode,
    and in the second case, no because an extant non-locked inode was returned.

    The inode is only returned locked by iget_locked() if it is also new - in
    which case we don't return in either of the above two statements.

    > > +error:
    >
    > and also here?
    >
    > > + iget_failed(inode);
    > > + return ERR_PTR(-EIO);

    Take a look at what iget_failed() does (patch #3):

    void iget_failed(struct inode *inode)
    {
    make_bad_inode(inode);
    unlock_new_inode(inode);
    iput(inode);
    }

    David
    -
    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: 2007-10-11 09:43    [W:0.020 / U:119.140 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site