Home | History | Annotate | Download | only in udf
History log of /src/sys/fs/udf/udf_strat_rmw.c
RevisionDateAuthorComments
 1.31  27-Jun-2023  reinoud Convert UDF file system code from the depricated tsleep(9)/wakeup(9) to the MP
friendly condvar(9). No functional change intended.
 1.30  15-Jan-2022  msaitoh s/adressing/addressing/
 1.29  21-Aug-2021  andvar s/helt/held+s/eroneously/erroneously/+s/splitted/split/+s/recommented/recommended/
 1.28  24-May-2016  reinoud Cleanup VAT writout. To prevent issues with the sequential writing strategy
trying to write on blocks that are lost due to the synchronisation, don't just
bluntly do synchronize device caches, but split out on strategies.
 1.27  06-Oct-2015  hannken Remove dubious vhold()/holdrele() from write_logvol_dscr strategies.

The udf_node already gets locked with UDF_LOCK_NODE() and udf_reclaim()
will wait for the lock to clear.
 1.26  12-Sep-2015  christos diagused some variables.
 1.25  12-Sep-2015  christos remove identity assignment, found by brainy.
 1.24  30-Oct-2013  mrg branches: 1.24.6;
used __diagused where appropriate.
 1.23  18-Oct-2013  christos fix unused variable warnings
 1.22  08-Jul-2009  reinoud branches: 1.22.12; 1.22.22; 1.22.26;
Fix alternating oddity in RMW strategy. Even when in the reading state it
would push out elements to fillup-read only when the time had come for them.
This could then trickle feed the read queue slowly, but fast enough to prevent
it from switching state.
 1.21  06-Jul-2009  reinoud Re-implement read-modify-write backend strategy. This version is a lot more
clean locking-wise and will consume less CPU power on needless moving-around.
 1.20  02-Jul-2009  reinoud Enhance dumping on buffer screwup. Also prevent races or invalid combinations
to exist for ecclines.
 1.19  20-May-2009  reinoud Retire IN_CALLBACK_ULK flagging since its not used anymore and the old
assertions on it would trigger without cause.
 1.18  08-Feb-2009  reinoud branches: 1.18.2;
Implement session closure on sequential media when requested on mount. It will
allow CD-ROM/DVD-ROM/DB-ROM drives to read the media while still allowing them
to be appended later. It can also be seen as a way to make mountable
snapshots.
 1.17  13-Jan-2009  yamt g/c BUFQ_FOO() macros and use bufq_foo() directly.
 1.16  16-Dec-2008  pooka The great QUOTA purge of '08: get rid of those #ifdef QUOTA and
#include "opt_quota.h" which do exactly nothing. Speeds up kernel
compilation by 1.375*10^-20001 seconds. But leave the most moxious
comment in msdosfs_vfsops untouched.
 1.15  09-Dec-2008  reinoud Fix two buf_init()'s that are not needed since they were already initialised
by getiobuf().

Also remove ancient IPL_BIO reference from the time it was called from
interrupt context instead of the current soft interrupt.
 1.14  06-Dec-2008  reinoud UDF_SHED_FREE state is now also handled by the state machine, so DO signal it.
Free'd up ecclines can now far more quicker be recycled.
 1.13  05-Dec-2008  reinoud Two fold commit:

1) Enhance write speed significantly on RMW media like CD-RW, DVD-RW but also
on the DVD+RW and all other ECC blocked media. Significant speedups of access
to the device for say compilation on the DVD. Streaming copy is also still at
maximum speed though vast amounts of directory copy work can show side effects
that appear it to slow down but are actually logical when you consider that
most small files are embedded into the descriptors itself.

