summaryrefslogtreecommitdiffstats
path: root/fs/logfs
Commit message (Collapse)AuthorAgeFilesLines
* [LogFS] Plug 8 byte information leakJoern Engel2010-04-131-10/+14
| | | | | | | Within each journal segment, 8 bytes at offset 24 would remain uninitialized. Signed-off-by: Joern Engel <joern@logfs.org>
* [LogFS] Prevent memory corruption on large deletesJoern Engel2010-04-135-1/+34
| | | | | | | | | | | | Removing sufficiently large files would create aliases for a large number of segments. This in turn results in a large number of journal entries and an overflow of s_je_array. Cheap fix is to add a BUG_ON, turning memory corruption into something annoying, but less dangerous. Real fix is to count the number of affected segments and prevent the problem completely. Signed-off-by: Joern Engel <joern@logfs.org>
* [LogFS] Remove unused methodJoern Engel2010-03-303-28/+0
| | | | | | All callers are long gone. Signed-off-by: Joern Engel <joern@logfs.org>
* [LogFS] Erase new journal segmentsJoern Engel2010-03-291-0/+2
| | | | | | | | | | If the device contains on old logfs image and the journal is moved to segment that have never been used by the current logfs and not all journal segments are erased before the next mount, the old content can confuse mount code. To prevent this, always erase the new journal segments. Signed-off-by: Joern Engel <joern@logfs.org>
* [LogFS] Move reserved segments with journalJoern Engel2010-03-291-0/+4
| | | | | | Fixes a GC livelock. Signed-off-by: Joern Engel <joern@logfs.org>
* [LogFS] Clear PagePrivate when moving journalJoern Engel2010-03-283-1/+3
| | | | | | | do_logfs_journal_wl_pass() must call freeseg(), thereby clear PagePrivate on all pages of the current journal segment. Signed-off-by: Joern Engel <joern@logfs.org>
* Simplify and fix pad_wbufJoern Engel2010-03-281-22/+30
| | | | | | | | | | | A comment in the old code read: /* The math in this function can surely use some love */ And indeed it did. In the case that area->a_used_bytes is exactly 4096 bytes below segment size it fell apart. pad_wbuf is now split into two helpers that are significantly less complicated. Signed-off-by: Joern Engel <joern@logfs.org>
* Prevent data corruption in logfs_rewrite_block()Joern Engel2010-03-281-1/+12
| | | | | | | | The comment was correct, so make the code match the comment. As the new comment indicates, we might be able to do a little less work. But for the current -rc series let's keep it simple and just fix the bug. Signed-off-by: Joern Engel <joern@logfs.org>
* Use deactivate_locked_superJoern Engel2010-03-271-2/+1
| | | | | | Found by Al Viro. Signed-off-by: Joern Engel <joern@logfs.org>
* Fix logfs_get_sb_final error pathJoern Engel2010-03-271-1/+1
| | | | | | | rootdir was already allocated, so we must iput it again. Found by Al Viro. Signed-off-by: Joern Engel <joern@logfs.org>
* Write out both superblocks on mismatchJoern Engel2010-03-271-1/+1
| | | | | | | | If the first superblock is wrong and the second gets written, there will still be a mismatch on next mount. Write both to make sure they match. Signed-off-by: Joern Engel <joern@logfs.org>
* Prevent schedule while atomic in __logfs_readdirJoern Engel2010-03-271-2/+2
| | | | | | Apparently filldir can sleep, which forbids kmap_atomic. Signed-off-by: Joern Engel <joern@logfs.org>
* Plug memory leak in writeseg_end_ioJoern Engel2010-03-271-0/+1
| | | | Signed-off-by: Joern Engel <joern@logfs.org>
* Limit max_pages for insane devicesJoern Engel2010-03-271-2/+6
| | | | | | | | Intel SSDs have a limit of 0xffff as queue_max_hw_sectors(q). Such a limit may make sense from a hardware pov, but it causes bio_alloc() to return NULL. Signed-off-by: Joern Engel <joern@logfs.org>
* Open segment file before using itJoern Engel2010-03-271-4/+4
| | | | | | logfs_recover_sb() needs it open. Signed-off-by: Joern Engel <joern@logfs.org>
* Merge git://git.kernel.org/pub/scm/linux/kernel/git/joern/logfsLinus Torvalds2010-03-061-1/+1
| | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/joern/logfs: [LogFS] Change magic number [LogFS] Remove h_version field [LogFS] Check feature flags [LogFS] Only write journal if dirty [LogFS] Fix bdev erases [LogFS] Silence gcc [LogFS] Prevent 64bit divisions in hash_index [LogFS] Plug memory leak on error paths [LogFS] Add MAINTAINERS entry [LogFS] add new flash file system Fixed up trivial conflict in lib/Kconfig, and a semantic conflict in fs/logfs/inode.c introduced by write_inode() being changed to use writeback_control' by commit a9185b41a4f84971b930c519f0c63bd450c4810d ("pass writeback_control to ->write_inode")
* [LogFS] Change magic numberJoern Engel2010-03-061-1/+1
| | | | | | | Many changes were made during development that could result in old versions of mklogfs and the kernel code being subtly incompatible. Not being a friend of subtleties, I hereby change the magic number. Any old version of mklogfs is now guaranteed to fail.
* [LogFS] Remove h_version fieldJoern Engel2010-03-062-6/+5
| | | | Incompatible change: h_compr is moved up so the padding is all in one chunk.
* [LogFS] Check feature flagsJoern Engel2010-03-052-2/+12
|
* [LogFS] Only write journal if dirtyJoern Engel2010-03-046-13/+19
| | | | | This prevents unnecessary journal writes. More importantly it prevents an oops due to a journal write on failed mount.
* [LogFS] Fix bdev erasesJoern Engel2010-03-046-20/+97
| | | | | | | | | | | | Erases for block devices were always just emulated by writing 0xff. Some time back the write was removed and only the page cache was changed to 0xff. Superficialy a good idea with two problems: 1. Touching the page cache isn't necessary either. 2. However, writing out 0xff _is_ necessary for the journal. As the journal is scanned linearly, an old non-overwritten commit entry can be used on next mount and cause havoc. This should fix both aspects.
* [LogFS] Silence gccJoern Engel2009-12-071-1/+1
| | | | | | | | Andrew Morton sayeth: fs/logfs/journal.c: In function 'logfs_init_journal': fs/logfs/journal.c:266: warning: 'last_len' may be used uninitialized in this function Can this be squished please?
* [LogFS] Prevent 64bit divisions in hash_indexJoern Engel2009-11-281-5/+10
| | | | | | | Randy Dunlap caught this built error on i386: fs/built-in.o: In function `hash_index': dir.c:(.text+0x6c1f2): undefined reference to `__umoddi3'
* [LogFS] Plug memory leak on error pathsJoern Engel2009-11-231-2/+6
| | | | Spotted by Dan Carpenter.
* [LogFS] add new flash file systemJoern Engel2009-11-2015-0/+8901
This is a new flash file system. See Documentation/filesystems/logfs.txt Signed-off-by: Joern Engel <joern@logfs.org>
OpenPOWER on IntegriCloud