NTFS: Split ntfs_aops into ntfs_normal_aops and ntfs_compressed_aops
in preparation for them diverging. Signed-off-by: Anton Altaparmakov <anton@tuxera.com>
This commit is contained in:
parent
0429fbc0bd
commit
ce1bafa094
@ -1,8 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* aops.c - NTFS kernel address space operations and page cache handling.
|
* aops.c - NTFS kernel address space operations and page cache handling.
|
||||||
* Part of the Linux-NTFS project.
|
|
||||||
*
|
*
|
||||||
* Copyright (c) 2001-2007 Anton Altaparmakov
|
* Copyright (c) 2001-2014 Anton Altaparmakov and Tuxera Inc.
|
||||||
* Copyright (c) 2002 Richard Russon
|
* Copyright (c) 2002 Richard Russon
|
||||||
*
|
*
|
||||||
* This program/include file is free software; you can redistribute it and/or
|
* This program/include file is free software; you can redistribute it and/or
|
||||||
@ -1539,16 +1538,33 @@ static int ntfs_writepage(struct page *page, struct writeback_control *wbc)
|
|||||||
#endif /* NTFS_RW */
|
#endif /* NTFS_RW */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ntfs_aops - general address space operations for inodes and attributes
|
* ntfs_normal_aops - address space operations for normal inodes and attributes
|
||||||
|
*
|
||||||
|
* Note these are not used for compressed or mst protected inodes and
|
||||||
|
* attributes.
|
||||||
*/
|
*/
|
||||||
const struct address_space_operations ntfs_aops = {
|
const struct address_space_operations ntfs_normal_aops = {
|
||||||
.readpage = ntfs_readpage, /* Fill page with data. */
|
.readpage = ntfs_readpage,
|
||||||
#ifdef NTFS_RW
|
#ifdef NTFS_RW
|
||||||
.writepage = ntfs_writepage, /* Write dirty page to disk. */
|
.writepage = ntfs_writepage,
|
||||||
|
.set_page_dirty = __set_page_dirty_buffers,
|
||||||
#endif /* NTFS_RW */
|
#endif /* NTFS_RW */
|
||||||
.migratepage = buffer_migrate_page, /* Move a page cache page from
|
.migratepage = buffer_migrate_page,
|
||||||
one physical page to an
|
.is_partially_uptodate = block_is_partially_uptodate,
|
||||||
other. */
|
.error_remove_page = generic_error_remove_page,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ntfs_compressed_aops - address space operations for compressed inodes
|
||||||
|
*/
|
||||||
|
const struct address_space_operations ntfs_compressed_aops = {
|
||||||
|
.readpage = ntfs_readpage,
|
||||||
|
#ifdef NTFS_RW
|
||||||
|
.writepage = ntfs_writepage,
|
||||||
|
.set_page_dirty = __set_page_dirty_buffers,
|
||||||
|
#endif /* NTFS_RW */
|
||||||
|
.migratepage = buffer_migrate_page,
|
||||||
|
.is_partially_uptodate = block_is_partially_uptodate,
|
||||||
.error_remove_page = generic_error_remove_page,
|
.error_remove_page = generic_error_remove_page,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1564,9 +1580,8 @@ const struct address_space_operations ntfs_mst_aops = {
|
|||||||
without touching the buffers
|
without touching the buffers
|
||||||
belonging to the page. */
|
belonging to the page. */
|
||||||
#endif /* NTFS_RW */
|
#endif /* NTFS_RW */
|
||||||
.migratepage = buffer_migrate_page, /* Move a page cache page from
|
.migratepage = buffer_migrate_page,
|
||||||
one physical page to an
|
.is_partially_uptodate = block_is_partially_uptodate,
|
||||||
other. */
|
|
||||||
.error_remove_page = generic_error_remove_page,
|
.error_remove_page = generic_error_remove_page,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* inode.c - NTFS kernel inode handling. Part of the Linux-NTFS project.
|
* inode.c - NTFS kernel inode handling.
|
||||||
*
|
*
|
||||||
* Copyright (c) 2001-2007 Anton Altaparmakov
|
* Copyright (c) 2001-2014 Anton Altaparmakov and Tuxera Inc.
|
||||||
*
|
*
|
||||||
* This program/include file is free software; you can redistribute it and/or
|
* This program/include file is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License as published
|
* modify it under the terms of the GNU General Public License as published
|
||||||
@ -1012,6 +1012,7 @@ static int ntfs_read_locked_inode(struct inode *vi)
|
|||||||
/* Setup the operations for this inode. */
|
/* Setup the operations for this inode. */
|
||||||
vi->i_op = &ntfs_dir_inode_ops;
|
vi->i_op = &ntfs_dir_inode_ops;
|
||||||
vi->i_fop = &ntfs_dir_ops;
|
vi->i_fop = &ntfs_dir_ops;
|
||||||
|
vi->i_mapping->a_ops = &ntfs_mst_aops;
|
||||||
} else {
|
} else {
|
||||||
/* It is a file. */
|
/* It is a file. */
|
||||||
ntfs_attr_reinit_search_ctx(ctx);
|
ntfs_attr_reinit_search_ctx(ctx);
|
||||||
@ -1160,11 +1161,12 @@ static int ntfs_read_locked_inode(struct inode *vi)
|
|||||||
/* Setup the operations for this inode. */
|
/* Setup the operations for this inode. */
|
||||||
vi->i_op = &ntfs_file_inode_ops;
|
vi->i_op = &ntfs_file_inode_ops;
|
||||||
vi->i_fop = &ntfs_file_ops;
|
vi->i_fop = &ntfs_file_ops;
|
||||||
}
|
vi->i_mapping->a_ops = &ntfs_normal_aops;
|
||||||
if (NInoMstProtected(ni))
|
if (NInoMstProtected(ni))
|
||||||
vi->i_mapping->a_ops = &ntfs_mst_aops;
|
vi->i_mapping->a_ops = &ntfs_mst_aops;
|
||||||
else
|
else if (NInoCompressed(ni))
|
||||||
vi->i_mapping->a_ops = &ntfs_aops;
|
vi->i_mapping->a_ops = &ntfs_compressed_aops;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* The number of 512-byte blocks used on disk (for stat). This is in so
|
* The number of 512-byte blocks used on disk (for stat). This is in so
|
||||||
* far inaccurate as it doesn't account for any named streams or other
|
* far inaccurate as it doesn't account for any named streams or other
|
||||||
@ -1414,10 +1416,11 @@ static int ntfs_read_locked_attr_inode(struct inode *base_vi, struct inode *vi)
|
|||||||
ni->allocated_size = sle64_to_cpu(
|
ni->allocated_size = sle64_to_cpu(
|
||||||
a->data.non_resident.allocated_size);
|
a->data.non_resident.allocated_size);
|
||||||
}
|
}
|
||||||
|
vi->i_mapping->a_ops = &ntfs_normal_aops;
|
||||||
if (NInoMstProtected(ni))
|
if (NInoMstProtected(ni))
|
||||||
vi->i_mapping->a_ops = &ntfs_mst_aops;
|
vi->i_mapping->a_ops = &ntfs_mst_aops;
|
||||||
else
|
else if (NInoCompressed(ni))
|
||||||
vi->i_mapping->a_ops = &ntfs_aops;
|
vi->i_mapping->a_ops = &ntfs_compressed_aops;
|
||||||
if ((NInoCompressed(ni) || NInoSparse(ni)) && ni->type != AT_INDEX_ROOT)
|
if ((NInoCompressed(ni) || NInoSparse(ni)) && ni->type != AT_INDEX_ROOT)
|
||||||
vi->i_blocks = ni->itype.compressed.size >> 9;
|
vi->i_blocks = ni->itype.compressed.size >> 9;
|
||||||
else
|
else
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* ntfs.h - Defines for NTFS Linux kernel driver. Part of the Linux-NTFS
|
* ntfs.h - Defines for NTFS Linux kernel driver.
|
||||||
* project.
|
|
||||||
*
|
*
|
||||||
* Copyright (c) 2001-2005 Anton Altaparmakov
|
* Copyright (c) 2001-2014 Anton Altaparmakov and Tuxera Inc.
|
||||||
* Copyright (C) 2002 Richard Russon
|
* Copyright (C) 2002 Richard Russon
|
||||||
*
|
*
|
||||||
* This program/include file is free software; you can redistribute it and/or
|
* This program/include file is free software; you can redistribute it and/or
|
||||||
@ -57,7 +56,8 @@ extern struct kmem_cache *ntfs_attr_ctx_cache;
|
|||||||
extern struct kmem_cache *ntfs_index_ctx_cache;
|
extern struct kmem_cache *ntfs_index_ctx_cache;
|
||||||
|
|
||||||
/* The various operations structs defined throughout the driver files. */
|
/* The various operations structs defined throughout the driver files. */
|
||||||
extern const struct address_space_operations ntfs_aops;
|
extern const struct address_space_operations ntfs_normal_aops;
|
||||||
|
extern const struct address_space_operations ntfs_compressed_aops;
|
||||||
extern const struct address_space_operations ntfs_mst_aops;
|
extern const struct address_space_operations ntfs_mst_aops;
|
||||||
|
|
||||||
extern const struct file_operations ntfs_file_ops;
|
extern const struct file_operations ntfs_file_ops;
|
||||||
|
Loading…
Reference in New Issue
Block a user