ext2_vfsops.c (252890) | ext2_vfsops.c (254260) |
---|---|
1/*- 2 * modified for EXT2FS support in Lites 1.1 3 * 4 * Aug 1995, Godmar Back (gback@cs.utah.edu) 5 * University of Utah, Department of Computer Science 6 */ 7/*- 8 * Copyright (c) 1989, 1991, 1993, 1994 --- 19 unchanged lines hidden (view full) --- 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * 35 * @(#)ffs_vfsops.c 8.8 (Berkeley) 4/18/94 | 1/*- 2 * modified for EXT2FS support in Lites 1.1 3 * 4 * Aug 1995, Godmar Back (gback@cs.utah.edu) 5 * University of Utah, Department of Computer Science 6 */ 7/*- 8 * Copyright (c) 1989, 1991, 1993, 1994 --- 19 unchanged lines hidden (view full) --- 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * 35 * @(#)ffs_vfsops.c 8.8 (Berkeley) 4/18/94 |
36 * $FreeBSD: head/sys/fs/ext2fs/ext2_vfsops.c 252890 2013-07-06 18:28:06Z pfg $ | 36 * $FreeBSD: head/sys/fs/ext2fs/ext2_vfsops.c 254260 2013-08-12 21:34:48Z pfg $ |
37 */ 38 39#include <sys/param.h> 40#include <sys/systm.h> 41#include <sys/namei.h> 42#include <sys/priv.h> 43#include <sys/proc.h> 44#include <sys/kernel.h> --- 347 unchanged lines hidden (view full) --- 392 fs->e2fs_total_dir = 0; 393 for (i=0; i < fs->e2fs_gcount; i++){ 394 fs->e2fs_total_dir += fs->e2fs_gd[i].ext2bgd_ndirs; 395 fs->e2fs_contigdirs[i] = 0; 396 } 397 if (es->e2fs_rev == E2FS_REV0 || 398 !EXT2_HAS_RO_COMPAT_FEATURE(fs, EXT2F_ROCOMPAT_LARGEFILE)) 399 fs->e2fs_maxfilesize = 0x7fffffff; | 37 */ 38 39#include <sys/param.h> 40#include <sys/systm.h> 41#include <sys/namei.h> 42#include <sys/priv.h> 43#include <sys/proc.h> 44#include <sys/kernel.h> --- 347 unchanged lines hidden (view full) --- 392 fs->e2fs_total_dir = 0; 393 for (i=0; i < fs->e2fs_gcount; i++){ 394 fs->e2fs_total_dir += fs->e2fs_gd[i].ext2bgd_ndirs; 395 fs->e2fs_contigdirs[i] = 0; 396 } 397 if (es->e2fs_rev == E2FS_REV0 || 398 !EXT2_HAS_RO_COMPAT_FEATURE(fs, EXT2F_ROCOMPAT_LARGEFILE)) 399 fs->e2fs_maxfilesize = 0x7fffffff; |
400 else 401 fs->e2fs_maxfilesize = 0x7fffffffffffffff; 402 | 400 else { 401 fs->e2fs_maxfilesize = 0xffffffffffff; 402 if (EXT2_HAS_RO_COMPAT_FEATURE(fs, EXT2F_ROCOMPAT_HUGE_FILE)) 403 fs->e2fs_maxfilesize = 0x7fffffffffffffff; 404 } |
403 if (es->e4fs_flags & E2FS_UNSIGNED_HASH) { 404 fs->e2fs_uhash = 3; 405 } else if ((es->e4fs_flags & E2FS_SIGNED_HASH) == 0) { 406#ifdef __CHAR_UNSIGNED__ 407 es->e4fs_flags |= E2FS_UNSIGNED_HASH; 408 fs->e2fs_uhash = 3; 409#else 410 es->e4fs_flags |= E2FS_SIGNED_HASH; --- 545 unchanged lines hidden (view full) --- 956 ip->i_block_group = ino_to_cg(fs, ino); 957 ip->i_next_alloc_block = 0; 958 ip->i_next_alloc_goal = 0; 959 960 /* 961 * Now we want to make sure that block pointers for unused 962 * blocks are zeroed out - ext2_balloc depends on this 963 * although for regular files and directories only | 405 if (es->e4fs_flags & E2FS_UNSIGNED_HASH) { 406 fs->e2fs_uhash = 3; 407 } else if ((es->e4fs_flags & E2FS_SIGNED_HASH) == 0) { 408#ifdef __CHAR_UNSIGNED__ 409 es->e4fs_flags |= E2FS_UNSIGNED_HASH; 410 fs->e2fs_uhash = 3; 411#else 412 es->e4fs_flags |= E2FS_SIGNED_HASH; --- 545 unchanged lines hidden (view full) --- 958 ip->i_block_group = ino_to_cg(fs, ino); 959 ip->i_next_alloc_block = 0; 960 ip->i_next_alloc_goal = 0; 961 962 /* 963 * Now we want to make sure that block pointers for unused 964 * blocks are zeroed out - ext2_balloc depends on this 965 * although for regular files and directories only |
966 * 967 * If EXT4_EXTENTS flag is enabled, unused blocks aren't 968 * zeroed out because we could corrupt the extent tree. |
|
964 */ | 969 */ |
965 if(S_ISDIR(ip->i_mode) || S_ISREG(ip->i_mode)) { | 970 if (!(ip->i_flags & EXT4_EXTENTS) && 971 (S_ISDIR(ip->i_mode) || S_ISREG(ip->i_mode))) { |
966 used_blocks = (ip->i_size+fs->e2fs_bsize-1) / fs->e2fs_bsize; 967 for (i = used_blocks; i < EXT2_NDIR_BLOCKS; i++) 968 ip->i_db[i] = 0; 969 } 970/* 971 ext2_print_inode(ip); 972*/ 973 bqrelse(bp); --- 135 unchanged lines hidden --- | 972 used_blocks = (ip->i_size+fs->e2fs_bsize-1) / fs->e2fs_bsize; 973 for (i = used_blocks; i < EXT2_NDIR_BLOCKS; i++) 974 ip->i_db[i] = 0; 975 } 976/* 977 ext2_print_inode(ip); 978*/ 979 bqrelse(bp); --- 135 unchanged lines hidden --- |