[PATCH 7/7] xfs: merge xfs_ialloc_ag_select into xfs_dialloc
Mark Tinguely
tinguely at sgi.com
Mon Jul 30 12:21:00 CDT 2012
On 07/26/12 12:47, Mark Tinguely wrote:
>
>
> + if (pass < 2) {
> + /*
> + * Is there enough free space for the file plus a block
> + * of inodes?
> + */
> + xfs_extlen_t longest = pag->pagf_longest;
> + int needspace =
> + S_ISDIR(mode) || S_ISREG(mode) || S_ISLNK(mode);
> +
> + if (!longest)
> + longest = pag->pagf_flcount > 0;
> +
> + if (pag->pagf_freeblks <
> + XFS_IALLOC_BLOCKS(mp) + needspace)
> + goto nextag;
> ^^^^^^^ here
>
> + if (longest < XFS_IALLOC_BLOCKS(mp))
> + goto nextag;
>
> ^^^^^^^ and here
> + }
>
> Isn't the agbp locked from the earlier xfs_ialloc_read_agi()?
> Do we want to release them before going on to the next AG?
>
> Thank-you,
>
> --Mark.
>
same line of thought as above:
+ if (!pag->pagf_init) {
+ int flags = pass ? 0 : XFS_ALLOC_FLAG_TRYLOCK;
+
+ error = xfs_alloc_pagf_init(mp, tp, agno, flags);
+ if (error)
+ goto out_error;
+ }
Also, don't we still have the AGI buffer locked when we try to
initialize the AGF? If the AGF initialization fails, do we need to also
unlock the AGI buffer before returning?
Thank-you.
--Mark.
More information about the xfs
mailing list