Revision tags: v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3 |
|
#
dae65060 |
| 20-Oct-2019 |
zrj <rimvydas.jasinskas@gmail.com> |
<sys/sysref.h>: Switch to lighter <sys/_malloc.h> header.
* Make <sys/sysref2.h> a kernel only header. * Remove sys/types.h includes that follow <sys/param.h> in devfs(5). * Add sys/malloc.h incl
<sys/sysref.h>: Switch to lighter <sys/_malloc.h> header.
* Make <sys/sysref2.h> a kernel only header. * Remove sys/types.h includes that follow <sys/param.h> in devfs(5). * Add sys/malloc.h includes where it is actually used in sources.
While there, minor whitespace cleanup.
show more ...
|
Revision tags: v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2 |
|
#
46acecf8 |
| 28-Feb-2019 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Add /dev/part-by-label
* The DragonFly disklabel has a 'label' field which accepts up to a 63 byte ascii label.
* When this field is not empty, the kernel will now create a "/dev/part-
kernel - Add /dev/part-by-label
* The DragonFly disklabel has a 'label' field which accepts up to a 63 byte ascii label.
* When this field is not empty, the kernel will now create a "/dev/part-by-label/<label>.<part>" alias.
For example, if the label is FUBAR and you create a label with partitions 'a', 'b', and 'd', then you will get:
# ls /dev/part-by-label FUBAR.a FUBAR.b FUBAR.d
* WARNING! Duplicate labels will replace each other, so the label that shows up will be non-deterministic.
Suggested-by: Aaron LI
show more ...
|
Revision tags: v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0, v5.3.0, v5.2.0rc |
|
#
0a319615 |
| 10-Mar-2018 |
Matthew Dillon <dillon@apollo.backplane.com> |
disklabel64 - Make disktype optional, fix alignment bug
* Make the disktype optional, use 'auto' automatically
* Fix a bug in the kernel's l64_makevirginlabel() calculation. It was not properly c
disklabel64 - Make disktype optional, fix alignment bug
* Make the disktype optional, use 'auto' automatically
* Fix a bug in the kernel's l64_makevirginlabel() calculation. It was not properly calculating the alignment relative to the physical disk.
* Refactor some of the documentation
* Refactor examples
Submitted-by: Aaron LI <aly@aaronly.me>
show more ...
|
Revision tags: v5.0.2, v5.0.1, v5.0.0 |
|
#
bf20632c |
| 01-Oct-2017 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Remove geteblk()
* Remove geteblk(), the last B_MALLOC buffer cache API. Generally use getpbuf_mem() instead.
|
Revision tags: v5.0.0rc2, v5.1.0, v5.0.0rc1, v4.8.1, v4.8.0, v4.6.2, v4.9.0, v4.8.0rc, v4.6.1, v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0, v4.4.3, v4.4.2, v4.4.1, v4.4.0, v4.5.0, v4.4.0rc, v4.2.4, v4.3.1, v4.2.3 |
|
#
965b839f |
| 04-Jul-2015 |
Sascha Wildner <saw@online.de> |
Use roundup2() from <sys/param.h> in a number of places.
|
Revision tags: v4.2.1, v4.2.0, v4.0.6, v4.3.0, v4.2.0rc, v4.0.5, v4.0.4 |
|
#
a06d536b |
| 03-Mar-2015 |
Matthew Dillon <dillon@apollo.backplane.com> |
dmsg - Stabilization work
* Add a refs field to dmsg_state and kdmsg_state for retention and disposal.
* Separate out the tracking of state->subq and the state RB trees.
* Greatly simplify the i
dmsg - Stabilization work
* Add a refs field to dmsg_state and kdmsg_state for retention and disposal.
* Separate out the tracking of state->subq and the state RB trees.
* Greatly simplify the iocom shutdown code and functions related to handling communications failures. When iterating states for shutdown, which requires simulating a received failure message, we can now simply iterate via state->subq.
* Greatly simplify how the simulated failures are generated and handled (See dmsg_msg_simulate_failure()). This is probably the most complex part of the library.
* Fix a memory leak in kern_dmsg.c.
* Replace xdisk's per-softc token with a lockmgr lock. Atomicy has to be guaranteed across blocking conditions in certain cases and it was easier to simply use a lock for everything.
Cleanup the locking.
* Ripout the shutdown check in the I/O path, which can deadlock the disk management threads. This will need to be revisited as it means that /dev/xa* and /dev/serno* devices remain in /dev after a link failure even when there are no opens on the device.
* Add the B_FAILONDIS flag to struct buf. This flag allows the disk probe code to tell xdisk that it is ok for the I/O to fail, allowing xdisk to discard I/Os that would otherwise block or deadlock the disk probe code when the related network connection is lost.
show more ...
|
Revision tags: v4.0.3, v4.0.2, v4.0.1, v4.0.0, v4.0.0rc3, v4.0.0rc2, v4.0.0rc, v4.1.0, v3.8.2, v3.8.1, v3.6.3, v3.8.0, v3.8.0rc2, v3.9.0, v3.8.0rc, v3.6.2, v3.6.1, v3.6.0, v3.7.1, v3.6.0rc, v3.7.0, v3.4.3, v3.4.2, v3.4.0, v3.4.1, v3.4.0rc, v3.5.0, v3.2.2, v3.2.1, v3.2.0, v3.3.0, v3.0.3, v3.0.2 |
|
#
2fa1a664 |
| 27-Feb-2012 |
Alex Hornung <ahornung@gmail.com> |
disklabel - add new freedisklabel op
* The freedisklabel op is simply used to free the disklabel stored in a disklabel_t (in a diskslice).
* It deallocates the memory and sets the pointer to N
disklabel - add new freedisklabel op
* The freedisklabel op is simply used to free the disklabel stored in a disklabel_t (in a diskslice).
* It deallocates the memory and sets the pointer to NULL.
show more ...
|
Revision tags: v3.0.1, v3.1.0, v3.0.0 |
|
#
86d7f5d3 |
| 26-Nov-2011 |
John Marino <draco@marino.st> |
Initial import of binutils 2.22 on the new vendor branch
Future versions of binutils will also reside on this branch rather than continuing to create new binutils branches for each new version.
|
Revision tags: v2.12.0, v2.13.0, v2.10.1, v2.11.0, v2.10.0, v2.9.1, v2.8.2, v2.8.1, v2.8.0, v2.9.0, v2.6.3, v2.7.3, v2.6.2, v2.7.2, v2.7.1, v2.6.1, v2.7.0, v2.6.0, v2.5.1, v2.4.1, v2.5.0, v2.4.0 |
|
#
e5db8356 |
| 20-Aug-2009 |
Matthew Dillon <dillon@apollo.backplane.com> |
disklabel64 - Fix DIOCSDINFO64, DIOCWDINFO64 bugs
* A loop iterator was using the wrong variable, causing the disklabel operation to fail and potentially also (on 64-bit boxes) crashing the box.
|
#
aec8eea4 |
| 04-Aug-2009 |
Matthew Dillon <dillon@apollo.backplane.com> |
DEVS - rollup - kernel core
* Remove dead code.
* Reference count adjustments for devfs.
* DEVFS integration into kernel core, including automatic probe/reprobe.
* Dummy vnops support for depreca
DEVS - rollup - kernel core
* Remove dead code.
* Reference count adjustments for devfs.
* DEVFS integration into kernel core, including automatic probe/reprobe.
* Dummy vnops support for deprecated VCHR and VBLK devices in filesystems.
* Silence MBR warnings for VN with DSO_MBRQUIET flag.
* Change rootdevnames for CD boot. DEVFS provides e.g. "cd0", "cd0s0". The old compatibility-slice partition "c" names are no longer generated and have been removed.
Submitted-by: Alex Hornung <ahornung@gmail.com>, and Matthew Dillon
show more ...
|
#
cd29885a |
| 01-Aug-2009 |
Matthew Dillon <dillon@apollo.backplane.com> |
DEVFS - Bring in Alex's GSOC kernel adjustments.
This is a rollup commit bringing in Alex Hornung's GSOC adjustments to the main kernel codebase for DEVFS.
Submitted-by: Alex Hornung <ahornung@gmai
DEVFS - Bring in Alex's GSOC kernel adjustments.
This is a rollup commit bringing in Alex Hornung's GSOC adjustments to the main kernel codebase for DEVFS.
Submitted-by: Alex Hornung <ahornung@gmail.com>
show more ...
|
#
ae8e83e6 |
| 15-Jul-2009 |
Matthew Dillon <dillon@apollo.backplane.com> |
MPSAFE - tsleep_interlock, BUF/BIO, cluster, swap_pager.
* tsleep_interlock()/tsleep() could miss wakeups during periods of heavy cpu activity. What would happen is code inbetween the two calls
MPSAFE - tsleep_interlock, BUF/BIO, cluster, swap_pager.
* tsleep_interlock()/tsleep() could miss wakeups during periods of heavy cpu activity. What would happen is code inbetween the two calls would try to send an IPI (say, issue a wakeup()), but while sending the IPI the kernel would be forced to process incoming IPIs synchronous to avoid a deadlock.
The new tsleep_interlock()/tsleep() code adds another TAILQ_ENTRY to the thread structure allowing tsleep_interlock() to formally place the thread on the appropriate sleep queue without having to deschedule the thread. Any wakeup which occurs between the interlock and the real tsleep() call will remove the thread from the queue and the later tsleep() call will recognize this and simply return without sleeping.
The new tsleep() call requires PINTERLOCKED to be passed to tsleep so tsleep() knows that the thread has already been placed on a sleep queue.
* Continue making BUF/BIO MPSAFE. Remove B_ASYNC and B_WANT from buf->b_flag and add a new bio->bio_flags field to the bio. Add BIO_SYNC, BIO_WANT, and BIO_DONE. Use atomic_cmpset_int() (aka cmpxchg) to interlock biodone() against biowait().
vn_strategy() and dev_dstrategy() call semantics now require that synchronous BIO's install a bio_done function and set BIO_SYNC in the bio.
* Clean up the cluster code a bit.
* Redo the swap_pager code. Instead of issuing I/O during the collection, which depended on critical sections to avoid races in the cluster append, we now build the entire collection first and then dispatch the I/O. This allows us to use only async completion for the BIOs, instead of a hybrid sync-or-async completion.
show more ...
|
Revision tags: v2.3.2, v2.3.1, v2.2.1, v2.2.0, v2.3.0, v2.1.1, v2.0.1 |
|
#
c34665ce |
| 20-Jul-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
Remove the requirement that calls to vn_strategy() be limited to the DMA capabilities of the underlying device. In particular this fixes issues with NATA which does not break up large requests when
Remove the requirement that calls to vn_strategy() be limited to the DMA capabilities of the underlying device. In particular this fixes issues with NATA which does not break up large requests when operating on hardware with limited DMA capabilities. The old ATA driver did break up requests.
vn_strategy() -> spec_strategy(). spec_strategy(), which converts vnode strategy calls to device strategy calls, now checks the maximum DMA capability of the device and breaks up large requests to fit.
Old IDE hardware often can't even transfer a whole 64KB of data and there are many subsystems in the kernel which assume that >= 64KB can be transfered in a single I/O. Subsystems include: The pageout code, the buffer clustering code, AIO, and the swapin/swapout code.
Reported-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx>
show more ...
|
#
eb484664 |
| 19-Jun-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
Rename d_obj_uuid to d_stor_uuid to conform to the naming convention being used in other structures.
|
#
18cb7add |
| 19-Jun-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
Make some adjustments to clean up structural field names. Add type and storage uuid's to the partinfo structure for the DIOCGPART ioctl and load the fields up for GPT slices and disklabel64 partitio
Make some adjustments to clean up structural field names. Add type and storage uuid's to the partinfo structure for the DIOCGPART ioctl and load the fields up for GPT slices and disklabel64 partitions.
show more ...
|
#
0ffe40b3 |
| 19-Jun-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
Implement non-booting support for the DragonFly 64 bit disklabel:
* Add full kernel support. Both 32 and 64 bit labels will be probed. * Add a new program, disklabel64, which allows you to create a
Implement non-booting support for the DragonFly 64 bit disklabel:
* Add full kernel support. Both 32 and 64 bit labels will be probed. * Add a new program, disklabel64, which allows you to create and edit the new disklabel. * Add some logic to prevent foot shooting.
DragonFly's 64 bit disklabels start at byte offset 0 on the disk slice or GPT partition and operate in a slice-relative fashion. No translation is required when going from on-disk to in-core or vise-versa, unlike the existing 32 bit disklabels. 512 bytes at the beginning of the label are reserved for legacy boot code. Specifically, the label starts at sector 0, NOT sector 1, which means its location on the disk is the same regardless of the sector size.
The label has a UUID to uniquely identify the storage and a type and object uuid for each partition. All location specifications are 64 bit byte offsets, NOT logical blocks. The label enforces an alignment requirement for label-related I/O and partitions which defaults to 4K regardless of the sector size. This makes the label 100% portable across media with different sector sizes within the constraints of the alignment requirement.
All partitions are specified using byte offsets and sizes, constrained by the alignment requirement, relative to the base of the label (i.e. offset 0 in the slice). disklabel64 will adjust the offsets for display purposes to be relative to the partition table area. The label headers, partition table, and boot2 areas come BEFORE the partition table area and partitions which overlap any of those objects are not allowed.
By default, a virgin 64 bit disklabel will reserve 32K for boot2. As of this writing, boot1 and boot2 blocks have not yet been implemented.
show more ...
|
#
ba0cc1ab |
| 17-Jun-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
Disklabel separation work - Generally shift all disklabel-specific procedures for the kernel proper to a new source file, subr_disklabel32.c. Move the DTYPE_ and FS_ defines out of sys/disklabel.h an
Disklabel separation work - Generally shift all disklabel-specific procedures for the kernel proper to a new source file, subr_disklabel32.c. Move the DTYPE_ and FS_ defines out of sys/disklabel.h and into a new header files sys/dtype.h
Make adjustments to the uuids file, renaming "DragonFly Label" to "DragonFly Label32" and creating a "DragonFly Label64" uuid.
show more ...
|
#
4921cba1 |
| 20-Feb-2010 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - disklabel64 - Increase partition start alignment to 1 megabyte.
* Someone suggested that instead of using a 32K alignment we use a larger alignment. I forgot who suggested it but after t
kernel - disklabel64 - Increase partition start alignment to 1 megabyte.
* Someone suggested that instead of using a 32K alignment we use a larger alignment. I forgot who suggested it but after thinking about it a bit and messing around with swapcache on a SSD I decided it was a good idea.
SSDs using MLC flash have a physical block size of 128K. SLC flash has a physical block size of 64K. Most typical cluster operations in DragonFly are 64K to 128K but clustered writes are often linear on disk leading to larger linear writes from the point of view of the physical drive's write cache.
swapcache and swap operation tends to have even larger write linearities and write amplification effects on SSDs can be reduced to better than 1:2 (verses the 1:10 the vendor typically assumes).
* Virgin disklabel64's layed down by the kernel will now align the start of the partition space to 1MB (1024 * 1024). In for a penny, in for a pound.
* Adjust the manual page and note the benefits of using a larger alignment, particularly when swapcache is used with SSDs.
show more ...
|
#
a3123c28 |
| 14-Feb-2010 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - disklabel64 - Adjust partition base to be physically aligned
* When creating a new pristine label the kernel will align the partition base to the physical drive instead of to the logical
kernel - disklabel64 - Adjust partition base to be physically aligned
* When creating a new pristine label the kernel will align the partition base to the physical drive instead of to the logical slice.
This is to accomodate fdisk/slice setups which do not align the slice properly (which is nearly all of them).
show more ...
|