Message ID | 20200722090518.214624-4-cmaiolino@redhat.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | Continue xfs kmem cleanup - V3 | expand |
On Wed, Jul 22, 2020 at 11:05:16AM +0200, Carlos Maiolino wrote: > xlog_ticket_alloc() is always called under NOFS context, except from > unmount path, which eitherway is holding many FS locks, so, there is no > need for its callers to keep passing allocation flags into it. > > change xlog_ticket_alloc() to use default kmem_cache_zalloc(), remove > its alloc_flags argument, and always use GFP_NOFS | __GFP_NOFAIL flags. > > Reviewed-by: Christoph Hellwig <hch@lst.de> > Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com> > --- > > Changelog: > V2: > - Remove alloc_flags argument from xlog_ticket_alloc() > and update patch description accordingly. > > fs/xfs/xfs_log.c | 9 +++------ > fs/xfs/xfs_log_cil.c | 3 +-- > fs/xfs/xfs_log_priv.h | 4 +--- > 3 files changed, 5 insertions(+), 11 deletions(-) Looks good. Reviewed-by: Dave Chinner <dchinner@redhat.com>
On Wed, Jul 22, 2020 at 11:05:16AM +0200, Carlos Maiolino wrote: > xlog_ticket_alloc() is always called under NOFS context, except from > unmount path, which eitherway is holding many FS locks, so, there is no > need for its callers to keep passing allocation flags into it. > > change xlog_ticket_alloc() to use default kmem_cache_zalloc(), remove > its alloc_flags argument, and always use GFP_NOFS | __GFP_NOFAIL flags. > > Reviewed-by: Christoph Hellwig <hch@lst.de> > Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com> Looks decent, Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> --D > --- > > Changelog: > V2: > - Remove alloc_flags argument from xlog_ticket_alloc() > and update patch description accordingly. > > fs/xfs/xfs_log.c | 9 +++------ > fs/xfs/xfs_log_cil.c | 3 +-- > fs/xfs/xfs_log_priv.h | 4 +--- > 3 files changed, 5 insertions(+), 11 deletions(-) > > diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c > index 00fda2e8e7380..ad0c69ee89475 100644 > --- a/fs/xfs/xfs_log.c > +++ b/fs/xfs/xfs_log.c > @@ -433,7 +433,7 @@ xfs_log_reserve( > XFS_STATS_INC(mp, xs_try_logspace); > > ASSERT(*ticp == NULL); > - tic = xlog_ticket_alloc(log, unit_bytes, cnt, client, permanent, 0); > + tic = xlog_ticket_alloc(log, unit_bytes, cnt, client, permanent); > *ticp = tic; > > xlog_grant_push_ail(log, tic->t_cnt ? tic->t_unit_res * tic->t_cnt > @@ -3408,15 +3408,12 @@ xlog_ticket_alloc( > int unit_bytes, > int cnt, > char client, > - bool permanent, > - xfs_km_flags_t alloc_flags) > + bool permanent) > { > struct xlog_ticket *tic; > int unit_res; > > - tic = kmem_zone_zalloc(xfs_log_ticket_zone, alloc_flags); > - if (!tic) > - return NULL; > + tic = kmem_cache_zalloc(xfs_log_ticket_zone, GFP_NOFS | __GFP_NOFAIL); > > unit_res = xfs_log_calc_unit_res(log->l_mp, unit_bytes); > > diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c > index 9ed90368ab311..56c32eecffead 100644 > --- a/fs/xfs/xfs_log_cil.c > +++ b/fs/xfs/xfs_log_cil.c > @@ -37,8 +37,7 @@ xlog_cil_ticket_alloc( > { > struct xlog_ticket *tic; > > - tic = xlog_ticket_alloc(log, 0, 1, XFS_TRANSACTION, 0, > - KM_NOFS); > + tic = xlog_ticket_alloc(log, 0, 1, XFS_TRANSACTION, 0); > > /* > * set the current reservation to zero so we know to steal the basic > diff --git a/fs/xfs/xfs_log_priv.h b/fs/xfs/xfs_log_priv.h > index 75a62870b63af..1c6fdbf3d5066 100644 > --- a/fs/xfs/xfs_log_priv.h > +++ b/fs/xfs/xfs_log_priv.h > @@ -464,9 +464,7 @@ xlog_ticket_alloc( > int unit_bytes, > int count, > char client, > - bool permanent, > - xfs_km_flags_t alloc_flags); > - > + bool permanent); > > static inline void > xlog_write_adv_cnt(void **ptr, int *len, int *off, size_t bytes) > -- > 2.26.2 >
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index 00fda2e8e7380..ad0c69ee89475 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c @@ -433,7 +433,7 @@ xfs_log_reserve( XFS_STATS_INC(mp, xs_try_logspace); ASSERT(*ticp == NULL); - tic = xlog_ticket_alloc(log, unit_bytes, cnt, client, permanent, 0); + tic = xlog_ticket_alloc(log, unit_bytes, cnt, client, permanent); *ticp = tic; xlog_grant_push_ail(log, tic->t_cnt ? tic->t_unit_res * tic->t_cnt @@ -3408,15 +3408,12 @@ xlog_ticket_alloc( int unit_bytes, int cnt, char client, - bool permanent, - xfs_km_flags_t alloc_flags) + bool permanent) { struct xlog_ticket *tic; int unit_res; - tic = kmem_zone_zalloc(xfs_log_ticket_zone, alloc_flags); - if (!tic) - return NULL; + tic = kmem_cache_zalloc(xfs_log_ticket_zone, GFP_NOFS | __GFP_NOFAIL); unit_res = xfs_log_calc_unit_res(log->l_mp, unit_bytes); diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c index 9ed90368ab311..56c32eecffead 100644 --- a/fs/xfs/xfs_log_cil.c +++ b/fs/xfs/xfs_log_cil.c @@ -37,8 +37,7 @@ xlog_cil_ticket_alloc( { struct xlog_ticket *tic; - tic = xlog_ticket_alloc(log, 0, 1, XFS_TRANSACTION, 0, - KM_NOFS); + tic = xlog_ticket_alloc(log, 0, 1, XFS_TRANSACTION, 0); /* * set the current reservation to zero so we know to steal the basic diff --git a/fs/xfs/xfs_log_priv.h b/fs/xfs/xfs_log_priv.h index 75a62870b63af..1c6fdbf3d5066 100644 --- a/fs/xfs/xfs_log_priv.h +++ b/fs/xfs/xfs_log_priv.h @@ -464,9 +464,7 @@ xlog_ticket_alloc( int unit_bytes, int count, char client, - bool permanent, - xfs_km_flags_t alloc_flags); - + bool permanent); static inline void xlog_write_adv_cnt(void **ptr, int *len, int *off, size_t bytes)