#
445d3d22 |
|
20-Feb-2024 |
Stefan Eßer <se@FreeBSD.org> |
msdosfs: fix potential inode collision on FAT12 and FAT16 FAT file systems do not use inodes, instead all file meta-information is stored in directory entries. FAT12 and FAT16 use a fixed size area for root directories, with typically 512 entries of 32 bytes each (for a total of 16 KB) on hard disk formats. The file system data is stored in clusters of typically 512 to 4096 bytes, depending on the size of the file system. The current code uses the offset of a DOS 8.3 style directory entry as a pseudo-inode, which leads to inode values of 0 to 16368 for typical root directories with 512 entries. Sub-directories use 2 cluster length plus the byte offset of the directory entry in the data area for the pseudo-inode, which may be as low as 1024 in case of 512 byte clusters. A sub-directory in cluster 2 and with 512 byte clusters will therefore lead to a re-use of inode 1024 when there are at least 32 DOS 8.3 style filenames in the root directory (or 11 14-character Windows long file names, each of which takes up 3 directory entries). FAT32 file systems are not affected by this issue and FAT12/FAT16 file systems with larger cluster sizes are unlikely to have as many directory entries in the root directory as are required to cause the collision. This commit leads to inode numbers that are guaranteed to not collide for all valid FAT12 and FAT16 file system parameters. It does also provide a small speed-up due to more efficient use of the vnode cache. Approved by: mckusick MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D43978
|
#
71625ec9 |
|
16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c comment pattern Remove /^/[*/]\s*\$FreeBSD\$.*\n/
|
#
85fb840e |
|
07-Aug-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
msdosfs: drop now unused DE_RENAME Submitted by: trasz Reviewed by: mckusick Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D31464
|
#
95d42526 |
|
01-Aug-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
msdosfs: fix rename Use the same locking algorithm for msdosfs_rename() as used by ufs_rename(). Convert doscheckpath() to non-sleeping version. Reported by: trasz PR: 257522 In collaboration with: pho Reviewed by: mckusick Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D31464
|
#
ae7e8a02 |
|
01-Aug-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
msdosfs deget(): add locking flags argument LK_EXCLUSIVE must be passed always, some consumers need the ability to specify LK_NOWAIT Reviewed by: mckusick Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D31464
|
#
92d4e088 |
|
01-Aug-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
msdosfs: unstaticise msdosfs_lookup_ and rename it to msdosfs_lookup_ino(), similarly to UFS Reviewed by: mckusick Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D31464
|
#
ba2cfa80 |
|
22-Feb-2021 |
Alex Richardson <arichardson@FreeBSD.org> |
Fix makefs bootstrap after d485c77f203fb0f4cdc08dea5ff81631b51d8809 The makefs msdosfs code includes fs/msdosfs/denode.h which directly uses struct buf from <sys/buf.h> rather than the makefs struct m_buf. To work around this problem provide a local denode.h that includes ffs/buf.h and defines buf as an alias for m_buf. Reviewed By: kib, emaste Differential Revision: https://reviews.freebsd.org/D28835
|
#
2bfd8992 |
|
14-Feb-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
vnode: move write cluster support data to inodes. The data is only needed by filesystems that 1. use buffer cache 2. utilize clustering write support. Requested by: mjg Reviewed by: asomers (previous version), fsu (ext2 parts), mckusick Tested by: pho Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D28679
|
#
d485c77f |
|
18-Feb-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
Remove #define _KERNEL hacks from libprocstat Make sys/buf.h, sys/pipe.h, sys/fs/devfs/devfs*.h headers usable in userspace, assuming that the consumer has an idea what it is for. Unhide more material from sys/mount.h and sys/ufs/ufs/inode.h, sys/ufs/ufs/ufsmount.h for consumption of userspace tools, with the same caveat. Remove unacceptable hack from usr.sbin/makefs which relied on sys/buf.h being unusable in userspace, where it override struct buf with its own definition. Instead, provide struct m_buf and struct m_vnode and adapt code to use local variants. Reviewed by: mckusick Tested by: pho Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D28679
|
#
476b0ab7 |
|
21-Aug-2019 |
Ed Maste <emaste@FreeBSD.org> |
makefs: share denode.h between kernel msdosfs and makefs There is no need to duplicate this file when it can be trivially shared (just exposing sections previously under #ifdef _KERNEL). MFC with: r351273 Differential Revision: The FreeBSD Foundation
|
#
22e56aea |
|
30-Jul-2018 |
Ed Maste <emaste@FreeBSD.org> |
msdosfs: use same max filesize #define as NetBSD and move to header For use by makefs msdosfs support. Obtained from: NetBSD denode.h 1.6 Sponsored by: The FreeBSD Foundation
|
#
6ae00e30 |
|
24-Jul-2018 |
Ed Maste <emaste@FreeBSD.org> |
Revert msdosfs MAKEFS #ifdef changes from r319870 These changes are not needed for current msdosfs makefs WIP. Submitted by: Siva Mahadevan Sponsored by: The FreeBSD Foundation
|
#
d63027b6 |
|
27-Nov-2017 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
sys/fs: further adoption of SPDX licensing ID tags. Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts.
|
#
db20c27d |
|
12-Jun-2017 |
Ed Maste <emaste@FreeBSD.org> |
msdosfs: adjust #ifdefs to be similar to NetBSD - Add header guards where missing - Make parts available for use in makefs Sponsored by: The FreeBSD Foundation
|
#
6a1c2e1f |
|
02-Jun-2017 |
Ed Maste <emaste@FreeBSD.org> |
msdosfs: use mem{cpy,move,set} instead of bcopy,bzero This somewhat simplifies use of msdosfs code in userland (for makefs), reduces diffs with NetBSD and is standard C as of C89. Reviewed by: imp MFC after: 1 month Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D11014
|
#
9287dbaa |
|
21-May-2017 |
Ed Maste <emaste@FreeBSD.org> |
msdosfs: capitalize FAT appropriately Diff reduction with NetBSD, including some nearby minor whitespace or style fixes. Obtained from: NetBSD Sponsored by: The FreeBSD Foundation
|
#
23c53312 |
|
19-May-2017 |
Ed Maste <emaste@FreeBSD.org> |
msdosfs: use C99 types General cleanup, for diff reduction with NetBSD and future use by FAT support in makefs. Submitted by: Siva Mahadevan <smahadevan@freebsdfoundation.org> Obtained from: NetBSD Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D10821
|
#
0696afbe |
|
23-Sep-2016 |
Alan Somers <asomers@FreeBSD.org> |
Mount msdosfs with longnames support by default. The old behavior depended on the FAT version and on what files were in the root directory. "mount_msdosfs -o shortnames" is still supported. Reviewed by: wblock, cem Discussed with: trasz, adrian, imp MFC after: 4 weeks X-MFC-Notes: Don't MFC the removal of findwin95 Differential Revision: https://reviews.freebsd.org/D8018
|
#
c52fd858 |
|
23-Apr-2012 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Remove unused thread argument from vtruncbuf(). Reviewed by: kib
|
#
a7d5f7eb |
|
19-Oct-2010 |
Jamie Gritton <jamie@FreeBSD.org> |
A new jail(8) with a configuration file, to replace the work currently done by /etc/rc.d/jail.
|
#
bc6c9c91 |
|
20-Feb-2010 |
Konstantin Belousov <kib@FreeBSD.org> |
MFC r203822: Remove unused macros.
|
#
4f160a1c |
|
13-Feb-2010 |
Konstantin Belousov <kib@FreeBSD.org> |
Remove unused macros. MFC after: 1 week
|
#
c72ae142 |
|
27-Feb-2009 |
John Baldwin <jhb@FreeBSD.org> |
- Hold a reference on the cdev a filesystem is mounted from in the mount. - Remove the cdev pointers from the denode and instead use the mountpoint's reference to call dev2udev() in getattr(). Reviewed by: kib, julian
|
#
d7f03759 |
|
19-Oct-2008 |
Ulf Lilleengen <lulf@FreeBSD.org> |
- Import the HEAD csup code which is the basis for the cvsmode work.
|
#
eab626f1 |
|
16-Apr-2008 |
Konstantin Belousov <kib@FreeBSD.org> |
Move the head of byte-level advisory lock list from the filesystem-specific vnode data to the struct vnode. Provide the default implementation for the vop_advlock and vop_advlockasync. Purge the locks on the vnode reclaim by using the lf_purgelocks(). The default implementation is augmented for the nfs and smbfs. In the nfs_advlock, push the Giant inside the nfs_dolock. Before the change, the vop_advlock and vop_advlockasync have taken the unlocked vnode and dereferenced the fs-private inode data, racing with with the vnode reclamation due to forced unmount. Now, the vop_getattr under the shared vnode lock is used to obtain the inode size, and later, in the lf_advlockasync, after locking the vnode interlock, the VI_DOOMED flag is checked to prevent an operation on the doomed vnode. The implementation of the lf_purgelocks() is submitted by dfr. Reported by: kris Tested by: kris, pho Discussed with: jeff, dfr MFC after: 2 weeks
|
#
ededffc0 |
|
25-Oct-2007 |
Tom Rhodes <trhodes@FreeBSD.org> |
Remove some debugging code that, while useful, doesn't belong in the committed version. While here, expand a macro only used once. Discussed with/oked by: bde
|
#
b6d0381e |
|
06-Aug-2007 |
Bruce Evans <bde@FreeBSD.org> |
Fix some style bugs (some whitespace errors only). Approved by: re (kensmith) (blanket)
|
#
752945d6 |
|
16-Jan-2007 |
Tom Rhodes <trhodes@FreeBSD.org> |
Add a 3rd entry in the cache, which keeps the end position from just before extending a file. This has the desired effect of keeping the write speed constant. And yes, that helps a lot copying large files always at full speed now, and I have seen improvements using benchmarks/bonnie. Stolen from: NetBSD Reviewed by: bde
|
#
3c960d93 |
|
24-Oct-2006 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Replace slightly crummy fattime<->timespec conversion functions.
|
#
1a3c917f |
|
17-Aug-2006 |
Warner Losh <imp@FreeBSD.org> |
while (0); -> while (0) in multi-line macros
|
#
f4b423ae |
|
07-Apr-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Give msdosfs a unique inode number which is really the byteoffset of the directory entry. This solves the corruption problem I belive. Regression test script by: silby
|
#
a30fc63b |
|
13-Mar-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Use vfs_hash instead of home-rolling.
|
#
d167cf6f |
|
06-Jan-2005 |
Warner Losh <imp@FreeBSD.org> |
/* -> /*- for copyright notices, minor format tweaks as necessary
|
#
4b440374 |
|
02-Dec-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove the de_devvp and stop VREF'ing it for every vnode we create.
|
#
aec0fb7b |
|
01-Dec-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Back when VOP_* was introduced, we did not have new-style struct initializations but we did have lofty goals and big ideals. Adjust to more contemporary circumstances and gain type checking. Replace the entire vop_t frobbing thing with properly typed structures. The only casualty is that we can not add a new VOP_ method with a loadable module. History has not given us reason to belive this would ever be feasible in the the first place. Eliminate in toto VOCALL(), vop_t, VNODEOP_SET() etc. Give coda correct prototypes and function definitions for all vop_()s. Generate a bit more data from the vnode_if.src file: a struct vop_vector and protype typedefs for all vop methods. Add a new vop_bypass() and make vop_default be a pointer to another struct vop_vector. Remove a lot of vfs_init since vop_vector is ready to use from the compiler. Cast various vop_mumble() to void * with uppercase name, for instance VOP_PANIC, VOP_NULL etc. Implement VCALL() by making vdesc_offset the offsetof() the relevant function pointer in vop_vector. This is disgusting but since the code is generated by a script comparatively safe. The alternative for nullfs etc. would be much worse. Fix up all vnode method vectors to remove casts so they become typesafe. (The bulk of this is generated by scripts)
|
#
d676af37 |
|
08-Sep-2004 |
Tim J. Robbins <tjr@FreeBSD.org> |
Reduce the size of struct defid's defid_dirclust, defid_dirofs and (disabled) defid_gen members from u_long to u_int32_t so that alignment requirements don't cause the structure to become larger than struct fid on LP64 platforms. This fixes NFS exports of msdos filesystems on at least amd64. PR: 71173
|
#
cede1f56 |
|
26-Dec-2003 |
Tom Rhodes <trhodes@FreeBSD.org> |
Make msdosfs support the dirty flag in FAT16 and FAT32. Enable lockf support. PR: 55861 Submitted by: Jun Su <junsu@m-net.arbornet.org> (original version) Reviewed by: make universe
|
#
4119b6e5 |
|
24-Jun-2003 |
John-Mark Gurney <jmg@FreeBSD.org> |
change dev_t to struct cdev * to match ufs. This fixes fstat for cd9660 and msdosfs. Reviewed by: bde
|
#
29f19445 |
|
08-Nov-2002 |
Alfred Perlstein <alfred@FreeBSD.org> |
Fix instances of macros with improperly parenthasized arguments. Verified by: md5
|
#
11caded3 |
|
19-Mar-2002 |
Alfred Perlstein <alfred@FreeBSD.org> |
Remove __P.
|
#
b40ce416 |
|
12-Sep-2001 |
Julian Elischer <julian@FreeBSD.org> |
KSE Milestone 2 Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process. Sorry john! (your next MFC will be a doosie!) Reviewed by: peter@freebsd.org, dillon@freebsd.org X-MFC after: ha ha ha ha
|
#
e7b1ac75 |
|
22-Oct-2000 |
Boris Popov <bp@FreeBSD.org> |
Remove de_lock field from denode structure and make msdosfs PDIRUNLOCK aware.
|
#
c4473420 |
|
28-Dec-1999 |
Peter Wemm <peter@FreeBSD.org> |
Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" is an application space macro and the applications are supposed to be free to use it as they please (but cannot). This is consistant with the other BSD's who made this change quite some time ago. More commits to come.
|
#
c3aac50f |
|
27-Aug-1999 |
Peter Wemm <peter@FreeBSD.org> |
$Id$ -> $FreeBSD$
|
#
9d9fdb45 |
|
02-Jan-1999 |
Dmitrij Tejblum <dt@FreeBSD.org> |
Ensure that deHighClust in direntry always initialized. Noticed by: Carl Mascott <cmascott@world.std.com> Don't write access time of a file more than once per day. (Its precision is 1 day anyway). Don't try to write access and creation time in nonwin95 case. Suggested by: bde (long time ago).
|
#
bad3d41d |
|
20-Nov-1998 |
Dmitrij Tejblum <dt@FreeBSD.org> |
Support NT VFAT lower case flags. PR: 8383 (Mostly) Submitted by: Carl Mascott <cmascott@world.std.com>
|
#
84de3fb7 |
|
17-May-1998 |
Bruce Evans <bde@FreeBSD.org> |
Removed vestiges of pre-Lite2 locking.
|
#
952a6212 |
|
18-Feb-1998 |
Jordan K. Hubbard <jkh@FreeBSD.org> |
Update MSDOSFS code using NetBSD's msdosfs as a guide to support FAT32 partitions. Unfortunately, we looked around here at Walnut Creek CDROM for any newer FAT32-supporting versions of Win95 and we were unsuccessful; only the older stuff here. So this is untested beyond simply making sure it compiles and someone with access to an actual FAT32 fs will have to let us know how well it actually works. Submitted by: Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru> Obtained from: NetBSD
|
#
d54d34b5 |
|
16-Oct-1997 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Make a set of VOP standard lock, unlock & islocked VOP operators, which depend on the lock being located at vp->v_data. Saves 3x3 identical vop procs, more as the other filesystems becomes lock aware.
|
#
0fa2443f |
|
26-Aug-1997 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Uncut&paste cache_lookup(). This unifies several times in theory indentical 50 lines of code. The filesystems have a new method: vop_cachedlookup, which is the meat of the lookup, and use vfs_cache_lookup() for their vop_lookup method. vfs_cache_lookup() will check the namecache and pass on to the vop_cachedlookup method in case of a miss. It's still the task of the individual filesystems to populate the namecache with cache_enter(). Filesystems that do not use the namecache will just provide the vop_lookup method as usual.
|
#
af3f60d5 |
|
26-Feb-1997 |
Bruce Evans <bde@FreeBSD.org> |
Updated msdosfs to use Lite2 vfs configuration and Lite2 locking. It should now work as (un)well as before the Lite2 merge.
|
#
6875d254 |
|
22-Feb-1997 |
Peter Wemm <peter@FreeBSD.org> |
Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not ready for it yet.
|
#
1130b656 |
|
14-Jan-1997 |
Jordan K. Hubbard <jkh@FreeBSD.org> |
Make the long-awaited change from $Id$ to $FreeBSD$ This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
|
#
6a1ae884 |
|
28-Jul-1996 |
Andrey A. Chernov <ache@FreeBSD.org> |
bzero reserved field into directory entry, junk here cause scandisk error under Win95
|
#
f57e6547 |
|
09-Nov-1995 |
Bruce Evans <bde@FreeBSD.org> |
Introduced a type `vop_t' for vnode operation functions and used it 1138 times (:-() in casts and a few more times in declarations. This change is null for the i386. The type has to be `typedef int vop_t(void *)' and not `typedef int vop_t()' because `gcc -Wstrict-prototypes' warns about the latter. Since vnode op functions are called with args of different (struct pointer) types, neither of these function types is any use for type checking of the arg, so it would be preferable not to use the complete function type, especially since using the complete type requires adding 1138 casts to avoid compiler warnings and another 40+ casts to reverse the function pointer conversions before calling the functions.
|
#
a98ca469 |
|
29-Oct-1995 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Second batch of cleanup changes. This time mostly making a lot of things static and some unused variables here and there.
|
#
94a8606f |
|
02-Aug-1995 |
Doug Rabson <dfr@FreeBSD.org> |
Add support for the va_filerev attribute required by NFSv3.
|
#
9b2e5354 |
|
30-May-1995 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
Remove trailing whitespace.
|
#
b5e8ce9f |
|
16-Mar-1995 |
Bruce Evans <bde@FreeBSD.org> |
Add and move declarations to fix all of the warnings from `gcc -Wimplicit' (except in netccitt, netiso and netns) and most of the warnings from `gcc -Wnested-externs'. Fix all the bugs found. There were no serious ones.
|
#
a176f73d |
|
26-Dec-1994 |
Bruce Evans <bde@FreeBSD.org> |
Fix panic for `cp -p' by root to an msdos file system. Improve handling of attributes so that `cp -p' to an msdos file system can succeed under favourable circumstances (no uid or gid changes and no nonzero flags except SF_ARCHIVED). msdosfs_vnops.c: The in-core inode flags were confused with the on-disk inode flags, so chflags() clobbered the lock flag and caused a panic. denode.h, msdosfs_denode.c, msdosfs_vnops.c: Support the msdosfs archive attibute (ATTR_ARCHIVE) by mapping it to the complement of the SF_ARCHIVED flag and setting the ATTR_ARCHIVE bit when a file's modification time is set (but not when a file's permissions are set; this is the standard wrong DOS behaviour). denode.h, msdosfs_denode.c: Remove the DE_UPDAT() macro. It was only used once, and the corresponding macro in ufs has already been removed. denode.h: Don't change the timestamp for directories in DE_TIMES() (be consistent with deupdat()). msdosfs_vnops.c: Handle chown() better: return EPERM instead of EINVAL if there are insufficient permissions; otherwise, allow null changes.
|
#
63e4f22a |
|
11-Dec-1994 |
Bruce Evans <bde@FreeBSD.org> |
Fix numerous timestamp bugs. DE_UPDATE was confused with DE_MODIFIED in some places (they do have confusing names). Handle them exactly the same as IN_UPDATE and IN_MODIFIED. This fixes chmod() and chown() clobbering the mtime and other bugs. DE_MODIFIED was set but not used. Parenthesize macro args. DE_TIMES() now takes a timeval arg instead of a timespec arg. It was stupid to use a macro for speed and do unused conversions to prepare for the macro. Restore the left shifting of the DOS seconds count by 1. It got lost among the shifts for the bitfields, so DOS seconds counts appeared to range from 0 to 29 seconds (step 1) instead of 0 to 58 seconds (step 2). Actually use the passed-in mtime in deupdat() as documented so that utimes() works. Change `extern __inline's to `static inline's so that msdosfs_fat.o can be linked when it is compiled without -O. Remove faking of directory mtimes to always be the current time. It's more surprising for directory mtimes to change when you read the directories than for them not to change when you write the directories. This should be controlled by a mount-time option if at all.
|
#
27a0bc89 |
|
19-Sep-1994 |
Doug Rabson <dfr@FreeBSD.org> |
Added msdosfs. Obtained from: NetBSD
|