Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ea982d9f authored by Pekka Enberg's avatar Pekka Enberg
Browse files

Merge branch 'slab/struct-page' into slab/next

parents d56791b3 7e007355
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ struct page {
	/* First double word block */
	unsigned long flags;		/* Atomic flags, some possibly
					 * updated asynchronously */
	union {
		struct address_space *mapping;	/* If low bit clear, points to
						 * inode address_space, or NULL.
						 * If page mapped as anonymous
@@ -49,11 +50,14 @@ struct page {
						 * it points to anon_vma object:
						 * see PAGE_MAPPING_ANON below.
						 */
		void *s_mem;			/* slab first object */
	};

	/* Second double word */
	struct {
		union {
			pgoff_t index;		/* Our offset within mapping. */
			void *freelist;		/* slub/slob first free object */
			void *freelist;		/* sl[aou]b first free object */
			bool pfmemalloc;	/* If set by the page allocator,
						 * ALLOC_NO_WATERMARKS was set
						 * and the low watermark was not
@@ -109,6 +113,7 @@ struct page {
				};
				atomic_t _count;		/* Usage count, see below. */
			};
			unsigned int active;	/* SLAB */
		};
	};

@@ -130,6 +135,9 @@ struct page {

		struct list_head list;	/* slobs list of pages */
		struct slab *slab_page; /* slab fields */
		struct rcu_head rcu_head;	/* Used by SLAB
						 * when destroying via RCU
						 */
	};

	/* Remainder is not double word aligned */
+8 −1
Original line number Diff line number Diff line
@@ -51,7 +51,14 @@
 *  }
 *  rcu_read_unlock();
 *
 * See also the comment on struct slab_rcu in mm/slab.c.
 * This is useful if we need to approach a kernel structure obliquely,
 * from its address obtained without the usual locking. We can lock
 * the structure to stabilize it and check it's still at the given address,
 * only if we can be sure that the memory has not been meanwhile reused
 * for some other kind of object (which our subsystem's lock might corrupt).
 *
 * rcu_read_lock before reading the address, then rcu_read_unlock after
 * taking the spinlock within the structure expected at that address.
 */
#define SLAB_DESTROY_BY_RCU	0x00080000UL	/* Defer freeing slabs to RCU */
#define SLAB_MEM_SPREAD		0x00100000UL	/* Spread some memory over cpuset */
+2 −2
Original line number Diff line number Diff line
@@ -41,8 +41,8 @@ struct kmem_cache {

	size_t colour;			/* cache colouring range */
	unsigned int colour_off;	/* colour offset */
	struct kmem_cache *slabp_cache;
	unsigned int slab_size;
	struct kmem_cache *freelist_cache;
	unsigned int freelist_size;

	/* constructor func */
	void (*ctor)(void *obj);
+217 −354

File changed.

Preview size limit exceeded, changes collapsed.