The simplest file system to use for large blocksize support is ramfs.
Note that ramfs does not use the lower layers (buffer I/O etc) so this
case is useful for initial testing of changes to large buffer size
support if one just wants to exercise the higher layers.
The patch adds the ability to specify a mount parameter to modify the
order for the pages that are allocated by ramfs.
Here is an example of how to mount a volume with order 10 pages:
mount -tramfs -o10 none /media
Mounts a ramfs filesystem with 4MB sized pages. Then copy
a file onto it.
cp linux-2.6.21-rc7.tar.gz /media
This will populate the ramfs volume. Note that we allocated 14 pages
of 4M each instead of 13508.
Get rid of the large pages again
umount /media
Signed-off-by: Christoph Lameter <clameter@sgi.com>
---
fs/ramfs/inode.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/fs/ramfs/inode.c b/fs/ramfs/inode.c
index ef2b46d..b317f80 100644
--- a/fs/ramfs/inode.c
+++ b/fs/ramfs/inode.c
@@ -60,7 +60,8 @@ struct inode *ramfs_get_inode(struct super_block *sb, int mode, dev_t dev)
inode->i_blocks = 0;
inode->i_mapping->a_ops = &ramfs_aops;
inode->i_mapping->backing_dev_info = &ramfs_backing_dev_info;
- mapping_set_gfp_mask(inode->i_mapping, GFP_HIGHUSER);
+ mapping_setup(inode->i_mapping, GFP_HIGHUSER,
+ sb->s_blocksize_bits - PAGE_SHIFT);
inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
switch (mode & S_IFMT) {
default:
@@ -164,10 +165,15 @@ static int ramfs_fill_super(struct super_block * sb, void * data, int silent)
{
struct inode * inode;
struct dentry * root;
+ int order = 0;
+ char *options = data;
+
+ if (options && *options)
+ order = simple_strtoul(options, NULL, 10);
sb->s_maxbytes = MAX_LFS_FILESIZE;
- sb->s_blocksize = PAGE_CACHE_SIZE;
- sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
+ sb->s_blocksize = PAGE_CACHE_SIZE << order;
+ sb->s_blocksize_bits = order + PAGE_CACHE_SHIFT;
sb->s_magic = RAMFS_MAGIC;
sb->s_op = &ramfs_ops;
sb->s_time_gran = 1;
--
1.5.2.4
--
-
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| Andrew Morton | Re: CFD: linux-wanking@vger.kernel.org (was [PATCH] Standard indentation of argume... |
| Linus Torvalds | Linux 2.6.27-rc8 |
git: | |
| Junio C Hamano | Re: [PATCH] Teach remote machinery about remotes.default config variable |
| Ingo Molnar | git-rerere observations and feature suggestions |
| Mike | Re: I don't want the .git directory next to my code. |
| Stephen Hemminger | git pull for update of netdev fails. |
| Leon Dippenaar | New tcp stack attack |
| GVG GVG | ssh_exchange_identification: Connection closed by remote host |
| Daniel Ouellet | identifying sparse files and get ride of them trick available? |
| Shohrukh Shoyoqubov | Re: Site-to-site IPSec VPN between OpenBSD and Cisco PIX 515E |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Patrick McHardy | Re: Not understand some in htb_do_events function |
| David Miller | [GIT]: Networking |
| David Miller | Re: xfrm_state locking regression... |
