#
1a9415af |
| 26-Aug-2004 |
Tim J. Robbins <tjr@FreeBSD.org> |
Improve the robustness of MSDOSFSMNT_KICONV handling: - Use copyinstr() to read cs_win, cs_dos, cs_local strings from the mount argument structure instead of reading through user-space pointers(!).
Improve the robustness of MSDOSFSMNT_KICONV handling: - Use copyinstr() to read cs_win, cs_dos, cs_local strings from the mount argument structure instead of reading through user-space pointers(!). - When mounting a filesystem, or updating an existing mount, only try to update the iconv handles from the information in the mount argument structure if the structure itself has the MSDOSFSMNT_KICONV flag set. - Attempt to handle failure of update_mp() in the MNT_UPDATE case.
show more ...
|
#
e83f1423 |
| 08-Aug-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Push all changes to disk before downgrading a mount from rw to ro.
|
#
5e8c582a |
| 31-Jul-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Put a version element in the VFS filesystem configuration structure and refuse initializing filesystems with a wrong version. This will aid maintenance activites on the 5-stable branch.
s/vfs_mount
Put a version element in the VFS filesystem configuration structure and refuse initializing filesystems with a wrong version. This will aid maintenance activites on the 5-stable branch.
s/vfs_mount/vfs_omount/
s/vfs_nmount/vfs_mount/
Name our filesystems mount function consistently.
Eliminate the namiedata argument to both vfs_mount and vfs_omount. It was originally there to save stack space. A few places abused it to get hold of some credentials to pass around. Effectively it is unused.
Reorganize the root filesystem selection code.
show more ...
|
#
d634f693 |
| 28-Jul-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove global variable rootdevs and rootvp, they are unused as such.
Add local rootvp variables as needed.
Remove checks for miniroot's in the swappartition. We never did that and most of the file
Remove global variable rootdevs and rootvp, they are unused as such.
Add local rootvp variables as needed.
Remove checks for miniroot's in the swappartition. We never did that and most of the filesystems could never be used for that, but it had still been copy&pasted all over the place.
show more ...
|
#
f257b7a5 |
| 12-Jul-2004 |
Alfred Perlstein <alfred@FreeBSD.org> |
Make VFS_ROOT() and vflush() take a thread argument. This is to allow filesystems to decide based on the passed thread which vnode to return. Several filesystems used curthread, they now use the pass
Make VFS_ROOT() and vflush() take a thread argument. This is to allow filesystems to decide based on the passed thread which vnode to return. Several filesystems used curthread, they now use the passed thread.
show more ...
|
#
e3c5a7a4 |
| 04-Jul-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
When we traverse the vnodes on a mountpoint we need to look out for our cached 'next vnode' being removed from this mountpoint. If we find that it was recycled, we restart our traversal from the sta
When we traverse the vnodes on a mountpoint we need to look out for our cached 'next vnode' being removed from this mountpoint. If we find that it was recycled, we restart our traversal from the start of the list.
Code to do that is in all local disk filesystems (and a few other places) and looks roughly like this:
MNT_ILOCK(mp); loop: for (vp = TAILQ_FIRST(&mp...); (vp = nvp) != NULL; nvp = TAILQ_NEXT(vp,...)) { if (vp->v_mount != mp) goto loop; MNT_IUNLOCK(mp); ... MNT_ILOCK(mp); } MNT_IUNLOCK(mp);
The code which takes vnodes off a mountpoint looks like this:
MNT_ILOCK(vp->v_mount); ... TAILQ_REMOVE(&vp->v_mount->mnt_nvnodelist, vp, v_nmntvnodes); ... MNT_IUNLOCK(vp->v_mount); ... vp->v_mount = something;
(Take a moment and try to spot the locking error before you read on.)
On a SMP system, one CPU could have removed nvp from our mountlist but not yet gotten to assign a new value to vp->v_mount while another CPU simultaneously get to the top of the traversal loop where it finds that (vp->v_mount != mp) is not true despite the fact that the vnode has indeed been removed from our mountpoint.
Fix:
Introduce the macro MNT_VNODE_FOREACH() to traverse the list of vnodes on a mountpoint while taking into account that vnodes may be removed from the list as we go. This saves approx 65 lines of duplicated code.
Split the insmntque() which potentially moves a vnode from one mount point to another into delmntque() and insmntque() which does just what the names say.
Fix delmntque() to set vp->v_mount to NULL while holding the mountpoint lock.
show more ...
|
#
3bc482ec |
| 03-Jul-2004 |
Tim J. Robbins <tjr@FreeBSD.org> |
By popular request, add a workaround that allows large (>128GB or so) FAT32 filesystems to be mounted, subject to some fairly serious limitations.
This works by extending the internal pseudo-inode-n
By popular request, add a workaround that allows large (>128GB or so) FAT32 filesystems to be mounted, subject to some fairly serious limitations.
This works by extending the internal pseudo-inode-numbers generated from the file's starting cluster number to 64-bits, then creating a table mapping these into arbitrary 32-bit inode numbers, which can fit in struct dirent's d_fileno and struct vattr's va_fileid fields. The mappings do not persist across unmounts or reboots, so it's not possible to export these filesystems through NFS. The mapping table may grow to be rather large, and may grow large enough to exhaust kernel memory on filesystems with millions of files.
Don't enable this option unless you understand the consequences.
show more ...
|
#
89c9c53d |
| 16-Jun-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Do the dreaded s/dev_t/struct cdev */ Bump __FreeBSD_version accordingly.
|
Revision tags: release/4.10.0_cvs, release/4.10.0 |
|
#
0ff34b5e |
| 15-Mar-2004 |
Robert Watson <rwatson@FreeBSD.org> |
Don't reject FAT file systems with a number of "Heads" greater than 255; USB keychains exist that use 256 as the number of heads. This check has also been removed in Darwin (along with most of the o
Don't reject FAT file systems with a number of "Heads" greater than 255; USB keychains exist that use 256 as the number of heads. This check has also been removed in Darwin (along with most of the other head/sector sanity checks).
show more ...
|
Revision tags: release/5.2.1_cvs, release/5.2.1 |
|
#
0ef0dd6f |
| 21-Feb-2004 |
Bruce Evans <bde@FreeBSD.org> |
Fixed a serious off by 1 error. The cluster-in-use bitmap was overrun by 1 u_int if the number of clusters was 1 more than a multiple of (8 * sizeof(u_int)). The bitmap is malloced and large (often
Fixed a serious off by 1 error. The cluster-in-use bitmap was overrun by 1 u_int if the number of clusters was 1 more than a multiple of (8 * sizeof(u_int)). The bitmap is malloced and large (often huge), so fatal overrun probably only occurred if the number of clusters was 1 more than 1 multiple of PAGE_SIZE/8.
show more ...
|
#
8bb386f2 |
| 17-Feb-2004 |
Tim J. Robbins <tjr@FreeBSD.org> |
If the "next free cluster" field of the FSInfo block is 0xFFFFFFFF, it means that the correct value is unknown. Since this value is just a hint to improve performance, initially assume that the first
If the "next free cluster" field of the FSInfo block is 0xFFFFFFFF, it means that the correct value is unknown. Since this value is just a hint to improve performance, initially assume that the first non-reserved cluster is free, then correct this assumption if necessary before writing the FSInfo block back to disk.
PR: 62826 MFC after: 2 weeks
show more ...
|
#
e9827c6d |
| 14-Feb-2004 |
Bruce Evans <bde@FreeBSD.org> |
Fixed some style bugs: - don't unlock the vnode after vinvalbuf() only to have to relock it almost immediately. - don't refer to devices classified by vn_isdisk() as block devices.
|
#
67406320 |
| 12-Feb-2004 |
Bruce Evans <bde@FreeBSD.org> |
MFffs (ffs_vfsops.c 1.227: clean up open mode bandaid). This reduces gratuitous differences with ffs a little.
|
Revision tags: release/5.2.0_cvs, release/5.2.0 |
|
#
a78c9287 |
| 29-Dec-2003 |
Bruce Evans <bde@FreeBSD.org> |
Fixed style bugs in rev.1.112. The bugs started with obscure magic numbers in comments (Apple PR numbers?) and didn't improve.
|
#
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
|
#
ca430f2e |
| 05-Nov-2003 |
Alexander Kabaev <kan@FreeBSD.org> |
Remove mntvnode_mtx and replace it with per-mountpoint mutex. Introduce two new macros MNT_ILOCK(mp)/MNT_IUNLOCK(mp) to operate on this mutex transparently.
Eventually new mutex will be protecting m
Remove mntvnode_mtx and replace it with per-mountpoint mutex. Introduce two new macros MNT_ILOCK(mp)/MNT_IUNLOCK(mp) to operate on this mutex transparently.
Eventually new mutex will be protecting more fields in struct mount, not only vnode list.
Discussed with: jeff
show more ...
|
#
cb9ddc80 |
| 02-Nov-2003 |
Alexander Kabaev <kan@FreeBSD.org> |
Take care not to call vput if thread used in corresponding vget wasn't curthread, i.e. when we receive a thread pointer to use as a function argument. Use VOP_UNLOCK/vrele in these cases.
The only c
Take care not to call vput if thread used in corresponding vget wasn't curthread, i.e. when we receive a thread pointer to use as a function argument. Use VOP_UNLOCK/vrele in these cases.
The only case there td != curthread known at the moment is boot() calling sync with thread0 pointer.
This fixes the panic on shutdown people have reported.
show more ...
|
#
492c1e68 |
| 01-Nov-2003 |
Alexander Kabaev <kan@FreeBSD.org> |
Temporarily undo parts of the stuct mount locking commit by jeff. It is unsafe to hold a mutex across vput/vrele calls.
This will be redone when a better locking strategy is agreed upon.
Discussed
Temporarily undo parts of the stuct mount locking commit by jeff. It is unsafe to hold a mutex across vput/vrele calls.
This will be redone when a better locking strategy is agreed upon.
Discussed with: jeff
show more ...
|
Revision tags: release/4.9.0_cvs, release/4.9.0 |
|
#
4ab2c8bd |
| 05-Oct-2003 |
Jeff Roberson <jeff@FreeBSD.org> |
- Check the XLOCK prior to inspecting v_data.
|
#
c13c04a4 |
| 04-Oct-2003 |
Jeff Roberson <jeff@FreeBSD.org> |
- Acquire the vnode interlock prior to droping the mntvnode_mtx. This does not eliminate races where the vnode could be reclaimed and end up with a NULL v_data pointer but Giant is protecting
- Acquire the vnode interlock prior to droping the mntvnode_mtx. This does not eliminate races where the vnode could be reclaimed and end up with a NULL v_data pointer but Giant is protecting us from that at the moment.
show more ...
|
#
c4f02a89 |
| 26-Sep-2003 |
Max Khon <fjoe@FreeBSD.org> |
- Support for multibyte charsets in LIBICONV. - CD9660_ICONV, NTFS_ICONV and MSDOSFS_ICONV kernel options (with corresponding modules). - kiconv(3) for loadable charset conversion tables support.
Su
- Support for multibyte charsets in LIBICONV. - CD9660_ICONV, NTFS_ICONV and MSDOSFS_ICONV kernel options (with corresponding modules). - kiconv(3) for loadable charset conversion tables support.
Submitted by: Ryuichiro Imura <imura@ryu16.org>
show more ...
|
#
c98a31ca |
| 12-Aug-2003 |
Tom Rhodes <trhodes@FreeBSD.org> |
Add a '-M mask' option so that users can have different masks for files and directories. This should make some of the Midnight Commander users happy.
Remove an extra ')' in the manual page.
PR: 3
Add a '-M mask' option so that users can have different masks for files and directories. This should make some of the Midnight Commander users happy.
Remove an extra ')' in the manual page.
PR: 35699 Submitted by: Eugene Grosbein <eugen@grosbein.pp.ru> (original version) Tested by: simon
show more ...
|
#
a8d43c90 |
| 26-Jul-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add a "int fd" argument to VOP_OPEN() which in the future will contain the filedescriptor number on opens from userland.
The index is used rather than a "struct file *" since it conveys a bit more i
Add a "int fd" argument to VOP_OPEN() which in the future will contain the filedescriptor number on opens from userland.
The index is used rather than a "struct file *" since it conveys a bit more information, which may be useful to in particular fdescfs and /dev/fd/*
For now pass -1 all over the place.
show more ...
|
#
ae620d44 |
| 29-Jun-2003 |
Tim J. Robbins <tjr@FreeBSD.org> |
XXX Copy workaround from UFS: open device for write access even if the user requests a read-only mount. This is necessary because we don't do the VOP_OPEN again if they upgrade a read-only mount to r
XXX Copy workaround from UFS: open device for write access even if the user requests a read-only mount. This is necessary because we don't do the VOP_OPEN again if they upgrade a read-only mount to read-write.
Fixes lockup when creating files on msdosfs mounts that have been mounted read-only then upgraded to read-write. The exact cause of the lockup is not known, but it is likely to be the kernel getting stuck in an infinite loop trying to write dirty buffers to a device without write permission.
Reported/tested by andreas, discussed with phk.
show more ...
|
#
7652131b |
| 12-Jun-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Initialize struct vfsops C99-sparsely.
Submitted by: hmp Reviewed by: phk
|