Skip to content

Commit

Permalink
dquot: cleanup dquot initialize routine
Browse files Browse the repository at this point in the history
Get rid of the initialize dquot operation - it is now always called from
the filesystem and if a filesystem really needs it's own (which none
currently does) it can just call into it's own routine directly.

Rename the now static low-level dquot_initialize helper to __dquot_initialize
and vfs_dq_init to dquot_initialize to have a consistent namespace.

Signed-off-by: Christoph Hellwig <[email protected]>
Signed-off-by: Jan Kara <[email protected]>
  • Loading branch information
Christoph Hellwig authored and jankara committed Mar 4, 2010
1 parent 907f455 commit 871a293
Show file tree
Hide file tree
Showing 39 changed files with 141 additions and 145 deletions.
2 changes: 0 additions & 2 deletions Documentation/filesystems/Locking
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,6 @@ in sys_read() and friends.

--------------------------- dquot_operations -------------------------------
prototypes:
int (*initialize) (struct inode *, int);
int (*write_dquot) (struct dquot *);
int (*acquire_dquot) (struct dquot *);
int (*release_dquot) (struct dquot *);
Expand All @@ -473,7 +472,6 @@ a proper locking wrt the filesystem and call the generic quota operations.
What filesystem should expect from the generic quota functions:

FS recursion Held locks when called
initialize: yes maybe dqonoff_sem
write_dquot: yes dqonoff_sem or dqptr_sem
acquire_dquot: yes dqonoff_sem or dqptr_sem
release_dquot: yes dqonoff_sem or dqptr_sem
Expand Down
1 change: 1 addition & 0 deletions fs/ext2/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

#include <linux/time.h>
#include <linux/pagemap.h>
#include <linux/quotaops.h>
#include "ext2.h"
#include "xattr.h"
#include "acl.h"
Expand Down
2 changes: 1 addition & 1 deletion fs/ext2/ialloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -586,7 +586,7 @@ struct inode *ext2_new_inode(struct inode *dir, int mode)
goto fail_drop;
}

