]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: replace kmem_alloc_large() with kvmalloc()
authorDave Chinner <dchinner@redhat.com>
Mon, 31 Jan 2022 20:25:47 +0000 (15:25 -0500)
committerEric Sandeen <sandeen@redhat.com>
Mon, 31 Jan 2022 20:25:47 +0000 (15:25 -0500)
Source kernel commit: d634525db63e9e946c3229fb93c8d9b763afbaf3

There is no reason for this wrapper existing anymore. All the places
that use KM_NOFS allocation are within transaction contexts and
hence covered by memalloc_nofs_save/restore contexts. Hence we don't
need any special handling of vmalloc for large IOs anymore and
so special casing this code isn't necessary.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
include/kmem.h
libxfs/kmem.c
libxfs/xfs_attr_leaf.c

index 383284eaafb1ef60378251fa1730bfac93d9e784..6d3172569fc5926de69723a8e489deb7819abf99 100644 (file)
@@ -22,6 +22,7 @@ typedef unsigned int __bitwise gfp_t;
 #define GFP_KERNEL     ((__force gfp_t)0)
 #define GFP_NOFS       ((__force gfp_t)0)
 #define __GFP_NOFAIL   ((__force gfp_t)0)
+#define __GFP_NOLOCKDEP        ((__force gfp_t)0)
 
 #define __GFP_ZERO     (__force gfp_t)1
 
@@ -38,7 +39,7 @@ kmem_cache_free(kmem_zone_t *zone, void *ptr)
 }
 
 extern void    *kmem_alloc(size_t, int);
-extern void    *kmem_alloc_large(size_t, int);
+extern void    *kvmalloc(size_t, gfp_t);
 extern void    *kmem_zalloc(size_t, int);
 
 static inline void
index ee50ab667e5687224b632143115fd1e6c6783836..3d72ac944377743cdbdf87721d1d091fd23dd826 100644 (file)
@@ -76,9 +76,11 @@ kmem_alloc(size_t size, int flags)
 }
 
 void *
-kmem_alloc_large(size_t size, int flags)
+kvmalloc(size_t size, gfp_t flags)
 {
-       return kmem_alloc(size, flags);
+       if (flags & __GFP_ZERO)
+               return kmem_zalloc(size, 0);
+       return kmem_alloc(size, 0);
 }
 
 void *
index cfb6bf17109077c1f3938141141ff9501d899f40..6499f16f07712d11b869fd39647056fec2c575b1 100644 (file)
@@ -486,7 +486,7 @@ xfs_attr_copy_value(
        }
 
        if (!args->value) {
-               args->value = kmem_alloc_large(valuelen, KM_NOLOCKDEP);
+               args->value = kvmalloc(valuelen, GFP_KERNEL | __GFP_NOLOCKDEP);
                if (!args->value)
                        return -ENOMEM;
        }