mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 20:24:12 +08:00
fs/adfs: super: fix inode dropping
When we have write support enabled, we must not drop inodes before they have been written back, otherwise we lose updates to the filesystem on umount. Keep the inodes around unless we are built in read-only mode, or we are mounted read-only. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
a464152f2e
commit
f352064275
@ -231,6 +231,12 @@ static void adfs_free_inode(struct inode *inode)
|
||||
kmem_cache_free(adfs_inode_cachep, ADFS_I(inode));
|
||||
}
|
||||
|
||||
static int adfs_drop_inode(struct inode *inode)
|
||||
{
|
||||
/* always drop inodes if we are read-only */
|
||||
return !IS_ENABLED(CONFIG_ADFS_FS_RW) || IS_RDONLY(inode);
|
||||
}
|
||||
|
||||
static void init_once(void *foo)
|
||||
{
|
||||
struct adfs_inode_info *ei = (struct adfs_inode_info *) foo;
|
||||
@ -263,7 +269,7 @@ static void destroy_inodecache(void)
|
||||
static const struct super_operations adfs_sops = {
|
||||
.alloc_inode = adfs_alloc_inode,
|
||||
.free_inode = adfs_free_inode,
|
||||
.drop_inode = generic_delete_inode,
|
||||
.drop_inode = adfs_drop_inode,
|
||||
.write_inode = adfs_write_inode,
|
||||
.put_super = adfs_put_super,
|
||||
.statfs = adfs_statfs,
|
||||
|
Loading…
Reference in New Issue
Block a user