Age | Commit message (Collapse) | Author |
|
Softdep uses it's own "getdirtybuf" which has (always) potentially
slept - this wasn't noticable when buffers were static and never freed,
however now that the bufs it was trying to busy is might have been
written out and freed by someone else we can see use-after free if we
fast-recycle buffers. We fix this by either re-trying operations
or ensuring we don't use the buf pointer after waiting.
ok guenther@ (in coimbra)
|
|
|
|
- Avoid using copyinstr() without checking the return value.
- sys_mount() has already copied the path in, so pass this to the
filesystem mount code so that it does not have to copy it in again.
- Avoid copyinstr()/bzero() dance when we can simply bzero() and strlcpy().
ok krw@
|
|
rlimit, then a write that would take it over the limit should be
clamped, making it a partial write.
ok beck@
|
|
when b_error has not already been set to something more informative,
e.g. EROFS.
DO check the result of ffs_sbupdate() and error out of a mount()
call when ffs_sbupdate() reports EROFS while attempting a rw mount.
Letting RW mounts proceed regardless of EROFS led to crashes and
usb problems for Oliver Seufer while using the RW/RO switches on
some usb devices. Fix developed using devices kindly supplied by
Oliver & Co.
ok miod@
|
|
of per-rthread. Handling of per-thread tick and runtime counters
inspired by how FreeBSD does it.
ok kettenis@
|
|
ok miod
|
|
ok deraadt@
|
|
softdeps almost totally unusable;
|
|
limit is reached.
Added twist, clamp the max_softdeps to 64 as it is still
possible to exhaust bufkva.
|
|
The basic analysys is correct, however, the problem in this case is that by forcing
softdept to synchornously flush everything across *all* softdep filesystems we cause a
huge performance problem when we take a 3 second pause and slam everything synchronously.
the right way to fix this is to fix the speedup_softdep code, not make the filesystem
go synchronous when we hit a limit - if we are doing that we may as well not run softdep
it will be faster.
ok deraadt@
|
|
|
|
|
|
|
|
re-initialized before use is silly. ffs shouldn't know of or worry about the
physical disk sector size.
ok thib@
|
|
prompted by tedu@
|
|
|
|
when softdep runs out, since it does not use it. In the nfsiod case, that
ucred is pointless, and ffs_fsync does not use it in any case.
This does not conflict with thib's plans moving forward
ok thib
|
|
thus possibly consuming all of our available kva mapping buffers for
deps. Diff and analysis actually comes from Pedro Martelleto (thanks!)
tested by me and thib
ok thib@, art@
|
|
and return EOPNOTSUPP directly from the VOP_* functions.
Filesystems should, at some point fill in every function
in the vop_default struct so we can get rid of the 'if'
statements in VOP_*.
|
|
|
|
unrelated, and his alpha is much happier now.
OK deraadt@
|
|
have been resolved.
|
|
vector setup that has questionable features (that have, as far as I can
tell never been used in practice, atleast not in OpenBSD), remove all
the gunk and favor a simple struct full of function pointers that get
set directly by each of the filesystems.
Removes gobs of ugly code and makes things simpler by a magnitude.
The only downside of this is that we loose the vnoperate feature so
the spec/fifo operations of the filesystems need to be kept in sync
with specfs and fifofs, this is no big deal as the API it self is pretty
static.
Many thanks to armani@ who pulled an earlier version of this diff to
current after c2k10 and Gabriel Kihlman on tech@ for testing.
Liked by many. "come on, find your balls" deraadt@.
|
|
Help by jmc, earlier version OK thib krw
|
|
|
|
|
|
mounted by specifying a disklabel UID followed by a dot and a partition.
For example:
mount -t ffs 0123456789abcdef.a /mnt
ok otto@
|
|
gets rid of #include <sys/dkio.h> in sys/ioctl.h and adds #include
<sys/dkio.h> to the places that actually want and use the disk
ioctls.
this became an issue when krw@'s X build failed when he was testing
a change to dkio.h.
tested by krw@
help from and ok miod@
|
|
Feedback from miod@ and kettenis@.
ok beck@
|
|
Found by LLVM/Clang Static Analyzer.
ok tedu@ thib@
|
|
locking fixes. Tweak cd9660 code to be the same as everywhere else,
no functional change.
ok beck@
|
|
"sure" deraadt@, ok otto@
|
|
- minor formatting
ok oga@ otto@
|
|
ok otto@
|
|
prodded by and ok thib@
agreed by art@ and blambert@
|
|
which is exactly what the macro does.
Macro's that are nothing more then:
#define FUNCTION(arg) function(arg)
are almost always pointless and should go away.
OK blambert@
Agreed by many.
|
|
where doing bremfree() befure calling buf_acquire().
This is causing us headache pinning down a bug that showed up
when deraadt@ too cvs to current, and will have to be done
anyway as a preperation for backouts.
OK deraadt@
|
|
Just put it in the buf_acquire function.
oga@ ok
|
|
ok oga
|
|
abusing the DIP() macro which is an rvalue and can't be used
as an lvalue. No functional changes.
ok tedu@ pedro@
|
|
No binary change.
ok tedu@
My 1000th commit!
|
|
getpagesize() elsewhere. otto, please fix correctly after
|
|
automatic symbol that has this information. PAGE_SIZE is simply not
portable, or even fixed on some systems.
ok otto
|
|
millert@
|
|
flag to the pool_get call.
ok art@, krw@
|
|
512) bytes; ffs is inextricably tied to using b_blkno and disklabel
always uses sectorsize units.
Thus use DEV_BSIZE units for all fields describing ffs filesystems
and convert to/from sectors where required. This enables the creation
and use of ffs filesystems on non-512 byte sectorsize devices.
This diff allows i386 and sgi (the two test platforms) to find
disklabels that are not on a sectorsize boundary. Same change to
further archs coming.
This is a no-op on 512-byte sectorsize devices.
This work triggered by jsing@'s need to create ffs filesystems on
sgi cdroms so we can create cdrom install media for sgi.
sgi testing by jsing@
ok jsing@ pedro@ "looks sane" beck@ weingart@
|
|
block# too ensure proper casting.
From FreeBSD;
ok miod@, pedro@, blambert@
|
|
|
|
|