Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
Pull UDF and quota updates from Jan Kara: "A few UDF fixes and also a few patches which are preparing filesystems for support of project quotas in VFS" * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs: udf: Fix loading of special inodes ocfs2: Back out change to use OCFS2_MAXQUOTAS in ocfs2_setattr() udf: remove redundant sys_tz declaration ocfs2: Don't use MAXQUOTAS value reiserfs: Don't use MAXQUOTAS value ext3: Don't use MAXQUOTAS value udf: Fix race between write(2) and close(2)
This commit is contained in:
commit
ac0c49396d
14 changed files with 101 additions and 68 deletions
|
@ -237,6 +237,8 @@ struct ext3_new_group_data {
|
|||
#define EXT3_IOC32_GETVERSION_OLD FS_IOC32_GETVERSION
|
||||
#define EXT3_IOC32_SETVERSION_OLD FS_IOC32_SETVERSION
|
||||
|
||||
/* Number of supported quota types */
|
||||
#define EXT3_MAXQUOTAS 2
|
||||
|
||||
/*
|
||||
* Mount options
|
||||
|
@ -248,7 +250,7 @@ struct ext3_mount_options {
|
|||
unsigned long s_commit_interval;
|
||||
#ifdef CONFIG_QUOTA
|
||||
int s_jquota_fmt;
|
||||
char *s_qf_names[MAXQUOTAS];
|
||||
char *s_qf_names[EXT3_MAXQUOTAS];
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -669,7 +671,7 @@ struct ext3_sb_info {
|
|||
unsigned long s_commit_interval;
|
||||
struct block_device *journal_bdev;
|
||||
#ifdef CONFIG_QUOTA
|
||||
char *s_qf_names[MAXQUOTAS]; /* Names of quota files with journalled quota */
|
||||
char *s_qf_names[EXT3_MAXQUOTAS]; /* Names of quota files with journalled quota */
|
||||
int s_jquota_fmt; /* Format of quota to use */
|
||||
#endif
|
||||
};
|
||||
|
@ -1183,9 +1185,9 @@ extern const struct inode_operations ext3_fast_symlink_inode_operations;
|
|||
#define EXT3_QUOTA_INIT_BLOCKS(sb) 0
|
||||
#define EXT3_QUOTA_DEL_BLOCKS(sb) 0
|
||||
#endif
|
||||
#define EXT3_MAXQUOTAS_TRANS_BLOCKS(sb) (MAXQUOTAS*EXT3_QUOTA_TRANS_BLOCKS(sb))
|
||||
#define EXT3_MAXQUOTAS_INIT_BLOCKS(sb) (MAXQUOTAS*EXT3_QUOTA_INIT_BLOCKS(sb))
|
||||
#define EXT3_MAXQUOTAS_DEL_BLOCKS(sb) (MAXQUOTAS*EXT3_QUOTA_DEL_BLOCKS(sb))
|
||||
#define EXT3_MAXQUOTAS_TRANS_BLOCKS(sb) (EXT3_MAXQUOTAS*EXT3_QUOTA_TRANS_BLOCKS(sb))
|
||||
#define EXT3_MAXQUOTAS_INIT_BLOCKS(sb) (EXT3_MAXQUOTAS*EXT3_QUOTA_INIT_BLOCKS(sb))
|
||||
#define EXT3_MAXQUOTAS_DEL_BLOCKS(sb) (EXT3_MAXQUOTAS*EXT3_QUOTA_DEL_BLOCKS(sb))
|
||||
|
||||
int
|
||||
ext3_mark_iloc_dirty(handle_t *handle,
|
||||
|
|
|
@ -441,7 +441,7 @@ static void ext3_put_super (struct super_block * sb)
|
|||
percpu_counter_destroy(&sbi->s_dirs_counter);
|
||||
brelse(sbi->s_sbh);
|
||||
#ifdef CONFIG_QUOTA
|
||||
for (i = 0; i < MAXQUOTAS; i++)
|
||||
for (i = 0; i < EXT3_MAXQUOTAS; i++)
|
||||
kfree(sbi->s_qf_names[i]);
|
||||
#endif
|
||||
|
||||
|
@ -1555,7 +1555,7 @@ static void ext3_orphan_cleanup (struct super_block * sb,
|
|||
/* Needed for iput() to work correctly and not trash data */
|
||||
sb->s_flags |= MS_ACTIVE;
|
||||
/* Turn on quotas so that they are updated correctly */
|
||||
for (i = 0; i < MAXQUOTAS; i++) {
|
||||
for (i = 0; i < EXT3_MAXQUOTAS; i++) {
|
||||
if (EXT3_SB(sb)->s_qf_names[i]) {
|
||||
int ret = ext3_quota_on_mount(sb, i);
|
||||
if (ret < 0)
|
||||
|
@ -1606,7 +1606,7 @@ static void ext3_orphan_cleanup (struct super_block * sb,
|
|||
PLURAL(nr_truncates));
|
||||
#ifdef CONFIG_QUOTA
|
||||
/* Turn quotas off */
|
||||
for (i = 0; i < MAXQUOTAS; i++) {
|
||||
for (i = 0; i < EXT3_MAXQUOTAS; i++) {
|
||||
if (sb_dqopt(sb)->files[i])
|
||||
dquot_quota_off(sb, i);
|
||||
}
|
||||
|
@ -2139,7 +2139,7 @@ failed_mount2:
|
|||
kfree(sbi->s_group_desc);
|
||||
failed_mount:
|
||||
#ifdef CONFIG_QUOTA
|
||||
for (i = 0; i < MAXQUOTAS; i++)
|
||||
for (i = 0; i < EXT3_MAXQUOTAS; i++)
|
||||
kfree(sbi->s_qf_names[i]);
|
||||
#endif
|
||||
ext3_blkdev_remove(sbi);
|
||||
|
@ -2659,7 +2659,7 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
|
|||
old_opts.s_commit_interval = sbi->s_commit_interval;
|
||||
#ifdef CONFIG_QUOTA
|
||||
old_opts.s_jquota_fmt = sbi->s_jquota_fmt;
|
||||
for (i = 0; i < MAXQUOTAS; i++)
|
||||
for (i = 0; i < EXT3_MAXQUOTAS; i++)
|
||||
if (sbi->s_qf_names[i]) {
|
||||
old_opts.s_qf_names[i] = kstrdup(sbi->s_qf_names[i],
|
||||
GFP_KERNEL);
|
||||
|
@ -2763,7 +2763,7 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
|
|||
}
|
||||
#ifdef CONFIG_QUOTA
|
||||
/* Release old quota file names */
|
||||
for (i = 0; i < MAXQUOTAS; i++)
|
||||
for (i = 0; i < EXT3_MAXQUOTAS; i++)
|
||||
kfree(old_opts.s_qf_names[i]);
|
||||
#endif
|
||||
if (enable_quota)
|
||||
|
@ -2777,7 +2777,7 @@ restore_opts:
|
|||
sbi->s_commit_interval = old_opts.s_commit_interval;
|
||||
#ifdef CONFIG_QUOTA
|
||||
sbi->s_jquota_fmt = old_opts.s_jquota_fmt;
|
||||
for (i = 0; i < MAXQUOTAS; i++) {
|
||||
for (i = 0; i < EXT3_MAXQUOTAS; i++) {
|
||||
kfree(sbi->s_qf_names[i]);
|
||||
sbi->s_qf_names[i] = old_opts.s_qf_names[i];
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue