mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
This reverts commit 7ffa8f3d30.
Reverts the removal of the classic read-only ntfs driver to
serve as the base for a new read-write ntfs implementation.
If we stack changes on top of the revert patch, It will significantly
reduce the diff size, making the review easier.
This revert intentionally excludes the restoration of Kconfig and
Makefile. The Kconfig and Makefile will be added back in the final patch
of this series, enabling the driver only after all features and
improvements have been applied.
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
78 lines
2.3 KiB
C
78 lines
2.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* malloc.h - NTFS kernel memory handling. Part of the Linux-NTFS project.
|
|
*
|
|
* Copyright (c) 2001-2005 Anton Altaparmakov
|
|
*/
|
|
|
|
#ifndef _LINUX_NTFS_MALLOC_H
|
|
#define _LINUX_NTFS_MALLOC_H
|
|
|
|
#include <linux/vmalloc.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/highmem.h>
|
|
|
|
/**
|
|
* __ntfs_malloc - allocate memory in multiples of pages
|
|
* @size: number of bytes to allocate
|
|
* @gfp_mask: extra flags for the allocator
|
|
*
|
|
* Internal function. You probably want ntfs_malloc_nofs()...
|
|
*
|
|
* Allocates @size bytes of memory, rounded up to multiples of PAGE_SIZE and
|
|
* returns a pointer to the allocated memory.
|
|
*
|
|
* If there was insufficient memory to complete the request, return NULL.
|
|
* Depending on @gfp_mask the allocation may be guaranteed to succeed.
|
|
*/
|
|
static inline void *__ntfs_malloc(unsigned long size, gfp_t gfp_mask)
|
|
{
|
|
if (likely(size <= PAGE_SIZE)) {
|
|
BUG_ON(!size);
|
|
/* kmalloc() has per-CPU caches so is faster for now. */
|
|
return kmalloc(PAGE_SIZE, gfp_mask & ~__GFP_HIGHMEM);
|
|
/* return (void *)__get_free_page(gfp_mask); */
|
|
}
|
|
if (likely((size >> PAGE_SHIFT) < totalram_pages()))
|
|
return __vmalloc(size, gfp_mask);
|
|
return NULL;
|
|
}
|
|
|
|
/**
|
|
* ntfs_malloc_nofs - allocate memory in multiples of pages
|
|
* @size: number of bytes to allocate
|
|
*
|
|
* Allocates @size bytes of memory, rounded up to multiples of PAGE_SIZE and
|
|
* returns a pointer to the allocated memory.
|
|
*
|
|
* If there was insufficient memory to complete the request, return NULL.
|
|
*/
|
|
static inline void *ntfs_malloc_nofs(unsigned long size)
|
|
{
|
|
return __ntfs_malloc(size, GFP_NOFS | __GFP_HIGHMEM);
|
|
}
|
|
|
|
/**
|
|
* ntfs_malloc_nofs_nofail - allocate memory in multiples of pages
|
|
* @size: number of bytes to allocate
|
|
*
|
|
* Allocates @size bytes of memory, rounded up to multiples of PAGE_SIZE and
|
|
* returns a pointer to the allocated memory.
|
|
*
|
|
* This function guarantees that the allocation will succeed. It will sleep
|
|
* for as long as it takes to complete the allocation.
|
|
*
|
|
* If there was insufficient memory to complete the request, return NULL.
|
|
*/
|
|
static inline void *ntfs_malloc_nofs_nofail(unsigned long size)
|
|
{
|
|
return __ntfs_malloc(size, GFP_NOFS | __GFP_HIGHMEM | __GFP_NOFAIL);
|
|
}
|
|
|
|
static inline void ntfs_free(void *addr)
|
|
{
|
|
kvfree(addr);
|
|
}
|
|
|
|
#endif /* _LINUX_NTFS_MALLOC_H */
|