diff options
author | Adrian Hunter <adrian.hunter@nokia.com> | 2009-04-08 14:07:57 +0200 |
---|---|---|
committer | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2009-05-06 10:37:56 +0300 |
commit | 6d6cb0d688d0f262cb4fd5771648b0ac01d4f82c (patch) | |
tree | b4e0f50358029650f0047ffe1f9c48e24c420584 /fs/ubifs/super.c | |
parent | 091438dd5668396328a3419abcbc6591159eb8d1 (diff) | |
download | kernel-crypto-6d6cb0d688d0f262cb4fd5771648b0ac01d4f82c.tar.gz kernel-crypto-6d6cb0d688d0f262cb4fd5771648b0ac01d4f82c.tar.xz kernel-crypto-6d6cb0d688d0f262cb4fd5771648b0ac01d4f82c.zip |
UBIFS: reset no_space flag after inode deletion
When UBIFS runs out of space it spends a lot of time trying to
find more space before returning ENOSPC. As there is no point
repeating that unless something has changed, UBIFS has an
optimization to record that the file system is 100% full and not
try to find space. That flag was not being reset when a pending
deletion was finally done.
Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com>
Reviewed-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'fs/ubifs/super.c')
-rw-r--r-- | fs/ubifs/super.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c index faa44f90608..f2c1c0b79f6 100644 --- a/fs/ubifs/super.c +++ b/fs/ubifs/super.c @@ -360,6 +360,11 @@ static void ubifs_delete_inode(struct inode *inode) out: if (ui->dirty) ubifs_release_dirty_inode_budget(c, ui); + else { + /* We've deleted something - clean the "no space" flags */ + c->nospace = c->nospace_rp = 0; + smp_wmb(); + } clear_inode(inode); } |