On Sun, Nov 17, 2013 at 09:01:08PM +0800, Jeff Liu wrote:
> On 11/16 2013 01:26 AM, Christoph Hellwig wrote:
> > As Dave pointed out this really should be xfs_bukstat_ag. But looking
> > at the code you're almost 90% there anyway.
> One main reason I did not make a per ag bulkstat is because bulkstat() will
> skip an allocation group if read agi buffer failed, i.e,
>
> while (XFS_BULKSTAT_UBLEFT(ubleft) && agno < mp->m_sb.sb_agcount) {
> cond_resched();
> error = xfs_ialloc_read_agi(mp, NULL, agno, &agbp);
> if (error) {
> /*
> * Skip this allocation group and go to the next one.
> */
> agno++;
> agino = 0;
> continue;
> }
> ....
> }
>
> Should it capture this issue and drop a warning in this case?
I've been thinking hard about this, but I can't really see any reason
why we would skip an AG instead of propagating the error. The only
error xfs_ialloc_read_agi can return is an I/O error from reading
the buffer from disk, and we'd really want to propagate that sort
of I/O errror. I'd suggest a patch at the beginning of the series
to just change that behavior for all the two places in bulkstat that
call xfs_ialloc_read_agi. None of the other callers seem to behave
this way either.
|