2) explicit wait for the created RMW thread to spinup
 1.12  15-Nov-2008  reinoud Specify blobsize as the `pagingsize' of the eccline blob pool. This will relax
the requirements of the pagingsize.
 1.11  01-Nov-2008  reinoud Introduce an extra state to wich all pushed ecclines are pushed on. This
extra state has a holding time in wich no writeouts will be done
effectively collecting more sectors before its even sheduled for writing.
 1.10  01-Nov-2008  reinoud Explicitly set buffer's block numbers. Blocks were always read/written
correctly only the sheduling could go less than optimal.
 1.9  29-Aug-2008  reinoud branches: 1.9.2; 1.9.4;
Remove all remaining traces of UDF_READWRITE since it has been removed as
option.
 1.8  07-Aug-2008  reinoud Don't panic on read-errors but set flag that the packet is doomed. Its not
clear if i could read the individual sectors correctly since the entire
read packet is also one big ECC block.
 1.7  06-Aug-2008  reinoud Rewrite allocation scheme's determination and implementation replacing the
old somewhat naive selection scheme that didn't allow different allocation
settings for nodes, directory information (FIDs) and data.

Also fix some curious side-effects of atime updates on RMW devices.
 1.6  28-Jul-2008  reinoud Streamline allocation to prepare it for metadata partition. Also add
preliminary Metadata partition write support but its disabled still since
its not finished yet and not functioning correctly. All other formats are
checked and should work fine.
 1.5  07-Jul-2008  reinoud Support for allocation extents descriptor writing to allow for arbitrary
heavily fragmented files.

Also fixing some (rare) allocation bugs and function name streamlining.

Tested on harddisc, CD-RW and CD-R i.e. all three basic backend classes.
 1.4  17-Jun-2008  reinoud branches: 1.4.2; 1.4.4;
Change comments on marking buffer busy.
 1.3  15-May-2008  reinoud branches: 1.3.2; 1.3.4; 1.3.6; 1.3.8;
Introduce new UDF debug class and split rmw strategy debugging prints.
 1.2  15-May-2008  reinoud Add accidently removed lines when i pruned the code for release. Important
update.
 1.1  14-May-2008  reinoud Import writing part of the UDF file system making optical media like CD's
and DVD's behave like floppy discs. Writing is supported upto and including
version 2.01; version 2.50 and 2.60 will follow.

Also extending the UDF implementation to support symbolic links and
hardlinks.

Added are the mmcformat(8) tool to format rewritable CD/DVD discs and
newfs_udf(8).

Limitations:
all operations can be performed on the file system though the
sheduling is currently optimised for archiving workloads.

mv(1)/rename(2) is currently only implemented for non-directories.
 1.3.8.3  31-Jul-2008  simonb Sync with head.
 1.3.8.2  18-Jul-2008  simonb Sync with head.
 1.3.8.1  18-Jun-2008  simonb Sync with head.
 1.3.6.5  17-Jan-2009  mjf Sync with HEAD.
 1.3.6.4  28-Sep-2008  mjf Sync with HEAD.
 1.3.6.3  29-Jun-2008  mjf Sync with HEAD.
 1.3.6.2  02-Jun-2008  mjf Sync with HEAD.
 1.3.6.1  15-May-2008  mjf file udf_strat_rmw.c was added on branch mjf-devfs2 on 2008-06-02 13:24:06 +0000
 1.3.4.2  18-May-2008  yamt sync with head.
 1.3.4.1  15-May-2008  yamt file udf_strat_rmw.c was added on branch yamt-pf42 on 2008-05-18 12:35:06 +0000
 1.3.2.5  18-Jul-2009  yamt sync with head.
 1.3.2.4  20-Jun-2009  yamt sync with head
 1.3.2.3  04-May-2009  yamt sync with head.
 1.3.2.2  16-May-2008  yamt sync with head.
 1.3.2.1  15-May-2008  yamt file udf_strat_rmw.c was added on branch yamt-nfs-mp on 2008-05-16 02:25:21 +0000
 1.4.4.2  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.4.4.1  19-Oct-2008  haad Sync with HEAD.
 1.4.2.3  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.4.2.2  23-Jun-2008  wrstuden Add files to branch that were added on -current.

After this, all that's left of update is to merge some changes
that had conflicts.
 1.4.2.1  17-Jun-2008  wrstuden file udf_strat_rmw.c was added on branch wrstuden-revivesa on 2008-06-23 05:02:14 +0000
 1.9.4.10  09-Jul-2009  snj Pull up following revision(s) (requested by reinoud in ticket #853):
sys/fs/udf/udf_strat_rmw.c: revision 1.22
Fix alternating oddity in RMW strategy. Even when in the reading state it
would push out elements to fillup-read only when the time had come for them.
This could then trickle feed the read queue slowly, but fast enough to prevent
it from switching state.
 1.9.4.9  09-Jul-2009  snj Apply patch (requested by reinoud in ticket #852):
Numerous UDF improvements:
- a much saner rmw backend
- free space management done right
- the high system time usage when encountering huge numbers of nodes
are a thing of the past due to refactoring
- various small fixes
 1.9.4.8  01-Jun-2009  liamjfoy Pull up following revision(s) (requested by reinoud in ticket #772):
sys/fs/udf/udf_strat_rmw.c: revision 1.19
sys/fs/udf/udf_strat_sequential.c: revision 1.10
sys/fs/udf/udf_strat_direct.c: revision 1.10
sys/fs/udf/udf_subr.c: revision 1.90
sys/fs/udf/udf_subr.c: revision 1.91
Descriptor version is 16 bit and not 8 so use udf_rw16() to access them.
UniqueID was written in the logical volume integrity without byteswapping for
bigendian machines.

Retire IN_CALLBACK_ULK flagging since its not used anymore and the old
assertions on it would trigger without cause.
 1.9.4.7  18-Feb-2009  snj branches: 1.9.4.7.4;
Pull up following revision(s) (requested by reinoud in ticket #447):
sys/fs/udf/udf.h: revision 1.30
sys/fs/udf/udf_readwrite.c: revision 1.10
sys/fs/udf/udf_strat_direct.c: revision 1.8
sys/fs/udf/udf_strat_rmw.c: revision 1.18
sys/fs/udf/udf_strat_sequential.c: revision 1.8
sys/fs/udf/udf_subr.c: revision 1.85
sys/fs/udf/udf_subr.h: revision 1.13
Implement session closure on sequential media when requested on mount. It will
allow CD-ROM/DVD-ROM/DB-ROM drives to read the media while still allowing them
to be appended later. It can also be seen as a way to make mountable
snapshots.
 1.9.4.6  10-Dec-2008  snj Pull up following revision(s) (requested by reinoud in ticket #174):
sys/fs/udf/udf_strat_rmw.c: revision 1.15
sys/fs/udf/udf.h: revision 1.29
Fix two buf_init()'s that are not needed since they were already initialised
by getiobuf().
Also remove ancient IPL_BIO reference from the time it was called from
interrupt context instead of the current soft interrupt.
 1.9.4.5  10-Dec-2008  snj Pull up following revision(s) (requested by reinoud in ticket #174):
sys/fs/udf/udf_strat_rmw.c: revision 1.14
UDF_SHED_FREE state is now also handled by the state machine, so DO signal it.
Free'd up ecclines can now far more quicker be recycled.
 1.9.4.4  06-Dec-2008  snj Pull up following revision(s) (requested by reinoud in ticket #167):
sys/fs/udf/udf.h: revision 1.28
sys/fs/udf/udf_strat_rmw.c: revision 1.13
Two fold commit:
1) Enhance write speed significantly on RMW media like CD-RW, DVD-RW but also
on the DVD+RW and all other ECC blocked media. Significant speedups of access
to the device for say compilation on the DVD. Streaming copy is also still at
maximum speed though vast amounts of directory copy work can show side effects
that appear it to slow down but are actually logical when you consider that
most small files are embedded into the descriptors itself.
2) explicit wait for the created RMW thread to spinup
 1.9.4.3  27-Nov-2008  snj Pull up following revision(s) (requested by reinoud in ticket #133):
sys/fs/udf/udf_strat_rmw.c: revision 1.12
Specify blobsize as the `pagingsize' of the eccline blob pool. This will relax
the requirements of the pagingsize.
 1.9.4.2  02-Nov-2008  snj Pull up following revision(s) (requested by reinoud in ticket #8):
sys/fs/udf/udf_strat_rmw.c: revision 1.11
Introduce an extra state to wich all pushed ecclines are pushed on. This
extra state has a holding time in wich no writeouts will be done
effectively collecting more sectors before its even sheduled for writing.
 1.9.4.1  02-Nov-2008  snj Pull up following revision(s) (requested by reinoud in ticket #6):
sys/fs/udf/udf_strat_rmw.c: revision 1.10
Explicitly set buffer's block numbers. Blocks were always read/written
correctly only the sheduling could go less than optimal.
 1.9.4.7.4.1  21-Apr-2010  matt sync to netbsd-5
 1.9.2.2  03-Mar-2009  skrll Sync with HEAD.
 1.9.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.18.2.1  23-Jul-2009  jym Sync with HEAD.
 1.22.26.1  18-May-2014  rmind sync with head
 1.22.22.2  03-Dec-2017  jdolecek update from HEAD
 1.22.22.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.22.12.1  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.24.6.3  29-May-2016  skrll Sync with HEAD
 1.24.6.2  27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.24.6.1  22-Sep-2015  skrll Sync with HEAD

RSS XML Feed