[Top] [All Lists]

TAKE 988143 - Use a cursor for AIL traversal.

To: sgi.bugs.xfs@xxxxxxxxxxxx, xfs@xxxxxxxxxxx
Subject: TAKE 988143 - Use a cursor for AIL traversal.
From: lachlan@xxxxxxx (Lachlan McIlroy)
Date: Thu, 16 Oct 2008 15:34:01 +1100 (EST)
Use a cursor for AIL traversal.

To replace the current generation number ensuring sanity of the AIL
traversal, replace it with an external cursor that is linked to the

Basically, we store the next item in the cursor whenever we want to
drop the AIL lock to do something to the current item.  When we
regain the lock. the current item may already be free, so we can't
reference it, but the next item in the traversal is already held in
the cursor.

When we move or delete an object, we search all the active cursors
and if there is an item match we clear the cursor(s) that point to
the object. This forces the traversal to restart transparently.

We don't invalidate the cursor on insert because the cursor still
points to a valid item. If the intem is inserted between the current
item and the cursor it does not matter; the traversal is considered
to be past the insertion point so it will be picked up in the next

Hence traversal restarts pretty much disappear altogether with this
method of traversal, which should substantially reduce the overhead
of pushing on a busy AIL.

Version 2
o add restart logic
o comment cursor interface
o minor cleanups

Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>

Date:  Thu Oct 16 15:33:42 EST 2008
Workarea:  redback.melbourne.sgi.com:/home/lachlan/isms/2.6.x-ail
Inspected by:  hch
Author:  lachlan

The following file(s) were checked into:

Modid:  xfs-linux-melb:xfs-kern:32347a
fs/xfs/xfs_log.c - 1.369 - changed
fs/xfs/xfs_trans_priv.h - 1.32 - changed
fs/xfs/xfs_trans_ail.c - 1.89 - changed
fs/xfs/xfs_log_recover.c - 1.350 - changed
        - Use a cursor for AIL traversal.

<Prev in Thread] Current Thread [Next in Thread>
  • TAKE 988143 - Use a cursor for AIL traversal., Lachlan McIlroy <=