Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 319859
b: refs/heads/master
c: 4bb6106
h: refs/heads/master
i:
  319857: 35f8ee8
  319855: 9fc9b47
v: v3
  • Loading branch information
Christoph Hellwig authored and Ben Myers committed Jul 29, 2012
1 parent 41bc3be commit eafc897
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 22 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: 08358906ed78f6ab4d3ff8e4fd1b87b9a4aea645
refs/heads/master: 4bb61069d2019dea2a7e4e0f4432101f03a9b820
47 changes: 26 additions & 21 deletions trunk/fs/xfs/xfs_ialloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,10 @@ xfs_dialloc_ag(

pag = xfs_perag_get(mp, agno);

ASSERT(pag->pagi_init);
ASSERT(pag->pagi_inodeok);
ASSERT(pag->pagi_freecount > 0);

restart_pagno:
cur = xfs_inobt_init_cursor(mp, tp, agbp, agno);
/*
Expand Down Expand Up @@ -907,32 +911,32 @@ xfs_dialloc(
xfs_agnumber_t tagno;
struct xfs_perag *pag;

if (*IO_agbp == NULL) {
/*
* We do not have an agbp, so select an initial allocation
* group for inode allocation.
*/
agbp = xfs_ialloc_ag_select(tp, parent, mode, okalloc);
if (*IO_agbp) {
/*
* Couldn't find an allocation group satisfying the
* criteria, give up.
*/
if (!agbp) {
*inop = NULLFSINO;
return 0;
}
agi = XFS_BUF_TO_AGI(agbp);
ASSERT(agi->agi_magicnum == cpu_to_be32(XFS_AGI_MAGIC));
} else {
/*
* Continue where we left off before. In this case, we
* If the caller passes in a pointer to the AGI buffer,
* continue where we left off before. In this case, we
* know that the allocation group has free inodes.
*/
agbp = *IO_agbp;
agi = XFS_BUF_TO_AGI(agbp);
ASSERT(agi->agi_magicnum == cpu_to_be32(XFS_AGI_MAGIC));
ASSERT(be32_to_cpu(agi->agi_freecount) > 0);
goto out_alloc;
}

/*
* We do not have an agbp, so select an initial allocation
* group for inode allocation.
*/
agbp = xfs_ialloc_ag_select(tp, parent, mode, okalloc);

/*
* Couldn't find an allocation group satisfying the
* criteria, give up.
*/
if (!agbp) {
*inop = NULLFSINO;
return 0;
}
agi = XFS_BUF_TO_AGI(agbp);

mp = tp->t_mountp;
agno = be32_to_cpu(agi->agi_seqno);
tagno = agno;
Expand Down Expand Up @@ -1012,6 +1016,7 @@ xfs_dialloc(
ASSERT(agi->agi_magicnum == cpu_to_be32(XFS_AGI_MAGIC));
}

out_alloc:
*IO_agbp = NULL;
return xfs_dialloc_ag(tp, agbp, parent, inop);
}
Expand Down

0 comments on commit eafc897

Please sign in to comment.