#
259065 |
|
07-Dec-2013 |
gjb |
- Copy stable/10 (r259064) to releng/10.0 as part of the 10.0-RELEASE cycle. - Update __FreeBSD_version [1] - Set branch name to -RC1
[1] 10.0-CURRENT __FreeBSD_version value ended at '55', so start releng/10.0 at '100' so the branch is started with a value ending in zero.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
256281 |
|
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
#
254283 |
|
13-Aug-2013 |
pfg |
Define ext2fs local types and use them.
Add definitions for e2fs_daddr_t, e4fs_daddr_t in addition to the already existing e2fs_lbn_t and adjust them for ext4. Other than making the code more readable these changes should fix problems related to big filesystems.
Setting the proper types can be tricky so the process was helped by looking at UFS. In our implementation, logical block numbers can be negative and the code depends on it. In ext2, block numbers are unsigned so it is convenient to keep e2fs_daddr_t unsigned and use the complete 32 bits. In the case of e4fs_daddr_t, while the value should be unsigned, for ext4 we only need to support 48 bits so preserving an extra bit from the sign is not an issue.
While here also drop the ext2_setblock() prototype that was never used.
Discussed with: mckusick, bde MFC after: 3 weeks
|
#
252103 |
|
23-Jun-2013 |
pfg |
Define and use e2fs_lbn_t in ext2fs.
In line to what is done in UFS, define an internal type e2fs_lbn_t for the logical block numbers.
This change is basically a no-op as the new type is unchanged (int32_t) but it may be useful as bumping this may be required for ext4fs.
Also, as pointed out by Bruce Evans:
-Use daddr_t for daddr in ext2_bmaparray(). This seems to improve reliability with the reallocblks option. - Add a cast to the fsbtodb() macro as in UFS.
Reviewed by: bde MFC after: 3 days
|
#
251809 |
|
16-Jun-2013 |
pfg |
Re-sort ext2fs headers to make things easier to find.
In the ext2fs driver we have a mixture of headers:
- The ext2_ prefixed headers have strong influence from NetBSD and are carry specific ext2/3/4 information. - The unprefixed headers are inspired on UFS and carry implementation specific information.
Do some small adjustments so that the information is easier to find coming from either UFS or the NetBSD implementation.
MFC after: 3 days
|
#
251677 |
|
13-Jun-2013 |
pfg |
Relax some unnecessary unsigned type changes in ext2fs.
While the changes in r245820 are in line with the ext2 spec, the code derived from UFS can use negative values so it is better to relax some types to keep them as they were, and somewhat more similar to UFS. While here clean some casts.
Some of the original types are still wrong and will require more work.
Discussed with: bde MFC after: 3 days
|
#
251658 |
|
12-Jun-2013 |
pfg |
Turn DIAGNOSTICs to INVARIANTS in ext2fs.
This is done to be consistent with what other filesystems and particularly ffs already does (see r173464).
MFC after: 5 days
|
#
251612 |
|
11-Jun-2013 |
pfg |
s/file system/filesystem/g
Based on r96755 from UFS.
MFC after: 3 days
|
#
249218 |
|
06-Apr-2013 |
jeff |
Prepare to replace the buf splay with a trie:
- Don't insert BKGRDMARKER bufs into the splay or dirty/clean buf lists. No consumers need to find them there and it complicates the tree. These flags are all FFS specific and could be moved out of the buf cache. - Use pbgetvp() and pbrelvp() to associate the background and journal bufs with the vp. Not only is this much cheaper it makes more sense for these transient bufs. - Fix the assertions in pbget* and pbrel*. It's not safe to check list pointers which were never initialized. Use the BX flags instead. We also check B_PAGING in reassignbuf() so this should cover all cases.
Discussed with: kib, mckusick, attilio Sponsored by: EMC / Isilon Storage Division
|
#
246634 |
|
10-Feb-2013 |
pfg |
ext2fs: Use prototype declarations for function definitions
Submitted by: Christoph Mallon MFC after: 2 weeks
|
#
246258 |
|
02-Feb-2013 |
pfg |
ext2fs: general cleanup.
- Remove unused extern declarations in fs.h - Correct comments in ext2_dir.h - Several panic() messages showed wrong function names. - Remove commented out stray line in ext2_alloc.c. - Remove the unused macro EXT2_BLOCK_SIZE_BITS() and the then write-only member e2fs_blocksize_bits from struct m_ext2fs. - Remove the unused macro EXT2_FIRST_INO() and the then write-only member e2fs_first_inode from struct m_ext2fs. - Remove EXT2_DESC_PER_BLOCK() and the member e2fs_descpb from struct m_ext2fs. - Remove the unused members e2fs_bmask, e2fs_dbpg and e2fs_mount_opt from struct m_ext2fs - Correct harmless off-by-one error for fspath in ext2_vfsops.c. - Remove the unused and broken macros EXT2_ADDR_PER_BLOCK_BITS() and EXT2_DESC_PER_BLOCK_BITS(). - Remove the !_KERNEL versions of the EXT2_* macros.
Submitted by: Christoph Mallon MFC after: 2 weeks
|
#
245820 |
|
22-Jan-2013 |
pfg |
ext2fs: make some inode fields match the ext2 spec.
Ext2fs uses unsigned fields in its dinode struct. FreeBSD can have negative values in some of those fields and the inode is meant to interact with the system so we have never respected the unsigned nature of most of those fields.
Block numbers and the NFS generation number do not need to be signed so redefine them as unsigned to better match the on-disk information.
MFC after: 1 week
|
#
245817 |
|
22-Jan-2013 |
pfg |
ext2fs: temporarily disable the reallocation code.
Testing with fsx has revealed problems and in order to hunt the bugs properly we need reduce the complexity.
This seems to help but is not a complete solution.
MFC after: 3 days
|
#
243641 |
|
27-Nov-2012 |
pfg |
Partially bring r242520 to ext2fs.
When a file is first being written, the dynamic block reallocation (implemented by ext2_reallocblks) relocates the file's blocks so as to cluster them together into a contiguous set of blocks on the disk.
When the cluster crosses the boundary into the first indirect block, the first indirect block is initially allocated in a position immediately following the last direct block. Block reallocation would usually destroy locality by moving the indirect block out of the way to keep the data blocks contiguous.
The issue was diagnosed long ago by Bruce Evans on ffs and surfaced on ext2fs when block reallocaton was ported. This is only a partial solution based on the similarities with FFS. We still require more review of the allocation details that vary in ext2fs.
Reported by: bde MFC after: 1 week
|
#
241011 |
|
27-Sep-2012 |
mdf |
Fix up kernel sources to be ready for a 64-bit ino_t.
Original code by: Gleb Kurtsou
|
#
232703 |
|
08-Mar-2012 |
pfg |
Add support for ns timestamps and birthtime to the ext2/3 driver.
When using big inodes there is sufficient space in ext3 to keep extra resolution and birthtime (creation) timestamps. The appropriate fields in the on-disk inode have been approved for a long time but support for this in ext3 has not been widely distributed.
In preparation for ext4 most linux distributions have enabled by default such bigger inodes and some people use nanosecond timestamps in ext3. We now support those when the inode is big enough and while we do recognize the EXT4F_ROCOMPAT_EXTRA_ISIZE, we maintain the extra timestamps even when they are not used.
An additional note by Bruce Evans: We blindly accept unrepresentable tv_nsec in VOP_SETATTR(), but all file systems have always done that. When POSIX gets around to specifying the behaviour, it will probably require certain rounding to the fs's resolution and not rejecting the request. This unfortunately means that syscalls that set times can't really tell if they succeeded without reading back the times using stat() or similar and checking that they were set close enough.
Reviewed by: bde Approved by: jhb (mentor) MFC after: 2 weeks
|
#
229200 |
|
01-Jan-2012 |
ed |
Migrate ufs and ext2fs from skpc() to memcchr().
While there, remove a useless check from the code. memcchr() always returns characters unequal to 0xff in this case, so inosused[i] ^ 0xff can never be equal to zero. Also, the fact that memcchr() returns a pointer instead of the number of bytes until the end, makes conversion to an offset far more easy.
|
#
228583 |
|
16-Dec-2011 |
pfg |
Style cleanups by jh@. Fix a comment from the previous commit. Use M_ZERO instead of bzero() in ext2_vfsops.c Add include guards from PR.
PR: 162564 Approved by: jhb (mentor) MFC after: 2 weeks
|
#
228539 |
|
15-Dec-2011 |
pfg |
Bring in reallocblk to ext2fs.
The feature has been standard for a while in UFS as a means to reduce fragmentation, therefore maintaining consistent performance with filesystem aging. This is also very similar to what ext4 calls "delayed allocation".
In his 2010 GSoC, Zheng Liu ported and benchmarked the missing FANCY_REALLOC code to find more consistent performance improvements than with the preallocation approach.
PR: 159233 Author: Zheng Liu <gnehzuil AT SPAMFREE gmail DOT com> Sponsored by: Google Inc. Approved by: jhb (mentor) MFC after: 2 weeks
|
#
227309 |
|
07-Nov-2011 |
ed |
Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.
The SYSCTL_NODE macro defines a list that stores all child-elements of that node. If there's no SYSCTL_DECL macro anywhere else, there's no reason why it shouldn't be static.
|
#
221126 |
|
27-Apr-2011 |
jhb |
Various style fixes including using uint*_t instead of u_int*_t.
Submitted by: Pedro F. Giffuni giffunip at yahoo
|
#
219012 |
|
24-Feb-2011 |
jhb |
Use ffs() to locate free bits in the inode and block bitmaps rather than loops with bit shifts.
|
#
218438 |
|
08-Feb-2011 |
jhb |
After reading a bitmap block for i-nodes or blocks, recheck the count of free i-nodes or blocks to handle a race where another thread might have allocated the last i-node or block while we were waiting for the buffer.
Tested by: dougb
|
#
218190 |
|
02-Feb-2011 |
jhb |
Fix build with DIAGNOSTIC enabled.
Pointy hat to: jhb
|
#
218175 |
|
01-Feb-2011 |
jhb |
- Set the next_alloc fields for an i-node after allocating a new block so that future allocations start with most recently allocated block rather than the beginning of the filesystem. - Fix ext2_alloccg() to properly scan for 8 block chunks that are not aligned on 8-bit boundaries. Previously this was causing new blocks to be allocated in a highly fragmented fashion (block 0 of a file at lbn N, block 1 at lbn N + 8, block 2 at lbn N + 16, etc.). - Cosmetic tweaks to the currently-disabled fancy realloc sysctls.
PR: kern/153584 Discussed with: bde Tested by: Pedro F. Giffuni giffunip at yahoo, Zheng Liu (lz)
|
#
217585 |
|
19-Jan-2011 |
jhb |
Whitespace and style fixes.
|
#
212079 |
|
01-Sep-2010 |
lulf |
- Remove duplicate comment.
PR: kern/148820 Submitted by: pluknet <pluknet - at - gmail.com>
|
#
202283 |
|
14-Jan-2010 |
lulf |
Bring in the ext2fs work done by Aditya Sarawgi during and after Google Summer of Code 2009:
- BSDL block and inode allocation policies for ext2fs. This involves the use FFS1 style block and inode allocation for ext2fs. Preallocation was removed since it was GPL'd. - Make ext2fs MPSAFE by introducing locks to per-mount datastructures. - Fixes for kern/122047 PR. - Various small bugfixes. - Move out of gnu/ directory.
Sponsored by: Google Inc. Submitted by: Aditya Sarawgi <sarawgi.aditya AT SPAMFREE gmail DOT com>
|
#
153110 |
|
05-Dec-2005 |
ru |
Fix -Wundef warnings found when compiling i386 LINT, GENERIC and custom kernels.
|
#
150663 |
|
28-Sep-2005 |
rwatson |
Back out alpha/alpha/trap.c:1.124, osf1_ioctl.c:1.14, osf1_misc.c:1.57, osf1_signal.c:1.41, amd64/amd64/trap.c:1.291, linux_socket.c:1.60, svr4_fcntl.c:1.36, svr4_ioctl.c:1.23, svr4_ipc.c:1.18, svr4_misc.c:1.81, svr4_signal.c:1.34, svr4_stat.c:1.21, svr4_stream.c:1.55, svr4_termios.c:1.13, svr4_ttold.c:1.15, svr4_util.h:1.10, ext2_alloc.c:1.43, i386/i386/trap.c:1.279, vm86.c:1.58, unaligned.c:1.12, imgact_elf.c:1.164, ffs_alloc.c:1.133:
Now that Giant is acquired in uprintf() and tprintf(), the caller no longer leads to acquire Giant unless it also holds another mutex that would generate a lock order reversal when calling into these functions. Specifically not backed out is the acquisition of Giant in nfs_socket.c and rpcclnt.c, where local mutexes are held and would otherwise violate the lock order with Giant.
This aligns this code more with the eventual locking of ttys.
Suggested by: bde
|
#
150335 |
|
19-Sep-2005 |
rwatson |
Add GIANT_REQUIRED and WITNESS sleep warnings to uprintf() and tprintf(), as they both interact with the tty code (!MPSAFE) and may sleep if the tty buffer is full (per comment).
Modify all consumers of uprintf() and tprintf() to hold Giant around calls into these functions. In most cases, this means adding an acquisition of Giant immediately around the function. In some cases (nfs_timer()), it means acquiring Giant higher up in the callout.
With these changes, UFS no longer panics on SMP when either blocks are exhausted or inodes are exhausted under load due to races in the tty code when running without Giant.
NB: Some reduction in calls to uprintf() in the svr4 code is probably desirable.
NB: In the case of nfs_timer(), calling uprintf() while holding a mutex, or even in a callout at all, is a bad idea, and will generate warnings and potential upset. This needs to be fixed, but was a problem before this change.
NB: uprintf()/tprintf() sleeping is generally a bad ideas, as is having non-MPSAFE tty code.
MFC after: 1 week
|
#
147393 |
|
15-Jun-2005 |
rodrigc |
Move ext2fs from src/gnu to src/gnu/fs. Discussed on arch@.
Reviewed by: kan Approved by: re (blanket), kan
|
#
143677 |
|
16-Mar-2005 |
phk |
Don't hold a reference to the disk vnode for each inode.
Don't store the disk cdev in all inodes, it's only used for debugging printfs.
|
#
142692 |
|
27-Feb-2005 |
phk |
Remove debug printout of major/minor numbers, print name instead.
|
#
139778 |
|
06-Jan-2005 |
imp |
/* -> /*- for copyright notices, minor format tweaks as necessary
|
#
128019 |
|
07-Apr-2004 |
imp |
Remove advertising clause from University of California Regent's license, per letter dated July 22, 1999 and email from Peter Wemm, Alan Cox and Robert Watson.
Approved by: core, peter, alc, rwatson
|
#
96880 |
|
18-May-2002 |
iedowse |
Fix two off-by-one errors when sanity-checking inode numbers. In ext2fs, inode numbers start at 1, so the maximum valid inode number is (s_inodes_per_group * s_groups_count), not one less. This is just a minimal change to avoid unnecessary panics and errors; some other related bugs that Bruce Evans mentioned to me are not addressed.
Reviewed by: bde (ages ago)
|
#
96877 |
|
18-May-2002 |
iedowse |
Use explicitly-sized types where necessary to make ext2fs work again after the change to a 64-bit daddr_t.
|
#
96752 |
|
16-May-2002 |
iedowse |
Remove register keyword.
|
#
96749 |
|
16-May-2002 |
iedowse |
Complete the separation of ext2fs from ufs by copying the remaining shared code and converting all ufs references. Originally it may have made sense to share common features between the two filesystems, but recently it has only caused problems, the UFS2 work being the final straw.
All UFS_* indirect calls are now direct calls to ext2_* functions, and ext2fs-specific mount and inode structures have been introduced.
|
#
93015 |
|
23-Mar-2002 |
bde |
Repaired CSRG id. This file was not in Lite1; it was just cloned from a file with a in Lite1 before being cvs-added to FreeBSD.
|
#
92728 |
|
19-Mar-2002 |
alfred |
Remove __P.
|
#
92462 |
|
16-Mar-2002 |
mckusick |
Add a flags parameter to VFS_VGET to pass through the desired locking flags when acquiring a vnode. The immediate purpose is to allow polling lock requests (LK_NOWAIT) needed by soft updates to avoid deadlock when enlisting other processes to help with the background cleanup. For the future it will allow the use of shared locks for read access to vnodes. This change touches a lot of files as it affects most filesystems within the system. It has been well tested on FFS, loopback, and CD-ROM filesystems. only lightly on the others, so if you find a problem there, please let me (mckusick@mckusick.com) know.
|
#
72640 |
|
18-Feb-2001 |
asmodai |
Preceed/preceeding are not english words. Use precede or preceding.
|
#
59259 |
|
15-Apr-2000 |
rwatson |
ext2fs relies on UFS support code, and as a result also requires extattr.h to be included. This fixes the broken ext2fs build as of the import of extattr code.
Also added $FreeBSD: $ to a couple of files that didn't have them, without which I couldn't commit this fix.
Reported by: "George W. Dinolt" <gdinolt@pacbell.net>
|
#
50260 |
|
23-Aug-1999 |
bde |
Oops, the previous commit was missing a new include.
|
#
50253 |
|
23-Aug-1999 |
bde |
Use devtoname() to print dev_t's instead of casting them to long or u_long for misprinting in %lx format.
|
#
47099 |
|
13-May-1999 |
bde |
Fixed printing of a dev_t in a panic message. Fixed the function name in this message.
|
#
43301 |
|
27-Jan-1999 |
dillon |
Fix warnings in preparation for adding -Wall -Wcast-qual to the kernel compile
|
#
42374 |
|
07-Jan-1999 |
bde |
Don't pass unused unused timestamp args to UFS_UPDATE() or waste time initializing them. This almost finishes centralizing (in-core) timestamp updates in ufs_itimes().
|
#
42354 |
|
06-Jan-1999 |
bde |
UFS_UPDATE() takes a boolean `waitfor' arg, so don't pass it the value MNT_WAIT when we mean boolean `true' or check for that value not being passed. There was no problem in practice because MNT_WAIT had the magic value of 1.
|
#
39753 |
|
29-Sep-1998 |
bde |
Fixed initialization of new inodes. ext2fs doesn't clear inodes when they are deleted, so inodes must be cleared when they are reused, but we didn't clear the indirect blocks. This caused serious filesystem corruption.
|
#
37976 |
|
30-Jul-1998 |
bde |
Fixed printf format errors.
|
#
37094 |
|
21-Jun-1998 |
bde |
Removed unused includes.
|
#
35256 |
|
17-Apr-1998 |
des |
Seventy-odd "its" / "it's" typos in comments fixed as per kern/6108.
|
#
33134 |
|
06-Feb-1998 |
eivind |
Back out DIAGNOSTIC changes.
|
#
33108 |
|
04-Feb-1998 |
eivind |
Turn DIAGNOSTIC into a new-style option.
|
#
31517 |
|
03-Dec-1997 |
bde |
Fixed corruption of the per-group used directories count. It wasn't decremented when directories were removed because rev.1.12 broke the fixup of the i_mode of the inode being removed.
|
#
31485 |
|
02-Dec-1997 |
bde |
Use the same algorithm as ffs for generation numbers.
|
#
31483 |
|
02-Dec-1997 |
bde |
Removed __FreeBSD__ ifdefs.
|
#
30492 |
|
16-Oct-1997 |
phk |
Another VFS cleanup "kilo commit"
1. Remove VOP_UPDATE, it is (also) an UFS/{FFS,LFS,EXT2FS,MFS} intereface function, and now lives in the ufsmount structure.
2. Remove VOP_SEEK, it was unused.
3. Add mode default vops:
VOP_ADVLOCK vop_einval VOP_CLOSE vop_null VOP_FSYNC vop_null VOP_IOCTL vop_enotty VOP_MMAP vop_einval VOP_OPEN vop_null VOP_PATHCONF vop_einval VOP_READLINK vop_einval VOP_REALLOCBLKS vop_eopnotsupp
And remove identical functionality from filesystems
4. Add vop_stdpathconf, which returns the canonical stuff. Use it in the filesystems. (XXX: It's probably wrong that specfs and fifofs sets this vop, shouldn't it come from the "host" filesystem, for instance ufs or cd9660 ?)
5. Try to make system wide VOP functions have vop_* names.
6. Initialize the um_* vectors in LFS.
(Recompile your LKMS!!!)
|
#
30474 |
|
16-Oct-1997 |
phk |
VFS mega cleanup commit (x/N)
1. Add new file "sys/kern/vfs_default.c" where default actions for VOPs go. Implement proper defaults for ABORTOP, BWRITE, LEASE, POLL, REVOKE and STRATEGY. Various stuff spread over the entire tree belongs here.
2. Change VOP_BLKATOFF to a normal function in cd9660.
3. Kill VOP_BLKATOFF, VOP_TRUNCATE, VOP_VFREE, VOP_VALLOC. These are private interface functions between UFS and the underlying storage manager layer (FFS/LFS/MFS/EXT2FS). The functions now live in struct ufsmount instead.
4. Remove a kludge of VOP_ functions in all filesystems, that did nothing but obscure the simplicity and break the expandability. If a filesystem doesn't implement VOP_FOO, it shouldn't have an entry for it in its vnops table. The system will try to DTRT if it is not implemented. There are still some cruft left, but the bulk of it is done.
5. Fix another VCALL in vfs_cache.c (thanks Bruce!)
|
#
30418 |
|
14-Oct-1997 |
phk |
I think my previous change may have opened a race conditio. This patch does the same thing, with no change in semantics.
|
#
30402 |
|
14-Oct-1997 |
phk |
ufs_ihashrem() should not be called from the UFS layer, but from the lower layer (LFS/FFS/?) like the rest of the ihash functions. Otherwise it is impossible to make a lower layer that doesn't use the ihash facility.
|
#
26641 |
|
14-Jun-1997 |
bde |
Removed unused #includes.
|
#
24492 |
|
01-Apr-1997 |
bde |
Fixed gratuitous ANSIisms.
Removed trailing newline from panic messages.
|
#
24101 |
|
22-Mar-1997 |
bde |
Fixed some invalid (non-atomic) accesses to `time', mostly ones of the form `tv = time'. Use a new function gettime(). The current version just forces atomicicity without fixing precision or efficiency bugs. Simplified some related valid accesses by using the central function.
|
#
16322 |
|
12-Jun-1996 |
gpalmer |
Clean up -Wunused warnings.
Reviewed by: bde
|
#
13260 |
|
05-Jan-1996 |
wollman |
Convert QUOTA to new-style option.
|
#
12746 |
|
10-Dec-1995 |
bde |
Restored variables that are used iff QUOTA is defined.
ext2fs still uses #if in many cases where the rest of the kernel uses #ifdef (for QUOTA...).
|
#
12288 |
|
14-Nov-1995 |
phk |
Get rid of the last debug sysctl variables of the old style.
|
#
12147 |
|
08-Nov-1995 |
dyson |
Cleaned up some lint and some obvious prototyping errors.
|
#
12115 |
|
05-Nov-1995 |
dyson |
Main code for the ext2fs filesystem. Please refer to the COPYRIGHT.INFO file for GPL restrictions. This code was ported to the BSD platform by Godmar Back <gback@facility.cs.utah.edu> and specifically to FreeBSD by John Dyson. This code is still green and should be used with caution. Additional changes to UFS necessary to make this code work will be commited seperately. Submitted by: Godmar Back <gback@facility.cs.utah.edu> Obtained from: Lites/Mach4
|