]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
xfs: Modify xlog_ticket_alloc() to use kernel's MM API
authorCarlos Maiolino <cmaiolino@redhat.com>
Wed, 22 Jul 2020 16:23:17 +0000 (09:23 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Wed, 29 Jul 2020 03:24:14 +0000 (20:24 -0700)
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>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
fs/xfs/xfs_log.c
fs/xfs/xfs_log_cil.c
fs/xfs/xfs_log_priv.h

index 00fda2e8e7380b3822eca5fe8eec3e4c7bb3f91a..ad0c69ee89475909c2b307a1a11bbc9270ab3293 100644 (file)
@@ -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);
 
index 9ed90368ab311cd2196760459430ff07a87040c4..56c32eecffead67758db95b3770fa2ac2318c1d9 100644 (file)
@@ -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
index 75a62870b63af00d27be289fe54d6bcbc7541204..1c6fdbf3d5066d237ad5ac3aa6dafe0e06edc5ab 100644 (file)
@@ -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)