summaryrefslogtreecommitdiff
path: root/sys/dev/dm/dm_target.c
AgeCommit message (Collapse)Author
2021-08-21fix typos in sys/dev/dm code comments and documentation.andvar
also remove some trailing space in documentation.
2020-07-08Adapt to proplib API chanages.thorpej
2020-01-21dm: #if0 target's ->upcall() handlertkusumi
This is part of NetBSD's dm design, but unimplemented (all handlers return 0) and also unused.
2020-01-05dm: Add dm-delay targettkusumi
Ported from DragonFlyBSD, but this target had originally existed in Linux kernel. See below for details. https://www.kernel.org/doc/Documentation/device-mapper/delay.txt Due to "tick" in hz(9) not working (which results in dmdlthread spinning forever in _submit_queue() without dp extracted from delayed list and queued into submit list), this hasn't been hooked to dm.kmod yet. taken-from: DragonFlyBSD
2020-01-02dm: Add dm-flakey targettkusumi
Ported from DragonFlyBSD, but this target had originally existed in Linux kernel. See below for details. https://www.kernel.org/doc/Documentation/device-mapper/dm-flakey.txt Due to two technical issues, this hasn't been hooked to dm.kmod yet. 1) "tick" in hz(9) not working. 2) Unable to use ->b_private in nestiobuf callback when it's already used for mbp (see HAS_BUF_PRIV2). taken-from: DragonFlyBSD
2019-12-23dm: Make target's ->table() optionaltkusumi
Since ->info() (counter part of ->table() in the original dm design in Linux kernel in .status where both INFO and TABLE are optional) is an optional handler, make ->table() optional as well. Some targets don't have anything to do in ->table() just as in ->info(). taken-from: DragonFlyBSD
2019-12-21dm: Fix dm-stripe's "status" output formattkusumi
As mentioned in "dm: Don't try to implement "status" as subset of "table"", dm-stripe in NetBSD doesn't have correct "status" output format. Implement ->info() to sync with Linux kernel. Note that num_error for stripe device isn't implemented yet. taken-from: DragonFlyBSD
2019-12-21dm: Remove target's ->deps() by implementing deps in dm coretkusumi
Retrieving device dependencies doesn't need to be target specific. The reason it currently needs ->deps() is because dm core doesn't have data structure that allows table to walk through target's underlying devices. Add struct dm_mapping to be able to do this, and remove ->deps()'s from targets which basically do the same thing. =====(A) before this commit table | [dm core] ------------------------------------------------------- | pdev pdev pdev [dm targets] v ^ ^ ^ target----/---------/---------/ (void*) =====(B) this commit table---->mapping-->mapping-->mapping-->... | | | | | v v v [dm core] ------------------------------------------------------- | pdev pdev pdev [dm targets] v ^ ^ ^ target----/---------/---------/ (void*) taken-from: DragonFlyBSD
2019-12-19dm: u_{int,long} -> unsigned {int,long}tkusumi
2019-12-16dm: Enable dm-error and dm-zero targettkusumi
Add these two targets to dm.kmod. These are generally available in Linux and DragonFlyBSD, so enable them in NetBSD as well.
2019-12-15dm: Style cleanups (no functional changes)tkusumi
2019-12-15dm: Make targets' ->sync() optionaltkusumi
Apparently some targets have nothing to sync, so make it optional.
2019-12-15dm: Make targets' ->secsize() optionaltkusumi
and make a caller assume secsize 0 if ->secsize not present. This allows a dummy function to be removed which was added in "dm: Add dummy target ->sync()/->secsize() to prevent panic on modload(8)".
2019-12-15dm: Rename targets' ->status() to ->table() given ->info() existstkusumi
Since now that dm targets in NetBSD have ->info() for "status", ->status() should be renamed to ->table() for "table", given how dm target status was originally designed in Linux kernel. taken-from: DragonFlyBSD
2019-12-14dm: Remove void casts of function callstkusumi
Use of void casts in dm is not consistent, just get rid of them.
2019-12-13dm: Don't KASSERT() target handlerstkusumi
Having assertions here causes panic if target is missing anything as shown in "dm: Add dummy target ->sync()/->secsize() to prevent panic on modload(8)". Instead just return EINVAL if a handler(s) isn't implemented. taken-from: DragonFlyBSD
2019-12-08dm: Unbreak compilation of kernel modulestkusumi
The dm kernel modules (MK_DM_TARGETS enabled in sys/modules/dm/Makefile) have been broken. Unbreak the build.
2019-12-07dm: Fix strange pointer declarationstkusumi
Should be "type *name" or "type* name", but not "type * name". taken-from: DragonFlyBSD
2019-12-07dm: Simplify list eviction codetkusumi
taken-from: DragonFlyBSD
2019-12-06dm: Don't ignore dm_target_alloc() argumenttkusumi
dm_target_alloc() is supposed to be copying the name argument to its ->name. taken-from: DragonFlyBSD
2019-12-04dm: style + whitespace + indentation fixestkusumi
No functional changes.
2019-12-03dm: Make global dm locks statictkusumi
These are all per-file locks which protect dev/pdev/target structure. taken-from: DragonFlyBSD
2018-01-05use some size_t, add whitespace between functions, rcsids.christos
2014-10-18src is too big these days to tolerate superfluous apostrophes. It'ssnj
"its", people!
2011-08-28readd assertions noew with the correct structahoka
im wondering why the module cflags didnt warn about this obvious typo
2011-08-27Revert last, assertions on undefined variables don't make sense.joerg
2011-08-27Add a sanity check for missing functions in dmtahoka
2010-12-23make dm aware of physical sector sizes.mlelstv
For aggregates of multiple disks we use the largest sector size from all disks. For standard power-of-2 sizes this is the same as the least common multiple. We still require proper alignment of the targets in the mapping table. ok by haad@
2010-08-21Update the rest of the kernel to conform to the module subsystem's newpgoyette
locking protocol.
2010-05-18Add support for DIOCCACHESYNC ioctl for dm devices. Add new sync functionhaad
pointer to dm_target_t because that is the only part of dm which know real block device. disk_ioctl_switch parses whole device table and for every entry it calls particular sync routine which propagates DIOCCACHESYNC to real disk. While I was here implement some KNF fixes and remove unneeded symbols from dm.h. Problem reported on port-xen@ by Hugo Silva.
2010-01-04Indent files remove unnecessary blank lines, white spaces and KNFize code.haad
2009-09-09Fix bug in kmem_alloc/kmem_free of params string. Params string washaad
allocated with length DM_MAX_PARAMS_SIZE and released with strlen + 1 size. Disable KM_NOSLEEP allocation because we do not need them here there is nothing critical in ioctl part of dm driver. Bug reported by jak@.
2009-08-16fix a comment typo.yamt
2009-02-20Call dm_target_busy only on properly autoloaded module.haad
2009-02-19In NetBSD our target modules are called with prefix dm_target_. Add thishaad
prefix to target module name when loading module, lvm2tools uses linux target names e.g. zero not dm_target_zero.
2009-02-19Add support for autoloading of device-mapper targets modules. Addhaad
dm_target_autoload function which tries to load target module. Fix two deadlocks in dm_table_load_ioctl error path(I forgot to call dm_dev_unbusy).
2009-01-02Add stubs for mirror target, too. This target does nothing for now, but lvmhaad
tools support mirror target and trying to create LV with mirrorred backend caused panic in dm_table_load_ioctl.
2009-01-02Add stripe target functions stubs. Stripe target must be present in dm driverhaad
because without it lvm2tools will not create LVsi and eventualy panic system. Problem reported by agc@.
2008-12-21Add support for loading dm targets as separate modules. All targets excepthaad
linear can be loaded as module. Module is not loaded when there is target with similar name already. Zero and error targets aresimple examples how can be all future targets written to support dynamic loading. Target can't be unloaded until there is at least one user.
2008-12-19Add infrastructure needed to load device-mapper targets as modules.haad
Targets wasn't converted yet and at least snapshot target will be converted in a near future.
2008-12-19Merge the haad-dm branch to -current. This branch adds LVM functionality tohaad
the base NetBSD system. It uses Linux LVM2 tools and our BSD licensed device-mapper driver. The device-mapper driver can be used to create virtual block devices which maps virtual blocks to real with target mapping called target. Currently these targets are available a linear, zero, error and a snapshot (this is work in progress and doesn't work yet). The lvm2tools adds lvm and dmsetup binary to based system, where the lvm tool is used to manage and administer whole LVM and the dmestup is used to communicate iwith device-mapper kernel driver. With these tools also a libdevmapper library is instaled to the base system. Building of tools and driver is currently disable and can be enabled with MKLVM=yes in mk.conf. I will add sets lists and rc.d script soon. Oked by agc@ and cube@.