02 May, 2008
2 commits
-
Adding the ability to get a physical address from point() in addition
to virtual address. This physical address is required for XIP of
userspace code from flash.Signed-off-by: Jared Hulbert
Reviewed-by: Jörn Engel
Acked-by: Nicolas Pitre
Acked-by: Greg Ungerer
Signed-off-by: David Woodhouse -
To support NFS export, we need to know the parent inode of directories.
Rather than growing the jffs2_inode_cache structure, share space with
the nlink field -- which was always set to 1 for directories anyway.Signed-off-by: David Woodhouse
23 Apr, 2008
4 commits
-
Just to keep the debug code happy when it's adding all the blocks up.
Otherwise, they disappear for a while while the locks are dropped to
check them and write the cleanmarker.Signed-off-by: David Woodhouse
-
It looks the error paths in jffs2_block_check_erase() have wrong return
values. A block that failed to be erased never gets marked as bad.Signed-off-by: David Woodhouse
-
The problem fixed in commit 014b164e1392a166fe96e003d2f0e7ad2e2a0bb7
(space leak with in-band cleanmarkers) would have been caught a lot
quicker if our paranoid debugging mode had included adding up the size
counts from all the eraseblocks and comparing the totals with the counts
in the superblock. Add that.Make jffs2_mark_erased_block() file the newly-erased block on the
free_list before calling the debug function, to make it happy.Signed-off-by: David Woodhouse
-
We were accounting for the cleanmarker by calling jffs2_link_node_ref()
(without locking!), which adjusted both superblock and per-eraseblock
accounting, subtracting the size of the cleanmarker from {jeb,c}->free_size
and adding it to {jeb,c}->used_size.But only _then_ were we adding the size of the newly-erased block back
to the superblock counts, and we were adding each of jeb->{free,used}_size
to the corresponding superblock counts. Thus, the size of the cleanmarker
was effectively subtracted from the superblock's free_size _twice_.Fix this, by always adding a full eraseblock size to c->free_size when
we've erased a block. And call jffs2_link_node_ref() under the proper
lock, while we're at it.Thanks to Alexander Yurchenko and/or Damir Shayhutdinov for (almost)
pinpointing the problem.Signed-off-by: David Woodhouse
22 Apr, 2008
1 commit
-
Signed-off-by: David Woodhouse
24 Sep, 2007
1 commit
-
Fix a couple of instances in JFFS2 where the unpoint() routine is
being called with the wrong length in cases where the point() routine
truncated a request.Signed-off-by: Andy Lowe
Signed-off-by: Nicolas Pitre
Signed-off-by: David Woodhouse
22 Aug, 2007
1 commit
-
fs/jffs2/erase.c: In function 'jffs2_block_check_erase':
fs/jffs2/erase.c:355: warning: format '%08x' expects type 'unsigned int', but argument 3 has type 'long unsigned int'and
fs/jffs2/erase.c: In function 'jffs2_erase_pending_blocks':
fs/jffs2/erase.c:404: warning: 'bad_offset' may be used uninitialized in this functionSigned-off-by: Andrew Morton
Signed-off-by: David Woodhouse
10 Jul, 2007
1 commit
-
Convert many spaces to tabs; one or two other minor cosmetic fixes.
Signed-off-by: David Woodhouse
29 Jun, 2007
3 commits
-
With current desing erase_free_sem is locked every time the flash
block is being erased. For NOR flashes - ~1 second is needed to erase
single flash block. In the worst case scenario erase_free_sem may be
locked for a couple of seconds when the number of blocks is being
erased (e.g. after large file was removed). When erase_free_sem is
locked all read/write operations for given JFFS2 partition are locked
too - in effect from time to time access to the JFFS2 partition is
locked for a number of seconds. This fix makes critical section in
flash erasing procedure shorter - now erase_free_sem is locked around
erase_completion_lock spinlock only.Originally from Radoslaw Bisewski
Signed-off-by: Joakim Tjernlund
Signed-off-by: David Woodhouse -
Faster and won't trash the D-cache.
Signed-off-by: Joakim Tjernlund
Signed-off-by: David Woodhouse -
When pdflush is erasing lots of sectors, drivers calling
mtd->sync will hang until all blocks are erased. Be nicer.Signed-off-by: Joakim Tjernlund
Signed-off-by: David Woodhouse
25 Apr, 2007
1 commit
-
In particular, remove the bit in the LICENCE file about contacting
Red Hat for alternative arrangements. Their errant IS department broke
that arrangement a long time ago -- the policy of collecting copyright
assignments from contributors came to an end when the plug was pulled on
the servers hosting the project, without notice or reason.We do still dual-license it for use with eCos, with the GPL+exception
licence approved by the FSF as being GPL-compatible. It's just that nobody
has the right to license it differently.Signed-off-by: David Woodhouse
18 Apr, 2007
1 commit
-
When the MTD driver returns write failure, the following deadlock
occurs:We are in __jffs2_flush_wbuf(), we hold &c->wbuf_sem. Write failure.
jffs2_wbuf_recover()->jffs2_reserve_space_gc()->jffs2_do_reserve_space()
->jffs2_erase_pending_blocks()->jffs2_flash_read()and it tries to lock &c->wbuf_sem again. Deadlock.
Reported-by: Adrian Hunter
Signed-off-by: Artem Bityutskiy
Signed-off-by: David Woodhouse
28 Jun, 2006
1 commit
-
* git://git.infradead.org/mtd-2.6:
[MTD] NAND: Select chip before checking write protect status
[MTD] CORE mtdchar.c: fix off-by-one error in lseek()
[MTD] NAND: Fix typo in mtd/nand/ts7250.c
[JFFS2][XATTR] coexistence between xattr and write buffering support.
[JFFS2][XATTR] Fix wrong copyright
[JFFS2][XATTR] Re-define xd->refcnt as atomic_t
[JFFS2][XATTR] Fix memory leak with jffs2_xattr_ref
[JFFS2][XATTR] rid unnecessary writing of delete marker.
[JFFS2][XATTR] Fix ACL bug when updating null xattr by null ACL.
[JFFS2][XATTR] using 'delete marker' for xdatum/xref deletion
[MTD] Fix off-by-one error in physmap.c
[MTD] Remove unused 'nr_banks' variable from ixp2000 map driver
[MTD NAND] s3c2412 support in s3c2410.c
[MTD] Initialize 'writesize'
[MTD] NAND: ndfc fix address offset thinko
[MTD] NAND: S3C2410 convert prinks to dev_*()s
[MTD] NAND: Missing fixups
27 Jun, 2006
2 commits
-
- When xdatum is removed, a new xdatum with 'delete marker' is
written. (version==0xffffffff means 'delete marker')
- When xref is removed, a new xref with 'delete marker' is written.
(odd-numbered xseqno means 'delete marker')- delete_xattr_(datum/xref)_delay() are new deletion functions
are added. We can only use them if we can detect the target
obsolete xdatum/xref as a orphan or errir one.
(e.g when inode deletion, or detecting crc error)[1/3] jffs2-xattr-v6-01-delete_marker.patch
Signed-off-by: KaiGai Kohei
Signed-off-by: David Woodhouse -
This patch converts the combination of list_del(A) and list_add(A, B) to
list_move(A, B) under fs/.Cc: Ian Kent
Acked-by: Joel Becker
Cc: Neil Brown
Cc: Hans Reiser
Cc: Urban Widmark
Acked-by: David Howells
Acked-by: Mark Fasheh
Signed-off-by: Akinobu Mita
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
27 May, 2006
1 commit
-
This allows us to drop another pointer from the struct jffs2_raw_node_ref,
shrinking it to 8 bytes on 32-bit machines (if the TEST_TOTLEN) paranoia
check is turned off, which will be committed soon).Signed-off-by: David Woodhouse
25 May, 2006
2 commits
-
Preallocation of refs is shortly going to be a per-eraseblock thing,
rather than per-filesystem. Add the required argument to the function.Signed-off-by: David Woodhouse
-
... to jffs2_free_jeb_node_refs() since that's what it does.
Signed-off-by: David Woodhouse
24 May, 2006
1 commit
-
As the first step towards eliminating the ref->next_phys member and saving
memory by using an _array_ of struct jffs2_raw_node_ref per eraseblock,
stop the write functions from allocating their own refs; have them just
_reserve_ the appropriate number instead. Then jffs2_link_node_ref() can
just fill them in.Use a linked list of pre-allocated refs in the superblock, for now. Once
we switch to an array, it'll just be a case of extending that array.Signed-off-by: David Woodhouse
22 May, 2006
2 commits
-
In a couple of places, we assume that what's at the end of the
->next_in_ino list is a struct jffs2_inode_cache. Let's check
for that, since we expect it to change soon.Signed-off-by: David Woodhouse
-
Let's avoid the potential for forgetting to set ref->next_in_ino, by doing
it within jffs2_link_node_ref() instead.This highlights the ugliness of what we're currently doing with
xattr_datum and xattr_ref structures -- we should find a nicer way of
dealing with that.Signed-off-by: David Woodhouse
21 May, 2006
2 commits
-
For RWCOMPAT and ROCOMPAT nodes, we should still allow the mount to
succeed. Just abandon the summary and fall through to the full scan.Signed-off-by: David Woodhouse
-
The same sequence of code was repeated in many places, to add a new
struct jffs2_raw_node_ref to an eraseblock and adjust the space accounting
accordingly. Move it out-of-line.Signed-off-by: David Woodhouse
07 Nov, 2005
3 commits
-
Signed-off-by: Thomas Gleixner
-
Simplify the debugging code further.
Update the TODO listSigned-off-by: Artem B. Bityutskiy
Signed-off-by: Thomas Gleixner -
Various simplifiactions. printk format corrections.
Convert more code to use the new debug functions.Signed-off-by: Artem B. Bityutskiy
Signed-off-by: Thomas Gleixner
06 Nov, 2005
1 commit
-
Move debug functions into a seperate source file
Signed-off-by: Artem B. Bityutskiy
Signed-off-by: Thomas Gleixner
15 Jul, 2005
1 commit
-
In the rare case of failing to write the cleanmarker
the allocated node was not freed.Pointed out by Forrest Zhao
Initial cleanup by Joern EngelSigned-off-by: Thomas Gleixner
23 May, 2005
7 commits
-
Signed-off-by: Thomas Gleixner
-
Fix the bug that caouses problems when compiling for NOR.
We read a newly erased block so we don't need to check ECC.Define jffs2_is_writebuffered as zero if there is no wbuf.
Signed-off-by: Artem B. Bityuckiy
Signed-off-by: Thomas Gleixner -
Signed-off-by: Artem B. Bityuckiy
Signed-off-by: Thomas Gleixner -
Signed-off-by: Artem B. Bityuckiy
Signed-off-by: Thomas Gleixner -
Don't remove inocache for inodes which are in read_inode() or
clear_inode() until they're done.Signed-off-by: David Woodhouse
Signed-off-by: Thomas Gleixner -
For Dataflash, can_mark_obsolete = false and the NAND write buffering
code (wbuf.c) is used.Since the DataFlash chip will automatically erase pages when writing,
the cleanmarkers are not needed - so cleanmarker_oob = false and
cleanmarker_size = 0DataFlash page-sizes are not a power of two (they're multiples of 528
bytes). The SECTOR_ADDR macro (added in the previous core patch) is
replaced with a (slower) div/mod version if CONFIG_JFFS2_FS_DATAFLASH is
selected.Signed-off-by: Andrew Victor
Signed-off-by: Thomas Gleixner -
DataFlash page-sizes are not a power of two (they're multiples of 528
bytes). There are a few places in JFFS2 code where sector_size is used
as a bitmask. A new macro (SECTOR_ADDR) was defined to calculate these
sector addresses. For non-DataFlash devices, the original (faster)
bitmask operation is still used.In scan.c, the EMPTY_SCAN_SIZE was a constant of 1024.
Since this could be larger than the sector size of the DataFlash, this
is now basically set to MIN(sector_size, 1024).Addition of a jffs2_is_writebuffered() macro.
Signed-off-by: Andrew Victor
Signed-off-by: Thomas Gleixner
17 Apr, 2005
1 commit
-
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.Let it rip!