vfs_dq_init(inode);
dquot_initialize(inode);
err = dquot_alloc_inode(inode);
if (err)
goto fail_drop;
Expand Down
4 changes: 2 additions & 2 deletions fs/ext2/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ static inline int ext2_inode_is_fast_symlink(struct inode *inode)
void ext2_delete_inode (struct inode * inode)
{
if (!is_bad_inode(inode))
vfs_dq_init(inode);
dquot_initialize(inode);
truncate_inode_pages(&inode->i_data, 0);

if (is_bad_inode(inode))
Expand Down Expand Up @@ -1461,7 +1461,7 @@ int ext2_setattr(struct dentry *dentry, struct iattr *iattr)
return error;

if (iattr->ia_valid & ATTR_SIZE)
vfs_dq_init(inode);
dquot_initialize(inode);
if ((iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) ||
(iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid)) {
error = dquot_transfer(inode, iattr);
Expand Down
16 changes: 8 additions & 8 deletions fs/ext2/namei.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ static int ext2_create (struct inode * dir, struct dentry * dentry, int mode, st
{
struct inode *inode;

vfs_dq_init(dir);
dquot_initialize(dir);

inode = ext2_new_inode(dir, mode);
if (IS_ERR(inode))
Expand Down Expand Up @@ -131,7 +131,7 @@ static int ext2_mknod (struct inode * dir, struct dentry *dentry, int mode, dev_
if (!new_valid_dev(rdev))
return -EINVAL;

vfs_dq_init(dir);
dquot_initialize(dir);

inode = ext2_new_inode (dir, mode);
err = PTR_ERR(inode);
Expand All @@ -157,7 +157,7 @@ static int ext2_symlink (struct inode * dir, struct dentry * dentry,
if (l > sb->s_blocksize)
goto out;

vfs_dq_init(dir);
dquot_initialize(dir);

inode = ext2_new_inode (dir, S_IFLNK | S_IRWXUGO);
err = PTR_ERR(inode);
Expand Down Expand Up @@ -202,7 +202,7 @@ static int ext2_link (struct dentry * old_dentry, struct inode * dir,
if (inode->i_nlink >= EXT2_LINK_MAX)
return -EMLINK;

vfs_dq_init(dir);
dquot_initialize(dir);

inode->i_ctime = CURRENT_TIME_SEC;
inode_inc_link_count(inode);
Expand All @@ -226,7 +226,7 @@ static int ext2_mkdir(struct inode * dir, struct dentry * dentry, int mode)
if (dir->i_nlink >= EXT2_LINK_MAX)
goto out;

vfs_dq_init(dir);
dquot_initialize(dir);

inode_inc_link_count(dir);

Expand Down Expand Up @@ -274,7 +274,7 @@ static int ext2_unlink(struct inode * dir, struct dentry *dentry)
struct page * page;
int err = -ENOENT;

vfs_dq_init(dir);
dquot_initialize(dir);

de = ext2_find_entry (dir, &dentry->d_name, &page);
if (!de)
Expand Down Expand Up @@ -318,8 +318,8 @@ static int ext2_rename (struct inode * old_dir, struct dentry * old_dentry,
struct ext2_dir_entry_2 * old_de;
int err = -ENOENT;

vfs_dq_init(old_dir);
vfs_dq_init(new_dir);
dquot_initialize(old_dir);
dquot_initialize(new_dir);

old_de = ext2_find_entry (old_dir, &old_dentry->d_name, &old_page);
if (!old_de)
Expand Down
1 change: 1 addition & 0 deletions fs/ext3/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include <linux/time.h>
#include <linux/fs.h>
#include <linux/jbd.h>
#include <linux/quotaops.h>
#include <linux/ext3_fs.h>
#include <linux/ext3_jbd.h>
#include "xattr.h"
Expand Down
4 changes: 2 additions & 2 deletions fs/ext3/ialloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ void ext3_free_inode (handle_t *handle, struct inode * inode)
* Note: we must free any quota before locking the superblock,
* as writing the quota to disk may need the lock as well.
*/
vfs_dq_init(inode);
dquot_initialize(inode);
ext3_xattr_delete_inode(handle, inode);
dquot_free_inode(inode);
dquot_drop(inode);
Expand Down Expand Up @@ -588,7 +588,7 @@ struct inode *ext3_new_inode(handle_t *handle, struct inode * dir, int mode)
sizeof(struct ext3_inode) - EXT3_GOOD_OLD_INODE_SIZE : 0;

ret = inode;
vfs_dq_init(inode);
dquot_initialize(inode);
err = dquot_alloc_inode(inode);
if (err)
goto fail_drop;
Expand Down
6 changes: 3 additions & 3 deletions fs/ext3/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ void ext3_delete_inode (struct inode * inode)
handle_t *handle;

if (!is_bad_inode(inode))
vfs_dq_init(inode);
dquot_initialize(inode);

truncate_inode_pages(&inode->i_data, 0);

Expand Down Expand Up @@ -3152,7 +3152,7 @@ int ext3_setattr(struct dentry *dentry, struct iattr *attr)
return error;

if (ia_valid & ATTR_SIZE)
vfs_dq_init(inode);
dquot_initialize(inode);
if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
(ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid)) {
handle_t *handle;
Expand Down Expand Up @@ -3250,7 +3250,7 @@ static int ext3_writepage_trans_blocks(struct inode *inode)
ret = 2 * (bpp + indirects) + 2;

#ifdef CONFIG_QUOTA
/* We know that structure was already allocated during vfs_dq_init so
/* We know that structure was already allocated during dquot_initialize so
* we will be updating only the data blocks + inodes */
ret += EXT3_MAXQUOTAS_TRANS_BLOCKS(inode->i_sb);
#endif
Expand Down
24 changes: 12 additions & 12 deletions fs/ext3/namei.c
Original file line number Diff line number Diff line change
Expand Up @@ -1696,7 +1696,7 @@ static int ext3_create (struct inode * dir, struct dentry * dentry, int mode,
struct inode * inode;
int err, retries = 0;

vfs_dq_init(dir);
dquot_initialize(dir);

retry:
handle = ext3_journal_start(dir, EXT3_DATA_TRANS_BLOCKS(dir->i_sb) +
Expand Down Expand Up @@ -1732,7 +1732,7 @@ static int ext3_mknod (struct inode * dir, struct dentry *dentry,
if (!new_valid_dev(rdev))
return -EINVAL;

vfs_dq_init(dir);
dquot_initialize(dir);

retry:
handle = ext3_journal_start(dir, EXT3_DATA_TRANS_BLOCKS(dir->i_sb) +
Expand Down Expand Up @@ -1770,7 +1770,7 @@ static int ext3_mkdir(struct inode * dir, struct dentry * dentry, int mode)
if (dir->i_nlink >= EXT3_LINK_MAX)
return -EMLINK;

vfs_dq_init(dir);
dquot_initialize(dir);

retry:
handle = ext3_journal_start(dir, EXT3_DATA_TRANS_BLOCKS(dir->i_sb) +
Expand Down Expand Up @@ -2066,8 +2066,8 @@ static int ext3_rmdir (struct inode * dir, struct dentry *dentry)

/* Initialize quotas before so that eventual writes go in
* separate transaction */
vfs_dq_init(dir);
vfs_dq_init(dentry->d_inode);
dquot_initialize(dir);
dquot_initialize(dentry->d_inode);

handle = ext3_journal_start(dir, EXT3_DELETE_TRANS_BLOCKS(dir->i_sb));
if (IS_ERR(handle))
Expand Down Expand Up @@ -2127,8 +2127,8 @@ static int ext3_unlink(struct inode * dir, struct dentry *dentry)

/* Initialize quotas before so that eventual writes go
* in separate transaction */
vfs_dq_init(dir);
vfs_dq_init(dentry->d_inode);
dquot_initialize(dir);
dquot_initialize(dentry->d_inode);

handle = ext3_journal_start(dir, EXT3_DELETE_TRANS_BLOCKS(dir->i_sb));
if (IS_ERR(handle))
Expand Down Expand Up @@ -2184,7 +2184,7 @@ static int ext3_symlink (struct inode * dir,
if (l > dir->i_sb->s_blocksize)
return -ENAMETOOLONG;

vfs_dq_init(dir);
dquot_initialize(dir);

retry:
handle = ext3_journal_start(dir, EXT3_DATA_TRANS_BLOCKS(dir->i_sb) +
Expand Down Expand Up @@ -2241,7 +2241,7 @@ static int ext3_link (struct dentry * old_dentry,
if (inode->i_nlink >= EXT3_LINK_MAX)
return -EMLINK;

vfs_dq_init(dir);
dquot_initialize(dir);

/*
* Return -ENOENT if we've raced with unlink and i_nlink is 0. Doing
Expand Down Expand Up @@ -2293,15 +2293,15 @@ static int ext3_rename (struct inode * old_dir, struct dentry *old_dentry,
struct ext3_dir_entry_2 * old_de, * new_de;
int retval, flush_file = 0;

vfs_dq_init(old_dir);
vfs_dq_init(new_dir);
dquot_initialize(old_dir);
dquot_initialize(new_dir);

old_bh = new_bh = dir_bh = NULL;

/* Initialize quotas before so that eventual writes go
* in separate transaction */
if (new_dentry->d_inode)
vfs_dq_init(new_dentry->d_inode);
dquot_initialize(new_dentry->d_inode);
handle = ext3_journal_start(old_dir, 2 *
EXT3_DATA_TRANS_BLOCKS(old_dir->i_sb) +
EXT3_INDEX_EXTRA_TRANS_BLOCKS + 2);
Expand Down
5 changes: 2 additions & 3 deletions fs/ext3/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -752,7 +752,6 @@ static ssize_t ext3_quota_write(struct super_block *sb, int type,
const char *data, size_t len, loff_t off);

static const struct dquot_operations ext3_quota_operations = {
.initialize = dquot_initialize,
.write_dquot = ext3_write_dquot,
.acquire_dquot = ext3_acquire_dquot,
.release_dquot = ext3_release_dquot,
Expand Down Expand Up @@ -1480,7 +1479,7 @@ static void ext3_orphan_cleanup (struct super_block * sb,
}

list_add(&EXT3_I(inode)->i_orphan, &EXT3_SB(sb)->s_orphan);
vfs_dq_init(inode);
dquot_initialize(inode);
if (inode->i_nlink) {
printk(KERN_DEBUG
"%s: truncating inode %lu to %Ld bytes\n",
Expand Down Expand Up @@ -2736,7 +2735,7 @@ static int ext3_statfs (struct dentry * dentry, struct kstatfs * buf)
* Process 1 Process 2
* ext3_create() quota_sync()
* journal_start() write_dquot()
* vfs_dq_init() down(dqio_mutex)
* dquot_initialize() down(dqio_mutex)
* down(dqio_mutex) journal_start()
*
*/
Expand Down
1 change: 1 addition & 0 deletions fs/ext4/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include <linux/jbd2.h>
#include <linux/mount.h>
#include <linux/path.h>
#include <linux/quotaops.h>
#include "ext4.h"
#include "ext4_jbd2.h"
#include "xattr.h"
Expand Down
4 changes: 2 additions & 2 deletions fs/ext4/ialloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ void ext4_free_inode(handle_t *handle, struct inode *inode)
* Note: we must free any quota before locking the superblock,
* as writing the quota to disk may need the lock as well.
*/
vfs_dq_init(inode);
dquot_initialize(inode);
ext4_xattr_delete_inode(handle, inode);
dquot_free_inode(inode);
dquot_drop(inode);
Expand Down Expand Up @@ -1034,7 +1034,7 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode,
ei->i_extra_isize = EXT4_SB(sb)->s_want_extra_isize;

ret = inode;
vfs_dq_init(inode);
dquot_initialize(inode);
err = dquot_alloc_inode(inode);
if (err)
goto fail_drop;
Expand Down
4 changes: 2 additions & 2 deletions fs/ext4/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ void ext4_delete_inode(struct inode *inode)
int err;

if (!is_bad_inode(inode))
vfs_dq_init(inode);
dquot_initialize(inode);

if (ext4_should_order_data(inode))
ext4_begin_ordered_truncate(inode, 0);
Expand Down Expand Up @@ -5255,7 +5255,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
return error;

if (ia_valid & ATTR_SIZE)
vfs_dq_init(inode);
dquot_initialize(inode);
if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
(ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid)) {
handle_t *handle;
Expand Down
Loading

0 comments on commit 871a293

Please sign in to comment.