You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'akpm' (patches from Andrew)
Merge updates from Andrew Morton: - a few misc things - ocfs2 updates - v9fs updates - MM - procfs updates - lib/ updates - autofs updates * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (118 commits) autofs: small cleanup in autofs_getpath() autofs: clean up includes autofs: comment on selinux changes needed for module autoload autofs: update MAINTAINERS entry for autofs autofs: use autofs instead of autofs4 in documentation autofs: rename autofs documentation files autofs: create autofs Kconfig and Makefile autofs: delete fs/autofs4 source files autofs: update fs/autofs4/Makefile autofs: update fs/autofs4/Kconfig autofs: copy autofs4 to autofs autofs4: use autofs instead of autofs4 everywhere autofs4: merge auto_fs.h and auto_fs4.h fs/binfmt_misc.c: do not allow offset overflow checkpatch: improve patch recognition lib/ucs2_string.c: add MODULE_LICENSE() lib/mpi: headers cleanup lib/percpu_ida.c: use _irqsave() instead of local_irq_save() + spin_lock lib/idr.c: remove simple_ida_lock lib/bitmap.c: micro-optimization for __bitmap_complement() ...
This commit is contained in:
@@ -1001,14 +1001,44 @@ PAGE_SIZE multiple when read back.
|
||||
The total amount of memory currently being used by the cgroup
|
||||
and its descendants.
|
||||
|
||||
memory.min
|
||||
A read-write single value file which exists on non-root
|
||||
cgroups. The default is "0".
|
||||
|
||||
Hard memory protection. If the memory usage of a cgroup
|
||||
is within its effective min boundary, the cgroup's memory
|
||||
won't be reclaimed under any conditions. If there is no
|
||||
unprotected reclaimable memory available, OOM killer
|
||||
is invoked.
|
||||
|
||||
Effective min boundary is limited by memory.min values of
|
||||
all ancestor cgroups. If there is memory.min overcommitment
|
||||
(child cgroup or cgroups are requiring more protected memory
|
||||
than parent will allow), then each child cgroup will get
|
||||
the part of parent's protection proportional to its
|
||||
actual memory usage below memory.min.
|
||||
|
||||
Putting more memory than generally available under this
|
||||
protection is discouraged and may lead to constant OOMs.
|
||||
|
||||
If a memory cgroup is not populated with processes,
|
||||
its memory.min is ignored.
|
||||
|
||||
memory.low
|
||||
A read-write single value file which exists on non-root
|
||||
cgroups. The default is "0".
|
||||
|
||||
Best-effort memory protection. If the memory usages of a
|
||||
cgroup and all its ancestors are below their low boundaries,
|
||||
the cgroup's memory won't be reclaimed unless memory can be
|
||||
reclaimed from unprotected cgroups.
|
||||
Best-effort memory protection. If the memory usage of a
|
||||
cgroup is within its effective low boundary, the cgroup's
|
||||
memory won't be reclaimed unless memory can be reclaimed
|
||||
from unprotected cgroups.
|
||||
|
||||
Effective low boundary is limited by memory.low values of
|
||||
all ancestor cgroups. If there is memory.low overcommitment
|
||||
(child cgroup or cgroups are requiring more protected memory
|
||||
than parent will allow), then each child cgroup will get
|
||||
the part of parent's protection proportional to its
|
||||
actual memory usage below memory.low.
|
||||
|
||||
Putting more memory than generally available under this
|
||||
protection is discouraged.
|
||||
@@ -1199,6 +1229,27 @@ PAGE_SIZE multiple when read back.
|
||||
Swap usage hard limit. If a cgroup's swap usage reaches this
|
||||
limit, anonymous memory of the cgroup will not be swapped out.
|
||||
|
||||
memory.swap.events
|
||||
A read-only flat-keyed file which exists on non-root cgroups.
|
||||
The following entries are defined. Unless specified
|
||||
otherwise, a value change in this file generates a file
|
||||
modified event.
|
||||
|
||||
max
|
||||
The number of times the cgroup's swap usage was about
|
||||
to go over the max boundary and swap allocation
|
||||
failed.
|
||||
|
||||
fail
|
||||
The number of times swap allocation failed either
|
||||
because of running out of swap system-wide or max
|
||||
limit.
|
||||
|
||||
When reduced under the current usage, the existing swap
|
||||
entries are reclaimed gradually and the swap usage may stay
|
||||
higher than the limit for an extended period of time. This
|
||||
reduces the impact on the workload and memory management.
|
||||
|
||||
|
||||
Usage Guidelines
|
||||
~~~~~~~~~~~~~~~~
|
||||
@@ -1934,17 +1985,8 @@ system performance due to overreclaim, to the point where the feature
|
||||
becomes self-defeating.
|
||||
|
||||
The memory.low boundary on the other hand is a top-down allocated
|
||||
reserve. A cgroup enjoys reclaim protection when it and all its
|
||||
ancestors are below their low boundaries, which makes delegation of
|
||||
subtrees possible. Secondly, new cgroups have no reserve per default
|
||||
and in the common case most cgroups are eligible for the preferred
|
||||
reclaim pass. This allows the new low boundary to be efficiently
|
||||
implemented with just a minor addition to the generic reclaim code,
|
||||
without the need for out-of-band data structures and reclaim passes.
|
||||
Because the generic reclaim code considers all cgroups except for the
|
||||
ones running low in the preferred first reclaim pass, overreclaim of
|
||||
individual groups is eliminated as well, resulting in much better
|
||||
overall workload performance.
|
||||
reserve. A cgroup enjoys reclaim protection when it's within its low,
|
||||
which makes delegation of subtrees possible.
|
||||
|
||||
The original high boundary, the hard limit, is defined as a strict
|
||||
limit that can not budge, even if the OOM killer has to be called.
|
||||
|
||||
@@ -218,6 +218,7 @@ line of text and contains the following stats separated by whitespace:
|
||||
same_pages the number of same element filled pages written to this disk.
|
||||
No memory is allocated for such pages.
|
||||
pages_compacted the number of pages freed during compaction
|
||||
huge_pages the number of incompressible pages
|
||||
|
||||
9) Deactivate:
|
||||
swapoff /dev/zram0
|
||||
@@ -242,5 +243,29 @@ to backing storage rather than keeping it in memory.
|
||||
User should set up backing device via /sys/block/zramX/backing_dev
|
||||
before disksize setting.
|
||||
|
||||
= memory tracking
|
||||
|
||||
With CONFIG_ZRAM_MEMORY_TRACKING, user can know information of the
|
||||
zram block. It could be useful to catch cold or incompressible
|
||||
pages of the process with*pagemap.
|
||||
If you enable the feature, you could see block state via
|
||||
/sys/kernel/debug/zram/zram0/block_state". The output is as follows,
|
||||
|
||||
300 75.033841 .wh
|
||||
301 63.806904 s..
|
||||
302 63.806919 ..h
|
||||
|
||||
First column is zram's block index.
|
||||
Second column is access time since the system was booted
|
||||
Third column is state of the block.
|
||||
(s: same page
|
||||
w: written page to backing store
|
||||
h: huge page)
|
||||
|
||||
First line of above example says 300th block is accessed at 75.033841sec
|
||||
and the block's state is huge so it is written back to the backing
|
||||
storage. It's a debugging feature so anyone shouldn't rely on it to work
|
||||
properly.
|
||||
|
||||
Nitin Gupta
|
||||
ngupta@vflare.org
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Feature name: pte_special
|
||||
# Kconfig: __HAVE_ARCH_PTE_SPECIAL
|
||||
# Kconfig: ARCH_HAS_PTE_SPECIAL
|
||||
# description: arch supports the pte_special()/pte_mkspecial() VM APIs
|
||||
#
|
||||
-----------------------
|
||||
|
||||
@@ -10,8 +10,8 @@ afs.txt
|
||||
- info and examples for the distributed AFS (Andrew File System) fs.
|
||||
affs.txt
|
||||
- info and mount options for the Amiga Fast File System.
|
||||
autofs4-mount-control.txt
|
||||
- info on device control operations for autofs4 module.
|
||||
autofs-mount-control.txt
|
||||
- info on device control operations for autofs module.
|
||||
automount-support.txt
|
||||
- information about filesystem automount support.
|
||||
befs.txt
|
||||
|
||||
+4
-5
@@ -1,5 +1,5 @@
|
||||
|
||||
Miscellaneous Device control operations for the autofs4 kernel module
|
||||
Miscellaneous Device control operations for the autofs kernel module
|
||||
====================================================================
|
||||
|
||||
The problem
|
||||
@@ -164,7 +164,7 @@ possibility for future development due to the requirements of the
|
||||
message bus architecture.
|
||||
|
||||
|
||||
autofs4 Miscellaneous Device mount control interface
|
||||
autofs Miscellaneous Device mount control interface
|
||||
====================================================
|
||||
|
||||
The control interface is opening a device node, typically /dev/autofs.
|
||||
@@ -244,7 +244,7 @@ The device node ioctl operations implemented by this interface are:
|
||||
AUTOFS_DEV_IOCTL_VERSION
|
||||
------------------------
|
||||
|
||||
Get the major and minor version of the autofs4 device ioctl kernel module
|
||||
Get the major and minor version of the autofs device ioctl kernel module
|
||||
implementation. It requires an initialized struct autofs_dev_ioctl as an
|
||||
input parameter and sets the version information in the passed in structure.
|
||||
It returns 0 on success or the error -EINVAL if a version mismatch is
|
||||
@@ -254,7 +254,7 @@ detected.
|
||||
AUTOFS_DEV_IOCTL_PROTOVER_CMD and AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD
|
||||
------------------------------------------------------------------
|
||||
|
||||
Get the major and minor version of the autofs4 protocol version understood
|
||||
Get the major and minor version of the autofs protocol version understood
|
||||
by loaded module. This call requires an initialized struct autofs_dev_ioctl
|
||||
with the ioctlfd field set to a valid autofs mount point descriptor
|
||||
and sets the requested version number in version field of struct args_protover
|
||||
@@ -404,4 +404,3 @@ type is also given we are looking for a particular autofs mount and if
|
||||
a match isn't found a fail is returned. If the the located path is the
|
||||
root of a mount 1 is returned along with the super magic of the mount
|
||||
or 0 otherwise.
|
||||
|
||||
@@ -30,15 +30,15 @@ key advantages:
|
||||
Context
|
||||
-------
|
||||
|
||||
The "autofs4" filesystem module is only one part of an autofs system.
|
||||
The "autofs" filesystem module is only one part of an autofs system.
|
||||
There also needs to be a user-space program which looks up names
|
||||
and mounts filesystems. This will often be the "automount" program,
|
||||
though other tools including "systemd" can make use of "autofs4".
|
||||
though other tools including "systemd" can make use of "autofs".
|
||||
This document describes only the kernel module and the interactions
|
||||
required with any user-space program. Subsequent text refers to this
|
||||
as the "automount daemon" or simply "the daemon".
|
||||
|
||||
"autofs4" is a Linux kernel module with provides the "autofs"
|
||||
"autofs" is a Linux kernel module with provides the "autofs"
|
||||
filesystem type. Several "autofs" filesystems can be mounted and they
|
||||
can each be managed separately, or all managed by the same daemon.
|
||||
|
||||
@@ -215,7 +215,7 @@ of expiry.
|
||||
The VFS also supports "expiry" of mounts using the MNT_EXPIRE flag to
|
||||
the `umount` system call. Unmounting with MNT_EXPIRE will fail unless
|
||||
a previous attempt had been made, and the filesystem has been inactive
|
||||
and untouched since that previous attempt. autofs4 does not depend on
|
||||
and untouched since that previous attempt. autofs does not depend on
|
||||
this but has its own internal tracking of whether filesystems were
|
||||
recently used. This allows individual names in the autofs directory
|
||||
to expire separately.
|
||||
@@ -415,7 +415,7 @@ which can be used to communicate directly with the autofs filesystem.
|
||||
It requires CAP_SYS_ADMIN for access.
|
||||
|
||||
The `ioctl`s that can be used on this device are described in a separate
|
||||
document `autofs4-mount-control.txt`, and are summarized briefly here.
|
||||
document `autofs-mount-control.txt`, and are summarized briefly here.
|
||||
Each ioctl is passed a pointer to an `autofs_dev_ioctl` structure:
|
||||
|
||||
struct autofs_dev_ioctl {
|
||||
@@ -9,7 +9,7 @@ also be requested by userspace.
|
||||
IN-KERNEL AUTOMOUNTING
|
||||
======================
|
||||
|
||||
See section "Mount Traps" of Documentation/filesystems/autofs4.txt
|
||||
See section "Mount Traps" of Documentation/filesystems/autofs.txt
|
||||
|
||||
Then from userspace, you can just do something like:
|
||||
|
||||
|
||||
@@ -460,7 +460,7 @@ this retry process in the next article.
|
||||
Automount points are locations in the filesystem where an attempt to
|
||||
lookup a name can trigger changes to how that lookup should be
|
||||
handled, in particular by mounting a filesystem there. These are
|
||||
covered in greater detail in autofs4.txt in the Linux documentation
|
||||
covered in greater detail in autofs.txt in the Linux documentation
|
||||
tree, but a few notes specifically related to path lookup are in order
|
||||
here.
|
||||
|
||||
|
||||
+2
-2
@@ -7723,11 +7723,11 @@ W: https://linuxtv.org
|
||||
S: Maintained
|
||||
F: drivers/media/radio/radio-keene*
|
||||
|
||||
KERNEL AUTOMOUNTER v4 (AUTOFS4)
|
||||
KERNEL AUTOMOUNTER
|
||||
M: Ian Kent <raven@themaw.net>
|
||||
L: autofs@vger.kernel.org
|
||||
S: Maintained
|
||||
F: fs/autofs4/
|
||||
F: fs/autofs/
|
||||
|
||||
KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
|
||||
M: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||
|
||||
@@ -48,6 +48,7 @@ config ARC
|
||||
select HAVE_GENERIC_DMA_COHERENT
|
||||
select HAVE_KERNEL_GZIP
|
||||
select HAVE_KERNEL_LZMA
|
||||
select ARCH_HAS_PTE_SPECIAL
|
||||
|
||||
config MIGHT_HAVE_PCI
|
||||
bool
|
||||
|
||||
@@ -320,8 +320,6 @@ PTE_BIT_FUNC(mkexec, |= (_PAGE_EXECUTE));
|
||||
PTE_BIT_FUNC(mkspecial, |= (_PAGE_SPECIAL));
|
||||
PTE_BIT_FUNC(mkhuge, |= (_PAGE_HW_SZ));
|
||||
|
||||
#define __HAVE_ARCH_PTE_SPECIAL
|
||||
|
||||
static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
|
||||
{
|
||||
return __pte((pte_val(pte) & _PAGE_CHG_MASK) | pgprot_val(newprot));
|
||||
|
||||
@@ -8,6 +8,7 @@ config ARM
|
||||
select ARCH_HAS_DEVMEM_IS_ALLOWED
|
||||
select ARCH_HAS_ELF_RANDOMIZE
|
||||
select ARCH_HAS_FORTIFY_SOURCE
|
||||
select ARCH_HAS_PTE_SPECIAL if ARM_LPAE
|
||||
select ARCH_HAS_SET_MEMORY
|
||||
select ARCH_HAS_PHYS_TO_DMA
|
||||
select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL
|
||||
|
||||
@@ -219,7 +219,6 @@ static inline pte_t pte_mkspecial(pte_t pte)
|
||||
pte_val(pte) |= L_PTE_SPECIAL;
|
||||
return pte;
|
||||
}
|
||||
#define __HAVE_ARCH_PTE_SPECIAL
|
||||
|
||||
#define pmd_write(pmd) (pmd_isclear((pmd), L_PMD_SECT_RDONLY))
|
||||
#define pmd_dirty(pmd) (pmd_isset((pmd), L_PMD_SECT_DIRTY))
|
||||
|
||||
@@ -17,6 +17,7 @@ config ARM64
|
||||
select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA
|
||||
select ARCH_HAS_KCOV
|
||||
select ARCH_HAS_MEMBARRIER_SYNC_CORE
|
||||
select ARCH_HAS_PTE_SPECIAL
|
||||
select ARCH_HAS_SET_MEMORY
|
||||
select ARCH_HAS_SG_CHAIN
|
||||
select ARCH_HAS_STRICT_KERNEL_RWX
|
||||
|
||||
@@ -306,8 +306,6 @@ static inline int pte_same(pte_t pte_a, pte_t pte_b)
|
||||
#define HPAGE_MASK (~(HPAGE_SIZE - 1))
|
||||
#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT)
|
||||
|
||||
#define __HAVE_ARCH_PTE_SPECIAL
|
||||
|
||||
static inline pte_t pgd_pte(pgd_t pgd)
|
||||
{
|
||||
return __pte(pgd_val(pgd));
|
||||
|
||||
@@ -135,6 +135,7 @@ config PPC
|
||||
select ARCH_HAS_GCOV_PROFILE_ALL
|
||||
select ARCH_HAS_PHYS_TO_DMA
|
||||
select ARCH_HAS_PMEM_API if PPC64
|
||||
select ARCH_HAS_PTE_SPECIAL
|
||||
select ARCH_HAS_MEMBARRIER_CALLBACKS
|
||||
select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE
|
||||
select ARCH_HAS_SG_CHAIN
|
||||
|
||||
@@ -335,9 +335,6 @@ extern unsigned long pci_io_base;
|
||||
/* Advertise special mapping type for AGP */
|
||||
#define HAVE_PAGE_AGP
|
||||
|
||||
/* Advertise support for _PAGE_SPECIAL */
|
||||
#define __HAVE_ARCH_PTE_SPECIAL
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/*
|
||||
|
||||
@@ -208,9 +208,6 @@ static inline bool pte_user(pte_t pte)
|
||||
#define PAGE_AGP (PAGE_KERNEL_NC)
|
||||
#define HAVE_PAGE_AGP
|
||||
|
||||
/* Advertise support for _PAGE_SPECIAL */
|
||||
#define __HAVE_ARCH_PTE_SPECIAL
|
||||
|
||||
#ifndef _PAGE_READ
|
||||
/* if not defined, we should not find _PAGE_WRITE too */
|
||||
#define _PAGE_READ 0
|
||||
|
||||
@@ -42,6 +42,7 @@ config RISCV
|
||||
select THREAD_INFO_IN_TASK
|
||||
select RISCV_TIMER
|
||||
select GENERIC_IRQ_MULTI_HANDLER
|
||||
select ARCH_HAS_PTE_SPECIAL
|
||||
|
||||
config MMU
|
||||
def_bool y
|
||||
|
||||
@@ -42,7 +42,4 @@
|
||||
_PAGE_WRITE | _PAGE_EXEC | \
|
||||
_PAGE_USER | _PAGE_GLOBAL))
|
||||
|
||||
/* Advertise support for _PAGE_SPECIAL */
|
||||
#define __HAVE_ARCH_PTE_SPECIAL
|
||||
|
||||
#endif /* _ASM_RISCV_PGTABLE_BITS_H */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user