dquot: cleanup space allocation / freeing routines
Get rid of the alloc_space, free_space, reserve_space, claim_space and release_rsv 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. Move shared logic into the common __dquot_alloc_space, dquot_claim_space_nodirty and __dquot_free_space low-level methods, and rationalize the wrappers around it to move as much as possible code into the common block for CONFIG_QUOTA vs not. Also rename all these helpers to be named dquot_* instead of vfs_dq_*. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
@@ -260,14 +260,14 @@ static int ea_write(struct inode *ip, struct jfs_ea_list *ealist, int size,
|
||||
nblocks = (size + (sb->s_blocksize - 1)) >> sb->s_blocksize_bits;
|
||||
|
||||
/* Allocate new blocks to quota. */
|
||||
if (vfs_dq_alloc_block(ip, nblocks)) {
|
||||
return -EDQUOT;
|
||||
}
|
||||
rc = dquot_alloc_block(ip, nblocks);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = dbAlloc(ip, INOHINT(ip), nblocks, &blkno);
|
||||
if (rc) {
|
||||
/*Rollback quota allocation. */
|
||||
vfs_dq_free_block(ip, nblocks);
|
||||
dquot_free_block(ip, nblocks);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -332,7 +332,7 @@ static int ea_write(struct inode *ip, struct jfs_ea_list *ealist, int size,
|
||||
|
||||
failed:
|
||||
/* Rollback quota allocation. */
|
||||
vfs_dq_free_block(ip, nblocks);
|
||||
dquot_free_block(ip, nblocks);
|
||||
|
||||
dbFree(ip, blkno, nblocks);
|
||||
return rc;
|
||||
@@ -538,7 +538,8 @@ static int ea_get(struct inode *inode, struct ea_buffer *ea_buf, int min_size)
|
||||
|
||||
if (blocks_needed > current_blocks) {
|
||||
/* Allocate new blocks to quota. */
|
||||
if (vfs_dq_alloc_block(inode, blocks_needed))
|
||||
rc = dquot_alloc_block(inode, blocks_needed);
|
||||
if (rc)
|
||||
return -EDQUOT;
|
||||
|
||||
quota_allocation = blocks_needed;
|
||||
@@ -602,7 +603,7 @@ static int ea_get(struct inode *inode, struct ea_buffer *ea_buf, int min_size)
|
||||
clean_up:
|
||||
/* Rollback quota allocation */
|
||||
if (quota_allocation)
|
||||
vfs_dq_free_block(inode, quota_allocation);
|
||||
dquot_free_block(inode, quota_allocation);
|
||||
|
||||
return (rc);
|
||||
}
|
||||
@@ -677,7 +678,7 @@ static int ea_put(tid_t tid, struct inode *inode, struct ea_buffer *ea_buf,
|
||||
|
||||
/* If old blocks exist, they must be removed from quota allocation. */
|
||||
if (old_blocks)
|
||||
vfs_dq_free_block(inode, old_blocks);
|
||||
dquot_free_block(inode, old_blocks);
|
||||
|
||||
inode->i_ctime = CURRENT_TIME;
|
||||
|
||||
|
Reference in New Issue
Block a user