lkml.org 
[lkml]   [2008]   [Aug]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 4/6] Replace inode flush semaphore with a completion
    From
    Date
    On Fri, 2008-06-27 at 18:44 +1000, Dave Chinner wrote:
    > Use the new completion flush code to implement the inode
    > flush lock. Removes one of the final users of semaphores
    > in the XFS code base.
    >
    > Version 2:
    > o make flock functions static inlines
    > o use new completion interfaces

    I was looking over this lock in XFS .. The iflock/ifunlock seem to be
    very much like mutexes in most of the calling locations. Where the lock
    happens at the start, and the unlock happens when the function calls
    bottom out. It seems like a better way to go would be to change from,

    xfs_ilock(uqp, XFS_ILOCK_EXCL);
    xfs_iflock(uqp);
    error = xfs_iflush(uqp, XFS_IFLUSH_SYNC);

    Where xfs_iflush eventually does the unlock to,

    xfs_ilock(uqp, XFS_ILOCK_EXCL);
    xfs_iflock(uqp);
    error = xfs_iflush(uqp, XFS_IFLUSH_SYNC);
    xfs_ifunlock(uqp);

    And remove the unlocking from inside xfs_iflush(). Then use a flag to
    indicate that the flush is in progress, and a
    completion/wait_for_completion when another thread needs to wait on the
    flush to complete if it's an async flush.

    That seems vastly more complex than your current patch, but I think it
    will be much cleaner ..

    Daniel



    \
     
     \ /
      Last update: 2008-08-13 05:13    [W:0.021 / U:210.616 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site