On 11/18 2013 07:04 PM, Christoph Hellwig wrote:
> 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.
Ok, thanks for clearing up my confusion.
Thanks,
-Jeff
|