Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 131
b: refs/heads/master
c: e072c6f
h: refs/heads/master
i:
  129: 173fff5
  127: 638136b
v: v3
  • Loading branch information
Bernard Blackham authored and Linus Torvalds committed Apr 16, 2005
1 parent daf9547 commit ddd6338
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 4 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: 614a7d6a76b7fb37bb399047eb3ccf86cafbf60d
refs/heads/master: e072c6f2af57fb8ad9e0f29bfff3f79edf7bdd55
1 change: 1 addition & 0 deletions trunk/fs/ext2/ext2.h
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ extern unsigned long ext2_count_free (struct buffer_head *, unsigned);
/* inode.c */
extern void ext2_read_inode (struct inode *);
extern int ext2_write_inode (struct inode *, int);
extern void ext2_put_inode (struct inode *);
extern void ext2_delete_inode (struct inode *);
extern int ext2_sync_inode (struct inode *);
extern void ext2_discard_prealloc (struct inode *);
Expand Down
13 changes: 13 additions & 0 deletions trunk/fs/ext2/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,19 @@ static inline int ext2_inode_is_fast_symlink(struct inode *inode)
inode->i_blocks - ea_blocks == 0);
}

/*
* Called at each iput().
*
* The inode may be "bad" if ext2_read_inode() saw an error from
* ext2_get_inode(), so we need to check that to avoid freeing random disk
* blocks.
*/
void ext2_put_inode(struct inode *inode)
{
if (!is_bad_inode(inode))
ext2_discard_prealloc(inode);
}

/*
* Called at the last iput() if i_nlink is zero.
*/
Expand Down
4 changes: 1 addition & 3 deletions trunk/fs/ext2/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,11 +198,8 @@ static void ext2_clear_inode(struct inode *inode)
ei->i_default_acl = EXT2_ACL_NOT_CACHED;
}
#endif
if (!is_bad_inode(inode))
ext2_discard_prealloc(inode);
}


#ifdef CONFIG_QUOTA
static ssize_t ext2_quota_read(struct super_block *sb, int type, char *data, size_t len, loff_t off);
static ssize_t ext2_quota_write(struct super_block *sb, int type, const char *data, size_t len, loff_t off);
Expand All @@ -213,6 +210,7 @@ static struct super_operations ext2_sops = {
.destroy_inode = ext2_destroy_inode,
.read_inode = ext2_read_inode,
.write_inode = ext2_write_inode,
.put_inode = ext2_put_inode,
.delete_inode = ext2_delete_inode,
.put_super = ext2_put_super,
.write_super = ext2_write_super,
Expand Down

0 comments on commit ddd6338

Please sign in to comment.