![Nitin Gupta](/assets/img/avatar_default.png)
Currently, each ramzswap device can be assigned a separate 'backing swap' file/partition. The ramzswap driver forwards swap I/O requests to this backing swap whenever an incompressible page is found. This feature adds nearly 700 lines of code and it also duplicates much of the swapon() functionality (for example, finding swap extents and so on). Removing this code makes the driver much simpler and should help its transition from staging to stable drivers area (drivers/block/). Similar functionality may be implemented if we can implement migrating pages across swap devices but the details have not yet been worked out. Support for _partitions_ as backing swap could be retained as it requires a few lines of code only. This part can be re-introduced later if above swap migration method turns out to be infeasible. More cleanups and code comments will be added soon. Signed-off-by: Nitin Gupta <ngupta@vflare.org> Acked-by: Pekka Enberg <penberg@cs.helsinki.fi> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
43 lines
1.3 KiB
C
43 lines
1.3 KiB
C
/*
|
|
* Compressed RAM based swap device
|
|
*
|
|
* Copyright (C) 2008, 2009, 2010 Nitin Gupta
|
|
*
|
|
* This code is released using a dual license strategy: BSD/GPL
|
|
* You can choose the licence that better fits your requirements.
|
|
*
|
|
* Released under the terms of 3-clause BSD License
|
|
* Released under the terms of GNU General Public License Version 2.0
|
|
*
|
|
* Project home: http://compcache.googlecode.com
|
|
*/
|
|
|
|
#ifndef _RAMZSWAP_IOCTL_H_
|
|
#define _RAMZSWAP_IOCTL_H_
|
|
|
|
struct ramzswap_ioctl_stats {
|
|
u64 disksize; /* user specified or equal to backing swap
|
|
* size (if present) */
|
|
u64 num_reads; /* failed + successful */
|
|
u64 num_writes; /* --do-- */
|
|
u64 failed_reads; /* should NEVER! happen */
|
|
u64 failed_writes; /* can happen when memory is too low */
|
|
u64 invalid_io; /* non-swap I/O requests */
|
|
u64 notify_free; /* no. of swap slot free notifications */
|
|
u32 pages_zero; /* no. of zero filled pages */
|
|
u32 good_compress_pct; /* no. of pages with compression ratio<=50% */
|
|
u32 pages_expand_pct; /* no. of incompressible pages */
|
|
u32 pages_stored;
|
|
u32 pages_used;
|
|
u64 orig_data_size;
|
|
u64 compr_data_size;
|
|
u64 mem_used_total;
|
|
} __attribute__ ((packed, aligned(4)));
|
|
|
|
#define RZSIO_SET_DISKSIZE_KB _IOW('z', 0, size_t)
|
|
#define RZSIO_GET_STATS _IOR('z', 1, struct ramzswap_ioctl_stats)
|
|
#define RZSIO_INIT _IO('z', 2)
|
|
#define RZSIO_RESET _IO('z', 3)
|
|
|
|
#endif
|