Loading fs/ntfs/aops.c +27 −12 Original line number Original line Diff line number Diff line /** /** * 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 Loading Loading @@ -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 */ .migratepage = buffer_migrate_page, .is_partially_uptodate = block_is_partially_uptodate, .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 */ #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, }; }; Loading @@ -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, }; }; Loading fs/ntfs/inode.c +11 −8 Original line number Original line Diff line number Diff line /** /** * 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 Loading Loading @@ -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); Loading Loading @@ -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 Loading Loading @@ -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 Loading fs/ntfs/ntfs.h +4 −4 Original line number Original line Diff line number Diff line /* /* * 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 Loading Loading @@ -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 Loading
fs/ntfs/aops.c +27 −12 Original line number Original line Diff line number Diff line /** /** * 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 Loading Loading @@ -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 */ .migratepage = buffer_migrate_page, .is_partially_uptodate = block_is_partially_uptodate, .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 */ #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, }; }; Loading @@ -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, }; }; Loading
fs/ntfs/inode.c +11 −8 Original line number Original line Diff line number Diff line /** /** * 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 Loading Loading @@ -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); Loading Loading @@ -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 Loading Loading @@ -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 Loading
fs/ntfs/ntfs.h +4 −4 Original line number Original line Diff line number Diff line /* /* * 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 Loading Loading @@ -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