Hi folks, This is v2 of the following patchset https://lore.kernel.org/r/20201124155130.40848-1-hsiangkao@xxxxxxxxxx , which tends to simplify xfs_dialloc() logic. This version includes Dave's original patch https://lore.kernel.org/r/20201124221623.GC2842436@xxxxxxxxxxxxxxxxxxx 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 (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 don't change "tri-state return value" of xfs_ialloc_ag_alloc() since comments from Christoph and Darrick are not strong... (more comments are welcome as well.) I ran xfstests -g auto with this 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 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 | 242 +++++++++---------------------------- 3 files changed, 169 insertions(+), 282 deletions(-) -- 2.18.4