git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
eCryptfs: don't encrypt file key with filename key
[safe/jmp/linux-2.6]
/
fs
/
ext2
/
file.c
diff --git
a/fs/ext2/file.c
b/fs/ext2/file.c
index
072a190
..
45ed071
100644
(file)
--- a/
fs/ext2/file.c
+++ b/
fs/ext2/file.c
@@
-24,14
+24,17
@@
#include "acl.h"
/*
#include "acl.h"
/*
- * Called when
an inode is released. Note that this is different
- * f
rom ext2_open_file: open gets called at every open, but release
- *
gets called only when /all/ the files are closed
.
+ * Called when
filp is released. This happens when all file descriptors
+ * f
or a single struct file are closed. Note that different open() calls
+ *
for the same file yield different struct file structures
.
*/
static int ext2_release_file (struct inode * inode, struct file * filp)
{
*/
static int ext2_release_file (struct inode * inode, struct file * filp)
{
- if (filp->f_mode & FMODE_WRITE)
- ext2_discard_prealloc (inode);
+ if (filp->f_mode & FMODE_WRITE) {
+ mutex_lock(&EXT2_I(inode)->truncate_mutex);
+ ext2_discard_reservation(inode);
+ mutex_unlock(&EXT2_I(inode)->truncate_mutex);
+ }
return 0;
}
return 0;
}
@@
-45,7
+48,7
@@
const struct file_operations ext2_file_operations = {
.write = do_sync_write,
.aio_read = generic_file_aio_read,
.aio_write = generic_file_aio_write,
.write = do_sync_write,
.aio_read = generic_file_aio_read,
.aio_write = generic_file_aio_write,
- .
ioctl
= ext2_ioctl,
+ .
unlocked_ioctl
= ext2_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl = ext2_compat_ioctl,
#endif
#ifdef CONFIG_COMPAT
.compat_ioctl = ext2_compat_ioctl,
#endif
@@
-62,7
+65,7
@@
const struct file_operations ext2_xip_file_operations = {
.llseek = generic_file_llseek,
.read = xip_file_read,
.write = xip_file_write,
.llseek = generic_file_llseek,
.read = xip_file_read,
.write = xip_file_write,
- .
ioctl
= ext2_ioctl,
+ .
unlocked_ioctl
= ext2_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl = ext2_compat_ioctl,
#endif
#ifdef CONFIG_COMPAT
.compat_ioctl = ext2_compat_ioctl,
#endif
@@
-70,7
+73,6
@@
const struct file_operations ext2_xip_file_operations = {
.open = generic_file_open,
.release = ext2_release_file,
.fsync = ext2_sync_file,
.open = generic_file_open,
.release = ext2_release_file,
.fsync = ext2_sync_file,
- .sendfile = xip_file_sendfile,
};
#endif
};
#endif
@@
-84,4
+86,5
@@
const struct inode_operations ext2_file_inode_operations = {
#endif
.setattr = ext2_setattr,
.permission = ext2_permission,
#endif
.setattr = ext2_setattr,
.permission = ext2_permission,
+ .fiemap = ext2_fiemap,
};
};