forked from Minki/linux
ecryptfs: add bdi backing to mount session
This ensures that dirty data gets flushed properly. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
5163d90076
commit
9df9c8b930
@ -35,6 +35,7 @@
|
||||
#include <linux/scatterlist.h>
|
||||
#include <linux/hash.h>
|
||||
#include <linux/nsproxy.h>
|
||||
#include <linux/backing-dev.h>
|
||||
|
||||
/* Version verification for shared data structures w/ userspace */
|
||||
#define ECRYPTFS_VERSION_MAJOR 0x00
|
||||
@ -393,6 +394,7 @@ struct ecryptfs_mount_crypt_stat {
|
||||
struct ecryptfs_sb_info {
|
||||
struct super_block *wsi_sb;
|
||||
struct ecryptfs_mount_crypt_stat mount_crypt_stat;
|
||||
struct backing_dev_info bdi;
|
||||
};
|
||||
|
||||
/* file private data. */
|
||||
|
@ -497,17 +497,25 @@ struct kmem_cache *ecryptfs_sb_info_cache;
|
||||
static int
|
||||
ecryptfs_fill_super(struct super_block *sb, void *raw_data, int silent)
|
||||
{
|
||||
struct ecryptfs_sb_info *esi;
|
||||
int rc = 0;
|
||||
|
||||
/* Released in ecryptfs_put_super() */
|
||||
ecryptfs_set_superblock_private(sb,
|
||||
kmem_cache_zalloc(ecryptfs_sb_info_cache,
|
||||
GFP_KERNEL));
|
||||
if (!ecryptfs_superblock_to_private(sb)) {
|
||||
esi = ecryptfs_superblock_to_private(sb);
|
||||
if (!esi) {
|
||||
ecryptfs_printk(KERN_WARNING, "Out of memory\n");
|
||||
rc = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
rc = bdi_setup_and_register(&esi->bdi, "ecryptfs", BDI_CAP_MAP_COPY);
|
||||
if (rc)
|
||||
goto out;
|
||||
|
||||
sb->s_bdi = &esi->bdi;
|
||||
sb->s_op = &ecryptfs_sops;
|
||||
/* Released through deactivate_super(sb) from get_sb_nodev */
|
||||
sb->s_root = d_alloc(NULL, &(const struct qstr) {
|
||||
|
@ -122,6 +122,7 @@ static void ecryptfs_put_super(struct super_block *sb)
|
||||
lock_kernel();
|
||||
|
||||
ecryptfs_destroy_mount_crypt_stat(&sb_info->mount_crypt_stat);
|
||||
bdi_destroy(&sb_info->bdi);
|
||||
kmem_cache_free(ecryptfs_sb_info_cache, sb_info);
|
||||
ecryptfs_set_superblock_private(sb, NULL);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user