Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 207575
b: refs/heads/master
c: 845a2cc
h: refs/heads/master
i:
  207573: 89ca62c
  207571: 7cfe223
  207567: 4f00bae
v: v3
  • Loading branch information
Al Viro committed Aug 9, 2010
1 parent b51414d commit bc981da
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: bd55597520a2eaa0d71dd7683513a14bfd1bdf5c
refs/heads/master: 845a2cc0507055278e0fa722ed0f8c791b7401dd
13 changes: 10 additions & 3 deletions trunk/fs/reiserfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ int reiserfs_commit_write(struct file *f, struct page *page,
int reiserfs_prepare_write(struct file *f, struct page *page,
unsigned from, unsigned to);

void reiserfs_delete_inode(struct inode *inode)
void reiserfs_evict_inode(struct inode *inode)
{
/* We need blocks for transaction + (user+group) quota update (possibly delete) */
int jbegin_count =
Expand All @@ -35,10 +35,12 @@ void reiserfs_delete_inode(struct inode *inode)
int depth;
int err;

if (!is_bad_inode(inode))
if (!inode->i_nlink && !is_bad_inode(inode))
dquot_initialize(inode);

truncate_inode_pages(&inode->i_data, 0);
if (inode->i_nlink)
goto no_delete;

depth = reiserfs_write_lock_once(inode->i_sb);

Expand Down Expand Up @@ -77,9 +79,14 @@ void reiserfs_delete_inode(struct inode *inode)
;
}
out:
clear_inode(inode); /* note this must go after the journal_end to prevent deadlock */
end_writeback(inode); /* note this must go after the journal_end to prevent deadlock */
dquot_drop(inode);
inode->i_blocks = 0;
reiserfs_write_unlock_once(inode->i_sb, depth);

no_delete:
end_writeback(inode);
dquot_drop(inode);
}

static void _make_cpu_key(struct cpu_key *key, int version, __u32 dirid,
Expand Down
8 changes: 1 addition & 7 deletions trunk/fs/reiserfs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -591,11 +591,6 @@ static void reiserfs_dirty_inode(struct inode *inode)
reiserfs_write_unlock_once(inode->i_sb, lock_depth);
}

static void reiserfs_clear_inode(struct inode *inode)
{
dquot_drop(inode);
}

#ifdef CONFIG_QUOTA
static ssize_t reiserfs_quota_write(struct super_block *, int, const char *,
size_t, loff_t);
Expand All @@ -608,8 +603,7 @@ static const struct super_operations reiserfs_sops = {
.destroy_inode = reiserfs_destroy_inode,
.write_inode = reiserfs_write_inode,
.dirty_inode = reiserfs_dirty_inode,
.clear_inode = reiserfs_clear_inode,
.delete_inode = reiserfs_delete_inode,
.evict_inode = reiserfs_evict_inode,
.put_super = reiserfs_put_super,
.write_super = reiserfs_write_super,
.sync_fs = reiserfs_sync_fs,
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/linux/reiserfs_fs.h
Original file line number Diff line number Diff line change
Expand Up @@ -2033,7 +2033,7 @@ void reiserfs_read_locked_inode(struct inode *inode,
struct reiserfs_iget_args *args);
int reiserfs_find_actor(struct inode *inode, void *p);
int reiserfs_init_locked_inode(struct inode *inode, void *p);
void reiserfs_delete_inode(struct inode *inode);
void reiserfs_evict_inode(struct inode *inode);
int reiserfs_write_inode(struct inode *inode, struct writeback_control *wbc);
int reiserfs_get_block(struct inode *inode, sector_t block,
struct buffer_head *bh_result, int create);
Expand Down

0 comments on commit bc981da

Please sign in to comment.