Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
Pull quota and ext3 fixes from Jan Kara. * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs: fs, jbd: use a more generic hash function quota: Properly return errors from dquot_writeback_dquots() ext3: Don't check quota format when there are no quota files
This commit is contained in:
commit
e2488ab6ab
|
@ -1354,13 +1354,6 @@ set_qf_format:
|
||||||
"not specified.");
|
"not specified.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (sbi->s_jquota_fmt) {
|
|
||||||
ext3_msg(sb, KERN_ERR, "error: journaled quota format "
|
|
||||||
"specified with no journaling "
|
|
||||||
"enabled.");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -93,6 +93,7 @@
|
||||||
#include <linux/bio.h>
|
#include <linux/bio.h>
|
||||||
#endif
|
#endif
|
||||||
#include <linux/log2.h>
|
#include <linux/log2.h>
|
||||||
|
#include <linux/hash.h>
|
||||||
|
|
||||||
static struct kmem_cache *revoke_record_cache;
|
static struct kmem_cache *revoke_record_cache;
|
||||||
static struct kmem_cache *revoke_table_cache;
|
static struct kmem_cache *revoke_table_cache;
|
||||||
|
@ -129,15 +130,11 @@ static void flush_descriptor(journal_t *, struct journal_head *, int, int);
|
||||||
|
|
||||||
/* Utility functions to maintain the revoke table */
|
/* Utility functions to maintain the revoke table */
|
||||||
|
|
||||||
/* Borrowed from buffer.c: this is a tried and tested block hash function */
|
|
||||||
static inline int hash(journal_t *journal, unsigned int block)
|
static inline int hash(journal_t *journal, unsigned int block)
|
||||||
{
|
{
|
||||||
struct jbd_revoke_table_s *table = journal->j_revoke;
|
struct jbd_revoke_table_s *table = journal->j_revoke;
|
||||||
int hash_shift = table->hash_shift;
|
|
||||||
|
|
||||||
return ((block << (hash_shift - 6)) ^
|
return hash_32(block, table->hash_shift);
|
||||||
(block >> 13) ^
|
|
||||||
(block << (hash_shift - 12))) & (table->hash_size - 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int insert_revoke_hash(journal_t *journal, unsigned int blocknr,
|
static int insert_revoke_hash(journal_t *journal, unsigned int blocknr,
|
||||||
|
|
|
@ -634,7 +634,7 @@ int dquot_writeback_dquots(struct super_block *sb, int type)
|
||||||
dqstats_inc(DQST_LOOKUPS);
|
dqstats_inc(DQST_LOOKUPS);
|
||||||
err = sb->dq_op->write_dquot(dquot);
|
err = sb->dq_op->write_dquot(dquot);
|
||||||
if (!ret && err)
|
if (!ret && err)
|
||||||
err = ret;
|
ret = err;
|
||||||
dqput(dquot);
|
dqput(dquot);
|
||||||
spin_lock(&dq_list_lock);
|
spin_lock(&dq_list_lock);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue