- 18 Jun, 2004 1 commit
-
-
Chris Mason authored
From: <mason@suse.com> From: <jeffm@suse.com> The current reiserfs allocator pretty much allocates things sequentially from the start of the disk, it works very nicely for desktop loads but once you've got more then one proc doing io data files can fragment badly. One obvious solution is something like ext2's bitmap groups, which puts file data into different areas of the disk based on which subdirectory they are in. The problem with bitmap groups is that if you've got a group of subdirectories their contents will be spread out all over the disk, leading to lots of seeks during a sequential read. This allocator patch uses the packing locality to determine which bitmap group to allocate from, but when you create a file it looks in the bitmaps to see how 'full' that packing locality already is. If it hasn't been heavily used yet, the packing locality is inherited from the parent directory putting files in new subdirs close to the parent subdir, otherwise it is the inode number of the parent directory putting new files far away from the parent subdir. The end result is fewer bitmap groups for the same working set. For example, one test data set created by 20 procs running in parallel has 6822 subdirs. And with vanilla reiserfs that would mean 6822 packing localities. This patch turns that into 26 packing localities. This makes sequential reads of big directory trees more efficient, but it also makes the btree more efficient in general. Things end up sorted better because groups of subdirs end up with similar keys in the btree, instead of being spread out all over. The bitmap grouping code tries to use the start of each bitmap group for metadata, and offsets the data slightly. The data and metadata are still close together, but not completely intermixed like they are in the default allocator. The end result is that leaf nodes tend to be close to each other, making metadata readahead more effective. The old block allocator had the ability to enforce a minimum allocation size, but did not use it. It now tries to do a pass looking for larger allocation chunks before falling back to the old behaviour of taking any blocks it can find. The patch changes the defaults to: mount -o alloc=skip_busy:dirid_groups:packing_groups You can get back the old behaviour with mount -o alloc=skip_busy mount -o alloc=dirid_groups will turn on the bitmap groups mount -o alloc=packing_groups turns on the packing locality reduction code mount -o alloc=skip_busy:dirid_groups turns on both dirid_groups and skip_busy Finally the patch adds a mount -o alloc=oid_groups, which puts files into bitmap groups based on a hash of their objectid. This would be used for databases or other situations where you have a limited number of very large files. This command will tell you how many packing localities are actually in use: debugreiserfs -d /dev/xxx | grep '^|.*SD' | sed 's/^.....//' | awk '{print $1}' | sort -u | wc -l Signed-off-by:
Andrew Morton <akpm@osdl.org> Signed-off-by:
Linus Torvalds <torvalds@osdl.org>
-
- 10 May, 2004 5 commits
-
-
Andrew Morton authored
From: Chris Mason <mason@suse.com> From: Jeff Mahoney <jeffm@suse.com> Add device info to the various reiserfs warnings and panics so you can tell which filesystem triggers the message. Loosely based on code from Oleg Drokin.
-
Andrew Morton authored
From: Chris Mason <mason@suse.com> ReiserFS support for quotas. Originally from Jan Kara
-
Andrew Morton authored
From: Chris Mason <mason@suse.com> From: jeffm@suse.com reiserfs acl support
-
Andrew Morton authored
From: Chris Mason <mason@suse.com> From: jeffm@suse.com reiserfs support for xattrs
-
Andrew Morton authored
From: Bart Samwel <bart@samwel.tk> This patch from Micha Feigin fixes some bugs in the earlier reiserfs commit default patch. The changelog: * If you remounted without any commit=NNN option, it would assume commit=0 and restore the defaults. This patch makes it leave the current state alone if you don't pass commit=NNN. * Added range check for cast from unsigned long to unsigned int.
-
- 21 Apr, 2004 1 commit
-
-
Andrew Morton authored
From: Chris Mason <mason@suse.com> reiserfs_write_super_lockfs() is supposed to wait for the transaction to commit.
-
- 17 Apr, 2004 1 commit
-
-
Andrew Morton authored
From: Bart Samwel <bart@samwel.tk> Add support for value 0 to the commit option of reiserfs. Means "restore to the default value". For the maximum commit age, this default value is normally read from the journal; this patch adds an extra variable to cache the default value for the maximum commit age.
-
- 12 Apr, 2004 4 commits
-
-
Andrew Morton authored
From: Chris Mason <mason@suse.com> Add reiserfs support for laptop mode.
-
Andrew Morton authored
From: Chris Mason <mason@suse.com> Enable preallocation for reiserfs_file_write when the write size is smaller than the default preallocation size.
-
Andrew Morton authored
From: Chris Mason <mason@suse.com> reiserfs data=ordered support.
-
Andrew Morton authored
From: Chris Mason <mason@suse.com> reiserfs logging rework, making things much faster for small transactions. metadata buffers are dirtied when they are safe to write, so normal kernel mechanisms can contribute to log cleaning.
-
- 30 Dec, 2003 2 commits
-
-
Andrew Morton authored
From: Nikita Danilov <Nikita@Namesys.COM> Add "commit" reiserfs mount option to override maximal transaction age. Usage: mount -treiserfs -ocommit=<time-in-seconds> /device /mountpoint Submitted by Hugang <hugang@soulinfo.com>.
-
Andrew Morton authored
From: Nikita Danilov <Nikita@Namesys.COM> Patch to teach fs/reiserfs/super.c:reiserfs_fill_super() to respect @silent parameter and to not issue any output if @silent is set. Also remove some trailing white spaces, while we are here.
-
- 18 Nov, 2003 1 commit
-
-
Andrew Morton authored
From: Oleg Drokin <green@linuxhacker.ru> reiserfs shouldn't be holding a ref against a buffer when running set_blocksize(): it means that truncate_inode_pages() cannot free that page. Which is not fatal - the page will drift aimlessly down the LRU until the VM nails it. But it's better this way.
-
- 23 Sep, 2003 1 commit
-
-
Alexander Viro authored
fs/reiserfs/procfs.c made sane. It used to store dev_t of filesystem in the proc_dir_entry->data (which is void *) and played very odd games after that. Switched to seq_file, stores pointer to superblock, uses sget() to validate it, avoids use of dev_t completely.
-
- 21 Sep, 2003 1 commit
-
-
Andrew Morton authored
From: Oleg Drokin <green@namesys.com> This patch adds more consistency checks to reiserfs (check that transaction is not bigger than journal, check that we reply blocks not beyond fs and check that fs fits the block device). Similar patch was included into 2.4 some time ago.
-
- 07 Aug, 2003 1 commit
-
-
Andrew Morton authored
From: Oleg Drokin <green@namesys.com> This small patch fixes a savelinks problem on bigendian platforms, where savelinks were not working at all because of incorrect cpu->disk endianness conversion. Savelinks are used on reiserfs to remember "truncate" and "unlink" events so that if crash happens in the middle of truncate/unlink, we do not endup with lost or half truncated files.
-
- 20 Jun, 2003 1 commit
-
-
Andrew Morton authored
From: Peter Chubb <peter@chubb.wattle.id.au> Add two new system calls, statfs64 and fstatfs64. This has been needed sincew the 64-bit sector_t merge - the current structures will overflow. - Use a common interface (vfs_statfs) with the rest of the kernel, - convert to 32-bit at (f)statfs time. - New field f_frsize gives underlying fragment size for the filesystem. (Solaris has this, and the Open Group describe it). - The old statfs syscalls will now return -EOVERFLOW if the device was too large to be represented inthe old data structures. The new system calls take a size_t argument, which is the size of the structure to be filled in (as requested by Ben LaHaise), to `futureproof' the interface. Has been reviewed by the arch maintainers and by Ulrich Drepper.
-
- 04 Jun, 2003 2 commits
-
-
Andrew Morton authored
From: Oleg Drokin <green@namesys.com> This patch allows reiserfs to support blocksizes from 1024 bytes and up to PAGE_CACHE_SIZE. Also it fixes two glitches that prevent reiserfs from working correctly in case if PAGE_CACHE_SIZE is bigger than blocksize. Originally this patch was created by Edward Shushkin and Vladimir Saveliev, and then it was adapted to modern 2.4 and 2.5 by me. Also people should be aware that 1024 bytes blocksize is not very good thing as tree grows very fast. mkreiserfs is able to create filesystems with different blocksizes for quite a while already (-b switch).
-
Andrew Morton authored
From: Oleg Drokin <green@namesys.com> This patch adds support for remounting taking into account all extra options you may want to pass it. (by Jeff Mahooney). Also it reworks the parser to correctly deal with mutually exclusive options. Now whatever option was specified last will take an effect. - If you pass more than one jdev= option, the error will be reported and mount/remount refused. - If you pass incorrect alloc= suboptions, the mount/remount will fail. (it did not before). - nolargeio now actually looks at its argument. Argument is expected to be numeric. If it is zero, default io size is set to 128k (default setting), if it is non-zero, default io size is set to PAGE_SIZE.
-
- 25 May, 2003 3 commits
-
-
Andries E. Brouwer authored
(i) The prototypes for free_vfsmnt(), alloc_vfsmnt(), do_kern_mount() so far occurred in several individual c files. Now they are in <linux/mount.h>. (ii) do_kern_mount() has a third argument name that is typically a constant. It is called with "rootfs", "nfsd", type->name, "capifs", "usbdevfs", "binfmt_misc" etc. So, it should have a prototype that expresses this: do_kern_mount(const char *fstype, int flags, const char *name, void *data); This makes the ugly cast - return do_kern_mount(type->name, 0, (char *)type->name, NULL); + return do_kern_mount(type->name, 0, type->name, NULL); go away. Now do_kern_mount() calls type->get_sb(), so also get_sb() must have a const third argument. That is what the patch below does. If I am not mistaken, precisely two filesystems do not treat this argument as a constant, namely afs and cifs. A separate patch gives some cleanup there.
-
Andrew Morton authored
All slabs which can be reclaimed via VM presure are marked as being shrinkable, so the core slab code will keep count of their pages. Except for the one in XFS. It has strange wrapper stuff.
-
Andrew Morton authored
From: Oleg Drokin <green@namesys.com> This is a forward port of 2.4's inode attributes support for reiserfs. Original implementation for 2.4 was performed by Nikita Danilov. In order to enable this support, one must use "attrs" mount options, eg: mount /dev/hda1 /mount/pont -t reiserfs -o attrs Also either the filesystem must have been created with a recent mkreiserfs or must have been modified by a recent version of reiserfsck with its "--clean-attributes" option. If that is not done, attributes support will not be enabled and a kernel message will be printed. This is necessary because old kernels left random garbage in the place where these attributes now live. These attributes are totally compatible with ext2's ones. You can manipulate them with chattr/lsattr etc. Additionally the chattr 'd' option may be used to disable tail packing on a specific file or a directory tree. (The 'd' option normally means "don't dump". reiserfs has overloaded it).
-
- 19 May, 2003 1 commit
-
-
Andrew Morton authored
From: Oleg Drokin <green@namesys.com> With the current 'one block at a time' algorithm, writes past the end of a file are slow because each new file block is separately added into the tree causing shifting of other items which is CPU expensive. With this new implementation if you write into file with big enough chunks, it uses half as much CPU. Also this version is more SMP friendly than the current one. There are some known-bad applications that break with this patch (ie. start to work very slow or even hang). This is because the filesystem returns a large value in the stat.st_blocksize hint (128k instead of 4k). This tickles a small number of application bugs. One is KDE's kmail 3.04 (fixed by upgrading to 3.1+) and the other is sleepycat's database from before 1997. If you hit a slowdown problem that you believe is related to the increased "recommended i/o size" value, try to mount your fs with nolargeio=1 mount option (remount should work too). This patch exports block_commit_write(), generic_osync_inode() and remove_suid() to modules.
-
- 25 Feb, 2003 1 commit
-
-
Michael Hayes authored
accomodate -> accommodate accomodated -> accommodated accomodates -> accommodates
-
- 13 Jan, 2003 1 commit
-
-
Rusty Russell authored
From: Arnd Bergmann <arnd@bergmann-dalldorf.de> balloc[] and tails[] are used only in the file they are defined in, so they should be made static
-
- 01 Jan, 2003 1 commit
-
-
Christoph Hellwig authored
fs.h only needs the forward-declaration of struct statfs
-
- 07 Dec, 2002 2 commits
-
-
Oleg Drokin authored
-
Oleg Drokin authored
-
- 09 Oct, 2002 1 commit
-
-
Andrew Morton authored
From Peter Chubb printk changes: A sector_t can be either 64 or 32 bits, so cast it to a printable type that is at least as large as 64-bits on all platforms (i.e., cast to unsigned long long and use a %llu format) Transition to 64-bit sector_t: fix isofs_get_blocks by converting the (possibly 64-bit) arg to a long. SCSI 64-bit sector_t cleanup: capacity now stored as sector_t; make sure that the READ_CAPACITY command doesn't sign-extend its returned value; avoid 64-bit division when printing size in MB. Still to do: - 16-byte SCSI commands - Individual scsi drivers.
-
- 08 Oct, 2002 1 commit
-
-
Brian Gerst authored
This last patch removes the union, replacing it with s_fs_info.
-
- 20 Aug, 2002 1 commit
-
-
Oleg Drokin authored
New block allocator contains code from Alexander Zarochencev, Jeff Mahoney and Oleg Drokin.
-
- 30 Jul, 2002 1 commit
-
-
Oleg Drokin authored
C99 struct initialisers
-
- 09 Jul, 2002 1 commit
-
-
Vladimir Saveliev authored
-
- 11 Jun, 2002 1 commit
-
-
Alexander Viro authored
added bdev_read_only() - analog of is_read_only() using block_device. Almost all callers of is_read_only() converted.
-
- 30 May, 2002 4 commits
-
-
Oleg Drokin authored
reiserfs_write(un)lock introducion. Simple wrapper for now.
-
Oleg Drokin authored
reiserfs: variable name cleanup in read_bitmaps.
-
Oleg Drokin authored
reiserfs: comment cleanups and a switch to new mount option parsing code. REISERFS_MAX_NAME_LEN changed to REISERFS_MAX_NAME. hash= mount option support removed. By Vladimir Saveliev.
-
Oleg Drokin authored
reiserfs_fill_super cleanup. From Josh MacDonald.
-