diff options
author | Dmitry Torokhov <dtor@insightbb.com> | 2007-05-01 00:24:54 -0400 |
---|---|---|
committer | Dmitry Torokhov <dtor@insightbb.com> | 2007-05-01 00:24:54 -0400 |
commit | bc95f3669f5e6f63cf0b84fe4922c3c6dd4aa775 (patch) | |
tree | 427fcf2a7287c16d4b5aa6cbf494d59579a6a8b1 /fs/affs | |
parent | 3d29cdff999c37b3876082278a8134a0642a02cd (diff) | |
parent | dc87c3985e9b442c60994308a96f887579addc39 (diff) | |
download | kernel-crypto-bc95f3669f5e6f63cf0b84fe4922c3c6dd4aa775.tar.gz kernel-crypto-bc95f3669f5e6f63cf0b84fe4922c3c6dd4aa775.tar.xz kernel-crypto-bc95f3669f5e6f63cf0b84fe4922c3c6dd4aa775.zip |
Merge master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts:
drivers/usb/input/Makefile
drivers/usb/input/gtco.c
Diffstat (limited to 'fs/affs')
-rw-r--r-- | fs/affs/affs.h | 1 | ||||
-rw-r--r-- | fs/affs/inode.c | 17 | ||||
-rw-r--r-- | fs/affs/super.c | 1 |
3 files changed, 13 insertions, 6 deletions
diff --git a/fs/affs/affs.h b/fs/affs/affs.h index 7db2d287e9f..232c6949368 100644 --- a/fs/affs/affs.h +++ b/fs/affs/affs.h @@ -171,6 +171,7 @@ extern unsigned long affs_parent_ino(struct inode *dir); extern struct inode *affs_new_inode(struct inode *dir); extern int affs_notify_change(struct dentry *dentry, struct iattr *attr); extern void affs_put_inode(struct inode *inode); +extern void affs_drop_inode(struct inode *inode); extern void affs_delete_inode(struct inode *inode); extern void affs_clear_inode(struct inode *inode); extern void affs_read_inode(struct inode *inode); diff --git a/fs/affs/inode.c b/fs/affs/inode.c index fce6848a464..c5b9d73c084 100644 --- a/fs/affs/inode.c +++ b/fs/affs/inode.c @@ -243,12 +243,17 @@ affs_put_inode(struct inode *inode) { pr_debug("AFFS: put_inode(ino=%lu, nlink=%u)\n", inode->i_ino, inode->i_nlink); affs_free_prealloc(inode); - if (atomic_read(&inode->i_count) == 1) { - mutex_lock(&inode->i_mutex); - if (inode->i_size != AFFS_I(inode)->mmu_private) - affs_truncate(inode); - mutex_unlock(&inode->i_mutex); - } +} + +void +affs_drop_inode(struct inode *inode) +{ + mutex_lock(&inode->i_mutex); + if (inode->i_size != AFFS_I(inode)->mmu_private) + affs_truncate(inode); + mutex_unlock(&inode->i_mutex); + + generic_drop_inode(inode); } void diff --git a/fs/affs/super.c b/fs/affs/super.c index a324045d855..c3986a1911b 100644 --- a/fs/affs/super.c +++ b/fs/affs/super.c @@ -118,6 +118,7 @@ static const struct super_operations affs_sops = { .read_inode = affs_read_inode, .write_inode = affs_write_inode, .put_inode = affs_put_inode, + .drop_inode = affs_drop_inode, .delete_inode = affs_delete_inode, .clear_inode = affs_clear_inode, .put_super = affs_put_super, |