blob: b0f71f562f4304453b130e05e3ea614ddaaa48b2 [file] [log] [blame]
#ifndef __SHMEM_FS_H
#define __SHMEM_FS_H
/* inode in-kernel data */
#define SHMEM_NR_DIRECT 16
/*
* A swap entry has to fit into a "unsigned long", as
* the entry is hidden in the "index" field of the
* swapper address space.
*
* We have to move it here, since not every user of fs.h is including
* mm.h, but mm.h is including fs.h via sched .h :-/
*/
typedef struct {
unsigned long val;
} swp_entry_t;
struct shmem_inode_info {
spinlock_t lock;
unsigned long next_index;
swp_entry_t i_direct[SHMEM_NR_DIRECT]; /* for the first blocks */
void **i_indirect; /* indirect blocks */
unsigned long map_direct[SHMEM_NR_DIRECT];
void **map_indirect;
unsigned long swapped; /* data pages assigned to swap */
unsigned long flags;
struct list_head list;
struct inode *inode;
};
struct shmem_sb_info {
unsigned long max_blocks; /* How many blocks are allowed */
unsigned long free_blocks; /* How many are left for allocation */
unsigned long max_inodes; /* How many inodes are allowed */
unsigned long free_inodes; /* How many are left for allocation */
spinlock_t stat_lock;
};
#define SHMEM_I(inode) (&inode->u.shmem_i)
#endif