Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 63936dda authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jan Kara
Browse files

dquot: cleanup inode allocation / freeing routines



Get rid of the alloc_inode and free_inode dquot operations - they are
always called from the filesystem and if a filesystem really needs
their own (which none currently does) it can just call into it's
own routine directly.

Also get rid of the vfs_dq_alloc/vfs_dq_free wrappers and always
call the lowlevel dquot_alloc_inode / dqout_free_inode routines
directly, which now lose the number argument which is always 1.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 5dd4056d
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -462,8 +462,6 @@ in sys_read() and friends.
prototypes:
	int (*initialize) (struct inode *, int);
	int (*drop) (struct inode *);
	int (*alloc_inode) (const struct inode *, unsigned long);
	int (*free_inode) (const struct inode *, unsigned long);
	int (*transfer) (struct inode *, struct iattr *);
	int (*write_dquot) (struct dquot *);
	int (*acquire_dquot) (struct dquot *);
@@ -479,8 +477,6 @@ What filesystem should expect from the generic quota functions:
		FS recursion	Held locks when called
initialize:	yes		maybe dqonoff_sem
drop:		yes		-
alloc_inode:	->mark_dirty()	-
free_inode:	->mark_dirty()	-
transfer:	yes		-
write_dquot:	yes		dqonoff_sem or dqptr_sem
acquire_dquot:	yes		dqonoff_sem or dqptr_sem
@@ -491,10 +487,6 @@ write_info: yes dqonoff_sem
FS recursion means calling ->quota_read() and ->quota_write() from superblock
operations.

->alloc_inode(), ->free_inode() are called
only directly by the filesystem and do not call any fs functions only
the ->mark_dirty() operation.

More details about quota locking can be found in fs/dquot.c.

--------------------------- vm_operations_struct -----------------------------
+5 −5
Original line number Diff line number Diff line
@@ -121,7 +121,7 @@ void ext2_free_inode (struct inode * inode)
	if (!is_bad_inode(inode)) {
		/* Quota is already initialized in iput() */
		ext2_xattr_delete_inode(inode);
		vfs_dq_free_inode(inode);
		dquot_free_inode(inode);
		vfs_dq_drop(inode);
	}

@@ -586,10 +586,10 @@ struct inode *ext2_new_inode(struct inode *dir, int mode)
		goto fail_drop;
	}

	if (vfs_dq_alloc_inode(inode)) {
		err = -EDQUOT;
	vfs_dq_init(inode);
	err = dquot_alloc_inode(inode);
	if (err)
		goto fail_drop;
	}

	err = ext2_init_acl(inode, dir);
	if (err)
@@ -605,7 +605,7 @@ struct inode *ext2_new_inode(struct inode *dir, int mode)
	return inode;

fail_free_drop:
	vfs_dq_free_inode(inode);
	dquot_free_inode(inode);

fail_drop:
	vfs_dq_drop(inode);
+5 −5
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ void ext3_free_inode (handle_t *handle, struct inode * inode)
	 */
	vfs_dq_init(inode);
	ext3_xattr_delete_inode(handle, inode);
	vfs_dq_free_inode(inode);
	dquot_free_inode(inode);
	vfs_dq_drop(inode);

	is_directory = S_ISDIR(inode->i_mode);
@@ -588,10 +588,10 @@ 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;
	if (vfs_dq_alloc_inode(inode)) {
		err = -EDQUOT;
	vfs_dq_init(inode);
	err = dquot_alloc_inode(inode);
	if (err)
		goto fail_drop;
	}

	err = ext3_init_acl(handle, inode, dir);
	if (err)
@@ -619,7 +619,7 @@ struct inode *ext3_new_inode(handle_t *handle, struct inode * dir, int mode)
	return ret;

fail_free_drop:
	vfs_dq_free_inode(inode);
	dquot_free_inode(inode);

fail_drop:
	vfs_dq_drop(inode);
+0 −2
Original line number Diff line number Diff line
@@ -752,8 +752,6 @@ static ssize_t ext3_quota_write(struct super_block *sb, int type,
static const struct dquot_operations ext3_quota_operations = {
	.initialize	= dquot_initialize,
	.drop		= dquot_drop,
	.alloc_inode	= dquot_alloc_inode,
	.free_inode	= dquot_free_inode,
	.transfer	= dquot_transfer,
	.write_dquot	= ext3_write_dquot,
	.acquire_dquot	= ext3_acquire_dquot,
+5 −5
Original line number Diff line number Diff line
@@ -219,7 +219,7 @@ void ext4_free_inode(handle_t *handle, struct inode *inode)
	 */
	vfs_dq_init(inode);
	ext4_xattr_delete_inode(handle, inode);
	vfs_dq_free_inode(inode);
	dquot_free_inode(inode);
	vfs_dq_drop(inode);

	is_directory = S_ISDIR(inode->i_mode);
@@ -1034,10 +1034,10 @@ 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;
	if (vfs_dq_alloc_inode(inode)) {
		err = -EDQUOT;
	vfs_dq_init(inode);
	err = dquot_alloc_inode(inode);
	if (err)
		goto fail_drop;
	}

	err = ext4_init_acl(handle, inode, dir);
	if (err)
@@ -1074,7 +1074,7 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode,
	return ret;

fail_free_drop:
	vfs_dq_free_inode(inode);
	dquot_free_inode(inode);

fail_drop:
	vfs_dq_drop(inode);
Loading