Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 229045
b: refs/heads/master
c: eb3efa1
h: refs/heads/master
i:
  229043: 35eefe8
v: v3
  • Loading branch information
Dave Chinner authored and Dave Chinner committed Dec 3, 2010
1 parent 52d6165 commit 9efbdc7
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 21 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b199c8a4ba11879df87daad496ceee41fdc6aa82
refs/heads/master: eb3efa1249b6413be930bdf13d10b6238028a440
27 changes: 7 additions & 20 deletions trunk/fs/xfs/xfs_trans_ail.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
#include "xfs_error.h"

STATIC void xfs_ail_insert(struct xfs_ail *, xfs_log_item_t *);
STATIC xfs_log_item_t * xfs_ail_delete(struct xfs_ail *, xfs_log_item_t *);
STATIC void xfs_ail_delete(struct xfs_ail *, xfs_log_item_t *);
STATIC xfs_log_item_t * xfs_ail_min(struct xfs_ail *);
STATIC xfs_log_item_t * xfs_ail_next(struct xfs_ail *, xfs_log_item_t *);

Expand Down Expand Up @@ -468,24 +468,21 @@ xfs_trans_ail_update(
xfs_log_item_t *lip,
xfs_lsn_t lsn) __releases(ailp->xa_lock)
{
xfs_log_item_t *dlip = NULL;
xfs_log_item_t *mlip; /* ptr to minimum lip */
xfs_lsn_t tail_lsn;

mlip = xfs_ail_min(ailp);

if (lip->li_flags & XFS_LI_IN_AIL) {
dlip = xfs_ail_delete(ailp, lip);
ASSERT(dlip == lip);
xfs_trans_ail_cursor_clear(ailp, dlip);
xfs_ail_delete(ailp, lip);
} else {
lip->li_flags |= XFS_LI_IN_AIL;
}

lip->li_lsn = lsn;
xfs_ail_insert(ailp, lip);

if (mlip == dlip) {
if (mlip == lip) {
mlip = xfs_ail_min(ailp);
/*
* It is not safe to access mlip after the AIL lock is
Expand Down Expand Up @@ -524,21 +521,18 @@ xfs_trans_ail_delete(
struct xfs_ail *ailp,
xfs_log_item_t *lip) __releases(ailp->xa_lock)
{
xfs_log_item_t *dlip;
xfs_log_item_t *mlip;
xfs_lsn_t tail_lsn;

if (lip->li_flags & XFS_LI_IN_AIL) {
mlip = xfs_ail_min(ailp);
dlip = xfs_ail_delete(ailp, lip);
ASSERT(dlip == lip);
xfs_trans_ail_cursor_clear(ailp, dlip);
xfs_ail_delete(ailp, lip);


lip->li_flags &= ~XFS_LI_IN_AIL;
lip->li_lsn = 0;

if (mlip == dlip) {
if (mlip == lip) {
mlip = xfs_ail_min(ailp);
/*
* It is not safe to access mlip after the AIL lock
Expand Down Expand Up @@ -632,7 +626,6 @@ STATIC void
xfs_ail_insert(
struct xfs_ail *ailp,
xfs_log_item_t *lip)
/* ARGSUSED */
{
xfs_log_item_t *next_lip;

Expand Down Expand Up @@ -661,18 +654,14 @@ xfs_ail_insert(
/*
* Delete the given item from the AIL. Return a pointer to the item.
*/
/*ARGSUSED*/
STATIC xfs_log_item_t *
STATIC void
xfs_ail_delete(
struct xfs_ail *ailp,
xfs_log_item_t *lip)
/* ARGSUSED */
{
xfs_ail_check(ailp, lip);

list_del(&lip->li_ail);

return lip;
xfs_trans_ail_cursor_clear(ailp, lip);
}

/*
Expand All @@ -682,7 +671,6 @@ xfs_ail_delete(
STATIC xfs_log_item_t *
xfs_ail_min(
struct xfs_ail *ailp)
/* ARGSUSED */
{
if (list_empty(&ailp->xa_ail))
return NULL;
Expand All @@ -699,7 +687,6 @@ STATIC xfs_log_item_t *
xfs_ail_next(
struct xfs_ail *ailp,
xfs_log_item_t *lip)
/* ARGSUSED */
{
if (lip->li_ail.next == &ailp->xa_ail)
return NULL;
Expand Down

0 comments on commit 9efbdc7

Please sign in to comment.