[PATCH v3 0/6] xfs: some xfs_dialloc() cleanup

Gao Xiang
2020-12-07T00:18:07Z

Hi folks,

This is v3 of the following patchset
https://lore.kernel.org/r/20201124155130.40848-1-hsiangkao@redhat.com
, which tends to simplify xfs_dialloc() logic.

This version includes Dave's original patch
https://lore.kernel.org/r/20201124221623.GC2842436@dread.disaster.area

to avoid the original double call of xfs_dialloc() and confusing
ialloc_context with some split in order for better review and minor
modification (e.g. ino isn't passed in xfs_ialloc()).

I'm not quite sure what's messy ENOSPC mentioned in the original
patch since return 0 and *ipp = NULL in xfs_dir_ialloc() would cause
NULL-dereference in its callers, so I leave this part alone, although
I think noroom has no use at all (it can be cleaned up as well with
a following patch) (at a glance, the final shape looks almost ok...)

I dropped [PATCH v1 3/3] since xfs_ialloc_select_ag() already looks
simple enough (comments about this are welcome... I can re-add this
if needed.)

I ran xfstests -g auto with the whole series and it seems no
noticable strange happening, yet I'm not quite sure if it may still
have potential issues...

Thanks for your time.

changes since v2:
- use struct xfs_dquot_acct * instead of void * on dqinfo (Darrick);
- rename xfs_ialloc() to xfs_dir_ialloc_init() (Dave);
- fix a temporary state compile error due to (ialloc_context ->
&ialloc_context) on [PATCH v2 3/6];
- collect more RVBs from the reply of v2;
- Cc Eric to confirm dqinfo;

changes since v1:
- add Dave's patch with spilt and minor update;
- update comments above xfs_ialloc_ag_alloc() suggested by Darrick;
- collect RVBs to
"xfs: convert noroom, okalloc in xfs_dialloc() to bool"
"xfs: kill ialloced in xfs_dialloc()"
since no real logic changes ("(!error)" to "(error==0)" suggested
by Darrick has been updated).

Thanks,
Gao Xiang

Dave Chinner (4):
xfs: introduce xfs_dialloc_roll()
xfs: move on-disk inode allocation out of xfs_ialloc()
xfs: move xfs_dialloc_roll() into xfs_dialloc()
xfs: spilt xfs_dialloc() into 2 functions

Gao Xiang (2):
xfs: convert noroom, okalloc in xfs_dialloc() to bool
xfs: kill ialloced in xfs_dialloc()

fs/xfs/libxfs/xfs_ialloc.c | 173 ++++++++++++++-------------
fs/xfs/libxfs/xfs_ialloc.h | 36 +++---
fs/xfs/xfs_inode.c | 237 +++++++++----------------------------
3 files changed, 163 insertions(+), 283 deletions(-)

--
2.18.4