History log of /haiku/src/add-ons/kernel/file_systems/cdda/kernel_interface.cpp
Revision Date Author Comments
# 425ac1b6 20-Jun-2023 Alexander von Gluck IV <kallisti5@unixzen.com>

refactor: Swap %Ld for %lld in all format usages

* %Ld is an undocumented alias for %lld in glibc.
* muslc doesn't implement it for this reason.
* While we will likely never drop %Ld support,
lets clean house and set a better example.

Change-Id: Id46dad3104abae483e80cc5c05d1464d3ecd8030
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6636
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 711e2dc0 01-Dec-2021 Augustin Cavalier <waddlesplash@gmail.com>

Adjust all struct dirent creations (again), this time to use offsetof().

The dirent struct is not packed, so offsetof(dirent, d_name) != sizeof(dirent).
Thus in order not to waste the alignment bytes (which are significant,
on x86_64 at least, sizeof(dirent)==32, but offsetof(...)=26.)

This is also the most portable way to handle things, and should
work just fine in cross-platform code that has a non-zero-sized d_name.


# 9d242fb9 18-Nov-2021 Augustin Cavalier <waddlesplash@gmail.com>

file_systems & Tracker: Do not assume sizeof(dirent) contains 1 byte for the name.

At present, it does, but that is an oddity we have preserved from BeOS
that the next commit is going to remove. (This commit thus wastes 1 byte
without the following one.)

Most changes are pretty straightforward: only a +1 is needed,
and a few removed from sizing calculations. Some filesystems like UDF
originally passed back the length with the \0 included, so they have
been adjusted further. UFS2 had some other sizing problems which are also
corrected in this commit.


# 29034cf2 18-Mar-2021 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

CDDA, stop returning error status as a float

It is a bit unorthodox, and we expect a number on how well you can
handle the partition.

Change-Id: Ie1b5d4e0a8e2411f9782957d7f124756f992a086
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3805
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# ed7329a8 14-Mar-2020 Augustin Cavalier <waddlesplash@gmail.com>

file_systems/cdda: Use standard kernel mutexes instead of a custom lock.

No behavioral change (intended.)


# 72bfb144 17-Jul-2019 Adrien Destugues <pulkomandy@pulkomandy.tk>

PVS V1028: cast result of operation instead of operands

If an overflow occurs before the cast, we can't fix it. If we cast
first, we can rely on integer promotion to make the result use the
appropriate size.

Change-Id: I7462e28422456c07f179f94d39c10c408d9bec36
Reviewed-on: https://review.haiku-os.org/c/1623
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 430f303f 23-Nov-2018 Augustin Cavalier <waddlesplash@gmail.com>

file_systems/cdda: Set CDDB lookups based on the actual parameter.

Found by -Werror=set-but-unused.


# 7c234361 02-Dec-2017 Augustin Cavalier <waddlesplash@gmail.com>

Fix more class/struct mixups.


# 6f7fc220 07-Mar-2016 Axel Dörfler <axeld@pinc-software.de>

NodeMonitor: Added B_WATCH_CHILDREN flag.

* Added a directory argument for notify_{stat/attribute}_changed().
* This allows to watch only a directory, and get the notifications for
all of its files, not just add/remove entry notifications.


# 873914a0 17-Dec-2014 Adrien Destugues <pulkomandy@gmail.com>

cdda: use singly linked list for attribute cookies

The list is only iterated forward so there is no need for a doubly
linked one.
No functional changes.


# 735ca406 12-Nov-2014 Adrien Destugues <pulkomandy@gmail.com>

cdda: CID 610847: possibly uninitialized fields

In two cases:
* Out of memory and strdup on fName failed. Nothing would be
initialized (mostly harmless: InitCheck would detect this)
* There are no frames in the track: the wav header would be left
uninitialized, and this would be readable from userland (bad thing, but
needs a specifically crafted malicious CD to happen).


# 8566c721 07-Jul-2014 Augustin Cavalier <waddlesplash@gmail.com>

file_systems/cdda: Various fixes.

* When restoring shared attributes, don't affect CDDB:lookup status
* Volume renames should not affect CDDB:lookup status, only file renames should

This fixes some of the "cddb_daemon not updating CD info" problems.

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# e8f82cdb 09-Jul-2014 Jérôme Duval <jerome.duval@gmail.com>

file_systems/cdda: avoid leaking the attributes fd.

* see bug #9528.


# 45a52467 14-Oct-2013 Axel Dörfler <axeld@pinc-software.de>

cdda: Fixed crash on allocation failure.

* Thanks korli!


# ae527df3 13-Oct-2013 Axel Dörfler <axeld@pinc-software.de>

cdda: Use MemoryDeleter where it makes sense.


# a2d3d3ae 13-Oct-2013 Axel Dörfler <axeld@pinc-software.de>

cdda: got rid of kernel_cpp.h - it should not be used.

* It's "new" operator does not fail or throw on allocation problems, but
just lets the constructor do its work (and likely crash because of
accessing a null pointer).


# 9499ef8e 13-Oct-2013 Axel Dörfler <axeld@pinc-software.de>

cdda: Fixed include order.


# c3e68d8d 11-May-2013 Jerome Duval <jerome.duval@gmail.com>

cdda, fat, iso9660: clear tv_nsecs fields in the stat struct

* devfs in fact doesn't provide a zeroed buffer.


# 575eeda9 06-May-2013 Jérôme Duval <jerome.duval@gmail.com>

cdda: fixes 64 bit warnings


# a0bc9392 28-Apr-2011 Axel Dörfler <axeld@pinc-software.de>

* Correctly detect Enhanced CDs, and take their extra lead gap into account.
* This fixes bug #3025.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41290 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3b8f7470 28-Apr-2011 Axel Dörfler <axeld@pinc-software.de>

Applied cleaned up patch originally by Ziusudra as part of ticket #3473:
* Changed the session module to create an extra session for existing audio
tracks.
* Let cdda also recognize "audio partitions" as published by the session module.
* If there is only a single session, the session module now gives file system
drivers the chance to play with the device directly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41288 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b21e4191 26-Apr-2011 Axel Dörfler <axeld@pinc-software.de>

* Write the new Media:Length attribute instead of the old Audio:Length one.
* Use uint64 instead of off_t for the frame numbers.
* Shuffled Volume methods around to match the declaration order.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41282 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d63f4274 18-Oct-2010 Jérôme Duval <korli@users.berlios.de>

added a file system call preallocate() as described in #6285, currently unused


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39006 a95241bf-73f2-0310-859d-f6bbb57e9c96


# be136723 28-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38416 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 36f016dd 01-Jun-2010 Axel Dörfler <axeld@pinc-software.de>

* Enlarged the identify TOC buffer to 2048 bytes just to be sure.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36984 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cf5f64c1 05-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* cdda did not send any node monitoring updates, confusing Tracker when renaming
files.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33896 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f40c5e32 05-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* common_rename() now checks the name for validity before passing it on to the
file systems, so those checks don't have to be duplicated there, anymore.
* Minor cleanup, mostly automatic whitespace.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33895 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 425cb3d7 09-Sep-2009 Oliver Tappe <zooey@hirschkaefer.de>

* revert r32999 and adjusted each filesystem to return B_NOT_A_DIRECTORY in
its open_dir() implementation instead (as suggested by Ingo).
-alphabranch (it's only a cleanup)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33025 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ffdaa11d 14-Aug-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

cdda_read_dir(): Removed user buffer handling. We're only getting kernel
buffers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32385 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a068dcb1 11-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* cdda_read_dir() could copy too many bytes into the provided buffer (worst
case was an unterminated string, though).
* fix_dirent() did not copy the trailing null-byte.
* Not yet entirely sure why, but this caused #4214.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32254 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bcfb0a33 16-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

- For audio-related stuff, when going from bits per second to kilobits per
second we should use 1000 as a factor and not 1024. Thanks Fredrik Ekdahl
for the heads up.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 51d94f48 16-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

- Set the CD:do_lookup attribute correctly.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30769 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0bd0e0af 13-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

Marco Nelissen: The bitrate of an audio CD is 44100*4*8 (well, the bitrate of
the "files" is, the actual bitrate of the CD is higher because of error
correction).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30749 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7cec697c 13-May-2009 Axel Dörfler <axeld@pinc-software.de>

* Even more cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30742 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 27f23ba2 13-May-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed some naming inconsistencies/typos.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30741 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d95493aa 12-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

- Ops... Fix compilation.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30738 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a7fe1dbb 12-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

- Added bitrate attribute to audio files.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30737 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 44f79488 12-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

- If the name of a CD was changed, return this name instead of the generic
"Audio CD" or CD Text obtained one.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30732 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 49004dc7 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Remove the additional fs_vnode_ops arugment from get_vnode() again as it's not
needed at all when used as intended. Thanks Ingo for the explanation on how this
is intended to work. Adjusted the overlay fs accordingly and updated/reverted
the changes to the other filesystems.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29250 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 00405f22 09-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

* Add an additional argument to get_vnode() that gets the fs_vnode_ops of the
node. That is needed for a layered filesystem to be able to construct a full
fs_vnode out of a volume/inode pair.
* Adapt places where get_vnode is used. Sadly this is a C API and we can't just
use a default NULL for that argument.
* Introduce a flag B_VNODE_WANTS_OVERLAY_SUB_NODE that can be returned in the
flags field of a fs get_vnode call. A filesystem can use this flag to indicate
that it doesn't support the full set of fs features (attributes, write support)
and it'd like to have unsupported calls emulated by an overlay sub node.
* Add a perliminary overlay filesystem that emulates file attributes using files
on a filesystem where attributes aren't supported. It does currently only
support reading attributes/attribute directories though. All other calls are
just passed through to the super filesystem.
* Adjust places where a HAS_FS_CALL() is taken as a guarantee that the operation
is supported. For the overlay filesystem we may later return a B_UNSUPPORTED,
so make sure that in that case proper fallback options are taken.
* Make the iso9660 filesystem request overlay sub nodes. This can be fine tuned
later to only trigger where there are features on a CD that need emulation
at all.

If you happened to know the attribute file format and location you could build
an iso with read-only attribute support now. Note that this won't be enough to
get a bootable iso-only image as the query and index support is yet missing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29177 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2d871992 08-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Only try to store attributes on destruction if the required root node is available. Should fix bug #3426 where an incompletely constructed volume object is deleted.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29166 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f37b0b4f 30-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* The Audio:Album was not set from the CD-Text. Thanks to Edwin for the note!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28395 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2c348abb 30-Sep-2008 Axel Dörfler <axeld@pinc-software.de>

* Most of the other file systems now maintain the st_blocks value. It might not
always be correct, but should be at least close.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27793 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 31ee3b53 21-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Export the SCSI TOC in the CD:toc attribute (required by the CDDB protocol).
- Do not save or load attributes in the protected namespace.

Now cddb_server has everything it needs.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27120 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b29b6eb8 21-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Added a version of _RestoreAttributes() that accepts a fd as a parameter.
Usefull when, for some reason, you already have an fd around.
- Changed the non-parameter version to set the fd and call the parametrized
version.
- CD-Text reasing is expensive (takes up to 4 seconds on my machine) so now it
is only done if this is the first time the CD is inserted (technically, if it
errors out when trying to open the attributes file for the CD). With this, the
first time I mount a CD still takes 4 seconds, but consecutive mounts happen
almost instantaneously.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27109 a95241bf-73f2-0310-859d-f6bbb57e9c96


# df8aa69a 20-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Created a static version of Attribute::IsProtectedNamespace() that takes an
attribute name as input. Handy for whyen we do not have an Attribute object
around.
- Made the non-static version fall back to the static version.
- Also check for the protected namespace when creating attributes. For
consistency, we should also not be able to create attributes in this
namespace.
- Added some new style violations. ;)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27082 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bb6b4c50 20-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- More style updates. Thanks Axel.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27081 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b2807ad6 20-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Added the concept of a restricted attribute namespace. The attribute class
now has a IsProtectedNamespace() member.
- All CD:* attributes can not be directly edited by the user as they are
internally maintened by the add-on itself.
- Style updates (thanks Stefano!)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27080 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 84719cae 20-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Add a new CD:do_lookup attribute. It will be used by userland programs (like
cddblinkd) to know if they should lookup the CD or not. It will be true
unless:

1 - The CD has CD-Text information.
2 - The user (or a userland program) changed the Volume name.
3 - The user (or a userland program) changed any track names.

- Moved (again) attribute creation to before the stored attributes are read. As
attribute operations happen in memory in cdda, we don't need to care about
the IO cost and this way it is more in line with all the other attributes
created.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27079 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 743b3f15 20-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27076 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d4969c91 19-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Moved creation of the CD:cddbid attribute to after the saved attributes are restored.
- Only adds it if it does not exist yet.

This does not change anything but makes more sense anyway.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27073 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7c1b58f2 19-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- The wrong version of Inode::Attribute(0 was being called. Now setting the
attribute type works.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27072 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2bf20e25 15-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Add the TLA back. I still think it is useless but I guess even in R5 the files
included the extension.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26979 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c4cbe945 14-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Exported CDDB id trough the CD:cddbid attribute.
- Tracks are now called "Track XX" instead of "XX".
- We need no stinking TLAs! :)

Next step, porting CDDBLinkD to Haiku.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26974 a95241bf-73f2-0310-859d-f6bbb57e9c96


# df6394ae 07-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* cdda_read_dir() did not correctly report the number of entries put into
the dirent buffer. This fixes Rene's comment about "ls" entering an endless
loop.
* It also didn't access the buffer passed in correctly if it came from userland.
* It now also fills in as many entries in the buffer as fit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26861 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a89962b9 07-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* read_cdda_data() needs to know the last frame of the track, so that it can
cut down the buffer size on the last request. This fixes bug #2565.
* cdda_read() did report an incorrect number of bytes read. This fixes bug
#2511, and also that you couldn't copy tracks via "cp".
* cdda_read_stat() did not include the WAV header in its reported size.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26853 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ec598fe4 27-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added FS interface hooks io() and cancel_io(). The former is supposed
to provide asynchrounous (or only synchronous, if asynchronous is not
supported) I/O request support. It will eventually replace
{read,write}_pages(). None of the FS implementations implement them
yet.
* Implemented some support functions for request-based I/O. File system
implementations can use do_fd_io() which passes an I/O request to the
layer responsible for a given FD, and do_iterative_fd_io(), which
translates a request for a file to subrequests for the underlying
device and passes them on. Both fall back to synchrounous processing
when the io() hook is not supported.
Furthermore added vfs_synchronous_io() which should be handy for the
devfs to perform io_requests synchronously for devices that don't
support the io() hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26655 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e6bd90c5 23-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* bfs_fsync() was the only place which could cause the
fs_vnode_ops::write_pages() to be called with fsReenter = true. Since
this is no longer the case, the argument has become superfluous. For
read_pages() it always was. Removed the argument from the functions
and all functions that propagated it.
* Some whitespace at the end of lines was removed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26579 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 01f28a0a 27-Jun-2008 Axel Dörfler <axeld@pinc-software.de>

* Ported CDDA file system to the current FS API.
* Fixed warnings.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26145 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1da9f5ce 10-May-2008 Axel Dörfler <axeld@pinc-software.de>

* Added BDiskSystem::ShortName() and everything needed to get it there.
* Added BDiskDeviceRoster::GetDiskSystem() method, that can get a disk system
by short/pretty/module name - since they should all be unique, I put them
in a single namespace, please complain if you don't like that :-)
* Cleaned up DiskSystem.h and DiskDeviceRoster.h according to the updated
header guidelines.
* Renamed ntfs pretty name from "ntfs File System" to "Windows NT File System".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25414 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3d268eda 10-Nov-2007 Axel Dörfler <axeld@pinc-software.de>

* Extracted file_map API out of the file cache - it's now an optional service
that can be used by file systems.
* Changed the way the file cache works: instead of reading/writing to the
underlying device directly, it can now be used for any data source, ie.
also network file systems.
* As a result, the former pages_io() moved to the VFS layer, and can now be
called by a file system via {read|write}_file_io_vec_pages() (naming
suggestions are always welcomed :-)). It now gets an FD, and uses that to
communicate with the device (via its fs_{read|write}_pages() hooks).
* The file_cache_{read|write}() functions must now be called without holding
an I/O relevant file system lock. That allows the file cache to prepare the
pages without colliding with the page writer, IOW the "mayBlock" flag can
go into the attic again (yay!).
* This also results in a much better performance when the system does I/O and
is low on memory, as the page writer can now finally write back some pages,
and that even without maxing out the CPU :)
* The API changes put slightly more burden on the fs_{read|write}_pages()
hooks, but in combination with the file_map it's still pretty straight
forward. It just will have to dispatch the call to the underlying device
directly, usually it will just call its fs_{read|write}_pages() hooks
via the above mentioned calls.
* Ported BFS and FAT to the new API, the latter has not been tested, though.
* Also ported the API changes to the fs_shell. I also completely removed its
file cache level page handling - the downside is that device access is no
longer cached (ie. depends on the host OS now), the upside is that the code
is greatly simplified.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22886 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3e9513aa 03-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

* fs_{write|read}_pages() now has an additional argument "mayBlock".
* the page writer don't allow to block, while all other writers do. This fixes
bug #1509. The reason the page writer needs this is because it marks several
pages from different caches as busy.
* Fixed a warning about ASSERT being defined already in BFS, since
util/DoublyLinkedList.h now includes debug.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22434 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 76a8ec23 22-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added disk system flags for whether a partition name and partition
content name are supported.
* Added file_system_module_info::flags (analogously to
partition_module_info::flags) which indicate which disk device
features the FS supports.
* Replaced the
file_system_module_info/partition_module_info::supports_*()
hooks by a get_supported_operations() hook and for partitioning
systems additionally a get_supported_child_operations() hook.
* Updated file and partitioning systems accordingly.
* Updated fs_shell accordingly.
* Updated the DDM accordingly. The syscall interface remains unchanged,
though.
* _user_supports_initializing_partition() also checks whether the parent
partitioning system is content now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22043 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ed432e8e 20-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

Data tracks are now filtered out. This should fix bug #1345 - but I did not yet test it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22023 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 245aecda 21-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

Got rid of vnode_id and mount_id, replaced with ino_t and dev_t.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21485 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f77a87bf 22-May-2007 Axel Dörfler <axeld@pinc-software.de>

* Implemented persistence storage of attributes and name changes - it's able to
read the files the BeOS cdda wrote, but it handles attributes completely different.
* All attributes are now stored per CD.
* There are some special shared attributes between all CDs (or a specific device)
to improve your Tracker experience.
* An existing buffer is now used to fill a read request.
* Lots of other small changes here and there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21201 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8536d82f 16-May-2007 Axel Dörfler <axeld@pinc-software.de>

* The WAV header is now created correctly (mixed up endian of the fourcc members)
* More or less fixed reading - it now works nicely when you copy the file to the
hard drive first, but MediaPlayer cannot handle the files directly from CD for
some reason yet to investigate.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21153 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 90c18b97 16-May-2007 Axel Dörfler <axeld@pinc-software.de>

Implemented reading from CD and prepending a fake WAV header - not yet tested, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21151 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 12ed6d21 15-May-2007 Axel Dörfler <axeld@pinc-software.de>

* Made the code that reads the table of contents of the CD a bit more failsafe.
* Implemented disk scanner to automatically identify the volume.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21150 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e8113cab 15-May-2007 Axel Dörfler <axeld@pinc-software.de>

* Implemented attribute handling - you can change them, but they are not stored yet.
* Implemented CDDB ID computation (that's what BeOS's cdda-fs is using).
* Some other minor changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21144 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40897d39 14-May-2007 Axel Dörfler <axeld@pinc-software.de>

* Moved cdda_text test application to the test directory, and separated it from cdda.cpp.
* Implemented most of the directory retrieval functions of the file system; even renaming
titles should work now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21139 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ff2a7d86 10-May-2007 Axel Dörfler <axeld@pinc-software.de>

Start of a CDDA file system (replacement for cdda as part of BeOS):
* doesn't do anything useful yet, but it compiles (and should be mountable).
* CDDA test app "cdda_text" will dump the table of contents as well as eventually
existing CD-Text - if I had known only so few titles in my collection would come
with those, I probably wouldn't have gone through it (if the samples I used are
representable, it's about 1/10th of the CDs I have) :-)
* cdda_text compiles on BeOS, so if you have known CD-Text CDs, please test it
and report eventual problems - the test app already tries to beautify the names
as much as possible. Usage is "cdda_text <path-to-raw-device>".
* The test app will be removed later, so better test now ;)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21109 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 873914a02043973156dccbccc36dc9dae7fa164d 17-Dec-2014 Adrien Destugues <pulkomandy@gmail.com>

cdda: use singly linked list for attribute cookies

The list is only iterated forward so there is no need for a doubly
linked one.
No functional changes.


# 735ca4068d0912990c5f900dc021733d4842599c 12-Nov-2014 Adrien Destugues <pulkomandy@gmail.com>

cdda: CID 610847: possibly uninitialized fields

In two cases:
* Out of memory and strdup on fName failed. Nothing would be
initialized (mostly harmless: InitCheck would detect this)
* There are no frames in the track: the wav header would be left
uninitialized, and this would be readable from userland (bad thing, but
needs a specifically crafted malicious CD to happen).


# 8566c721c784837934429855b3179d45ae538ed7 07-Jul-2014 Augustin Cavalier <waddlesplash@gmail.com>

file_systems/cdda: Various fixes.

* When restoring shared attributes, don't affect CDDB:lookup status
* Volume renames should not affect CDDB:lookup status, only file renames should

This fixes some of the "cddb_daemon not updating CD info" problems.

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# e8f82cdb6e50237defefe705c1a75e8cde33e0e7 09-Jul-2014 Jérôme Duval <jerome.duval@gmail.com>

file_systems/cdda: avoid leaking the attributes fd.

* see bug #9528.


# 45a52467063fd0623d8c34c0db7ff1abcbdb99a8 14-Oct-2013 Axel Dörfler <axeld@pinc-software.de>

cdda: Fixed crash on allocation failure.

* Thanks korli!


# ae527df336f44a3a7f12353def921078e2bfabf0 13-Oct-2013 Axel Dörfler <axeld@pinc-software.de>

cdda: Use MemoryDeleter where it makes sense.


# a2d3d3ae54ed643a6d04c4de3a91ec2ed77c3201 13-Oct-2013 Axel Dörfler <axeld@pinc-software.de>

cdda: got rid of kernel_cpp.h - it should not be used.

* It's "new" operator does not fail or throw on allocation problems, but
just lets the constructor do its work (and likely crash because of
accessing a null pointer).


# 9499ef8e512249d5308c0395a96f070b53b6b52b 13-Oct-2013 Axel Dörfler <axeld@pinc-software.de>

cdda: Fixed include order.


# c3e68d8d92801ca71472daaa7e3c996d13d11ecf 11-May-2013 Jerome Duval <jerome.duval@gmail.com>

cdda, fat, iso9660: clear tv_nsecs fields in the stat struct

* devfs in fact doesn't provide a zeroed buffer.


# 575eeda9a5ac082851be3e158f26b89a1cedccbd 06-May-2013 Jérôme Duval <jerome.duval@gmail.com>

cdda: fixes 64 bit warnings


# a0bc9392569e5665f7469776fee789107743706e 28-Apr-2011 Axel Dörfler <axeld@pinc-software.de>

* Correctly detect Enhanced CDs, and take their extra lead gap into account.
* This fixes bug #3025.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41290 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3b8f74706019f7e51d52087a1ec7896630c892fb 28-Apr-2011 Axel Dörfler <axeld@pinc-software.de>

Applied cleaned up patch originally by Ziusudra as part of ticket #3473:
* Changed the session module to create an extra session for existing audio
tracks.
* Let cdda also recognize "audio partitions" as published by the session module.
* If there is only a single session, the session module now gives file system
drivers the chance to play with the device directly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41288 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b21e41910b4f31cade9b5286d8ca16db245cce60 26-Apr-2011 Axel Dörfler <axeld@pinc-software.de>

* Write the new Media:Length attribute instead of the old Audio:Length one.
* Use uint64 instead of off_t for the frame numbers.
* Shuffled Volume methods around to match the declaration order.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41282 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d63f4274b665d32065f24a7a01a025578c8a43c9 18-Oct-2010 Jérôme Duval <korli@users.berlios.de>

added a file system call preallocate() as described in #6285, currently unused


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39006 a95241bf-73f2-0310-859d-f6bbb57e9c96


# be136723e753a621ad855f0c0bb5371cac77d87d 28-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38416 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 36f016ddbe71bd5bab559a6b59d06426d02666d3 01-Jun-2010 Axel Dörfler <axeld@pinc-software.de>

* Enlarged the identify TOC buffer to 2048 bytes just to be sure.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36984 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cf5f64c103b2fcd4234d76e294991338212f46f6 05-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* cdda did not send any node monitoring updates, confusing Tracker when renaming
files.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33896 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f40c5e32115c22bd1b76ee1abe607040c09681a9 05-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* common_rename() now checks the name for validity before passing it on to the
file systems, so those checks don't have to be duplicated there, anymore.
* Minor cleanup, mostly automatic whitespace.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33895 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 425cb3d71644c19d925f97846964a32475b09b95 09-Sep-2009 Oliver Tappe <zooey@hirschkaefer.de>

* revert r32999 and adjusted each filesystem to return B_NOT_A_DIRECTORY in
its open_dir() implementation instead (as suggested by Ingo).
-alphabranch (it's only a cleanup)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33025 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ffdaa11d3c5bfad1ebfcfd3ae38ed3d833ba719a 14-Aug-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

cdda_read_dir(): Removed user buffer handling. We're only getting kernel
buffers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32385 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a068dcb15a83460fe1bee5f8727af3ff12c66fe9 11-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* cdda_read_dir() could copy too many bytes into the provided buffer (worst
case was an unterminated string, though).
* fix_dirent() did not copy the trailing null-byte.
* Not yet entirely sure why, but this caused #4214.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32254 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bcfb0a3331f18005db90e69279a51ea007a0be25 16-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

- For audio-related stuff, when going from bits per second to kilobits per
second we should use 1000 as a factor and not 1024. Thanks Fredrik Ekdahl
for the heads up.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 51d94f48fe791c03086f0f2abaf17d55f9b99cf7 16-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

- Set the CD:do_lookup attribute correctly.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30769 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0bd0e0af2ae625b75632f867f992874c7595159d 13-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

Marco Nelissen: The bitrate of an audio CD is 44100*4*8 (well, the bitrate of
the "files" is, the actual bitrate of the CD is higher because of error
correction).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30749 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7cec697c0b00eb0b1bd40ae04b01956a6d590e4d 13-May-2009 Axel Dörfler <axeld@pinc-software.de>

* Even more cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30742 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 27f23ba2df7bca5799b72a5c43993b7ccd53749c 13-May-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed some naming inconsistencies/typos.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30741 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d95493aa4fd84d40afb47ae0f054d1d124e31367 12-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

- Ops... Fix compilation.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30738 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a7fe1dbb69ab90c019872de7bc1d686b279c9f7d 12-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

- Added bitrate attribute to audio files.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30737 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 44f79488922387fda5ce4780cb6f3aabf1f52444 12-May-2009 Bruno G. Albuquerque <bga@bug-br.org.br>

- If the name of a CD was changed, return this name instead of the generic
"Audio CD" or CD Text obtained one.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30732 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 49004dc730f842ea3c162b56dee63696c51d17c7 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Remove the additional fs_vnode_ops arugment from get_vnode() again as it's not
needed at all when used as intended. Thanks Ingo for the explanation on how this
is intended to work. Adjusted the overlay fs accordingly and updated/reverted
the changes to the other filesystems.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29250 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 00405f2286fd370a0bd264d0bbac0cfa120e7646 09-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

* Add an additional argument to get_vnode() that gets the fs_vnode_ops of the
node. That is needed for a layered filesystem to be able to construct a full
fs_vnode out of a volume/inode pair.
* Adapt places where get_vnode is used. Sadly this is a C API and we can't just
use a default NULL for that argument.
* Introduce a flag B_VNODE_WANTS_OVERLAY_SUB_NODE that can be returned in the
flags field of a fs get_vnode call. A filesystem can use this flag to indicate
that it doesn't support the full set of fs features (attributes, write support)
and it'd like to have unsupported calls emulated by an overlay sub node.
* Add a perliminary overlay filesystem that emulates file attributes using files
on a filesystem where attributes aren't supported. It does currently only
support reading attributes/attribute directories though. All other calls are
just passed through to the super filesystem.
* Adjust places where a HAS_FS_CALL() is taken as a guarantee that the operation
is supported. For the overlay filesystem we may later return a B_UNSUPPORTED,
so make sure that in that case proper fallback options are taken.
* Make the iso9660 filesystem request overlay sub nodes. This can be fine tuned
later to only trigger where there are features on a CD that need emulation
at all.

If you happened to know the attribute file format and location you could build
an iso with read-only attribute support now. Note that this won't be enough to
get a bootable iso-only image as the query and index support is yet missing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29177 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2d871992b8e8be2589568f85b9c67d6b21346af9 08-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Only try to store attributes on destruction if the required root node is available. Should fix bug #3426 where an incompletely constructed volume object is deleted.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29166 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f37b0b4f095eae1a48a6f3e00a94b812958ea7a2 30-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* The Audio:Album was not set from the CD-Text. Thanks to Edwin for the note!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28395 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2c348abbf7aca35c66b88e159bdafa41f2a9743f 30-Sep-2008 Axel Dörfler <axeld@pinc-software.de>

* Most of the other file systems now maintain the st_blocks value. It might not
always be correct, but should be at least close.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27793 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 31ee3b53f5c777d8d0a02132a25081481ed9deb6 21-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Export the SCSI TOC in the CD:toc attribute (required by the CDDB protocol).
- Do not save or load attributes in the protected namespace.

Now cddb_server has everything it needs.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27120 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b29b6eb84ae5101b4ecfc6c76139cb4e6438038c 21-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Added a version of _RestoreAttributes() that accepts a fd as a parameter.
Usefull when, for some reason, you already have an fd around.
- Changed the non-parameter version to set the fd and call the parametrized
version.
- CD-Text reasing is expensive (takes up to 4 seconds on my machine) so now it
is only done if this is the first time the CD is inserted (technically, if it
errors out when trying to open the attributes file for the CD). With this, the
first time I mount a CD still takes 4 seconds, but consecutive mounts happen
almost instantaneously.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27109 a95241bf-73f2-0310-859d-f6bbb57e9c96


# df8aa69a763b5aaf61602354e039330ec03ed447 20-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Created a static version of Attribute::IsProtectedNamespace() that takes an
attribute name as input. Handy for whyen we do not have an Attribute object
around.
- Made the non-static version fall back to the static version.
- Also check for the protected namespace when creating attributes. For
consistency, we should also not be able to create attributes in this
namespace.
- Added some new style violations. ;)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27082 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bb6b4c50764bd3deeb122a9adf09896d78b3be25 20-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- More style updates. Thanks Axel.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27081 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b2807ad696ce626e79ddb7fc16938a4d7690f40f 20-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Added the concept of a restricted attribute namespace. The attribute class
now has a IsProtectedNamespace() member.
- All CD:* attributes can not be directly edited by the user as they are
internally maintened by the add-on itself.
- Style updates (thanks Stefano!)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27080 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 84719cae244ef5d9448896bc84fa1c1dd2353aef 20-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Add a new CD:do_lookup attribute. It will be used by userland programs (like
cddblinkd) to know if they should lookup the CD or not. It will be true
unless:

1 - The CD has CD-Text information.
2 - The user (or a userland program) changed the Volume name.
3 - The user (or a userland program) changed any track names.

- Moved (again) attribute creation to before the stored attributes are read. As
attribute operations happen in memory in cdda, we don't need to care about
the IO cost and this way it is more in line with all the other attributes
created.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27079 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 743b3f15272ea92ccf7c7501aeefe8b1f84f078c 20-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27076 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d4969c919a4c5f264570309d6d9a9b5dd8a17bd2 19-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Moved creation of the CD:cddbid attribute to after the saved attributes are restored.
- Only adds it if it does not exist yet.

This does not change anything but makes more sense anyway.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27073 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7c1b58f2bbaf87c3d18588e64906c662b1381104 19-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- The wrong version of Inode::Attribute(0 was being called. Now setting the
attribute type works.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27072 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2bf20e253b299a61f5422ad117093cc206e6c90c 15-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Add the TLA back. I still think it is useless but I guess even in R5 the files
included the extension.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26979 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c4cbe945fe0f5798a36d75619d8da7def0c38e05 14-Aug-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

- Exported CDDB id trough the CD:cddbid attribute.
- Tracks are now called "Track XX" instead of "XX".
- We need no stinking TLAs! :)

Next step, porting CDDBLinkD to Haiku.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26974 a95241bf-73f2-0310-859d-f6bbb57e9c96


# df6394aee14a68847ef69d67e77db45ef02d0003 07-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* cdda_read_dir() did not correctly report the number of entries put into
the dirent buffer. This fixes Rene's comment about "ls" entering an endless
loop.
* It also didn't access the buffer passed in correctly if it came from userland.
* It now also fills in as many entries in the buffer as fit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26861 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a89962b923788cf6db8910262042cb769ce0b9e5 07-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* read_cdda_data() needs to know the last frame of the track, so that it can
cut down the buffer size on the last request. This fixes bug #2565.
* cdda_read() did report an incorrect number of bytes read. This fixes bug
#2511, and also that you couldn't copy tracks via "cp".
* cdda_read_stat() did not include the WAV header in its reported size.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26853 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ec598fe493579e3d522453cb407ca3c6b57d715a 27-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added FS interface hooks io() and cancel_io(). The former is supposed
to provide asynchrounous (or only synchronous, if asynchronous is not
supported) I/O request support. It will eventually replace
{read,write}_pages(). None of the FS implementations implement them
yet.
* Implemented some support functions for request-based I/O. File system
implementations can use do_fd_io() which passes an I/O request to the
layer responsible for a given FD, and do_iterative_fd_io(), which
translates a request for a file to subrequests for the underlying
device and passes them on. Both fall back to synchrounous processing
when the io() hook is not supported.
Furthermore added vfs_synchronous_io() which should be handy for the
devfs to perform io_requests synchronously for devices that don't
support the io() hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26655 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e6bd90c58dbae64f3b464edcff90dcb06e63a716 23-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* bfs_fsync() was the only place which could cause the
fs_vnode_ops::write_pages() to be called with fsReenter = true. Since
this is no longer the case, the argument has become superfluous. For
read_pages() it always was. Removed the argument from the functions
and all functions that propagated it.
* Some whitespace at the end of lines was removed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26579 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 01f28a0ae369a27554112e0563d377cb61785d4c 27-Jun-2008 Axel Dörfler <axeld@pinc-software.de>

* Ported CDDA file system to the current FS API.
* Fixed warnings.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26145 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1da9f5cea5ea4d32c539a01cd94a7b605e941beb 10-May-2008 Axel Dörfler <axeld@pinc-software.de>

* Added BDiskSystem::ShortName() and everything needed to get it there.
* Added BDiskDeviceRoster::GetDiskSystem() method, that can get a disk system
by short/pretty/module name - since they should all be unique, I put them
in a single namespace, please complain if you don't like that :-)
* Cleaned up DiskSystem.h and DiskDeviceRoster.h according to the updated
header guidelines.
* Renamed ntfs pretty name from "ntfs File System" to "Windows NT File System".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25414 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3d268eda3d0ca504c865533347decf27b54025b6 10-Nov-2007 Axel Dörfler <axeld@pinc-software.de>

* Extracted file_map API out of the file cache - it's now an optional service
that can be used by file systems.
* Changed the way the file cache works: instead of reading/writing to the
underlying device directly, it can now be used for any data source, ie.
also network file systems.
* As a result, the former pages_io() moved to the VFS layer, and can now be
called by a file system via {read|write}_file_io_vec_pages() (naming
suggestions are always welcomed :-)). It now gets an FD, and uses that to
communicate with the device (via its fs_{read|write}_pages() hooks).
* The file_cache_{read|write}() functions must now be called without holding
an I/O relevant file system lock. That allows the file cache to prepare the
pages without colliding with the page writer, IOW the "mayBlock" flag can
go into the attic again (yay!).
* This also results in a much better performance when the system does I/O and
is low on memory, as the page writer can now finally write back some pages,
and that even without maxing out the CPU :)
* The API changes put slightly more burden on the fs_{read|write}_pages()
hooks, but in combination with the file_map it's still pretty straight
forward. It just will have to dispatch the call to the underlying device
directly, usually it will just call its fs_{read|write}_pages() hooks
via the above mentioned calls.
* Ported BFS and FAT to the new API, the latter has not been tested, though.
* Also ported the API changes to the fs_shell. I also completely removed its
file cache level page handling - the downside is that device access is no
longer cached (ie. depends on the host OS now), the upside is that the code
is greatly simplified.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22886 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3e9513aa4a8bf5f2fb2b86a767ffe46f6e626acc 03-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

* fs_{write|read}_pages() now has an additional argument "mayBlock".
* the page writer don't allow to block, while all other writers do. This fixes
bug #1509. The reason the page writer needs this is because it marks several
pages from different caches as busy.
* Fixed a warning about ASSERT being defined already in BFS, since
util/DoublyLinkedList.h now includes debug.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22434 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 76a8ec23db391176bac91f33c5f1fc6e8e41866c 22-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added disk system flags for whether a partition name and partition
content name are supported.
* Added file_system_module_info::flags (analogously to
partition_module_info::flags) which indicate which disk device
features the FS supports.
* Replaced the
file_system_module_info/partition_module_info::supports_*()
hooks by a get_supported_operations() hook and for partitioning
systems additionally a get_supported_child_operations() hook.
* Updated file and partitioning systems accordingly.
* Updated fs_shell accordingly.
* Updated the DDM accordingly. The syscall interface remains unchanged,
though.
* _user_supports_initializing_partition() also checks whether the parent
partitioning system is content now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22043 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ed432e8ec6eb100f258863701a48e3420ecbe0fb 20-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

Data tracks are now filtered out. This should fix bug #1345 - but I did not yet test it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22023 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 245aecda8ac43fc2c0c0bac6a7e4016efa9b71e1 21-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

Got rid of vnode_id and mount_id, replaced with ino_t and dev_t.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21485 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f77a87bfa4589d6fcb9e409d8cfd27725d1ed8cc 22-May-2007 Axel Dörfler <axeld@pinc-software.de>

* Implemented persistence storage of attributes and name changes - it's able to
read the files the BeOS cdda wrote, but it handles attributes completely different.
* All attributes are now stored per CD.
* There are some special shared attributes between all CDs (or a specific device)
to improve your Tracker experience.
* An existing buffer is now used to fill a read request.
* Lots of other small changes here and there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21201 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8536d82fb62e2bc63ce69cc4c46289b87368276b 16-May-2007 Axel Dörfler <axeld@pinc-software.de>

* The WAV header is now created correctly (mixed up endian of the fourcc members)
* More or less fixed reading - it now works nicely when you copy the file to the
hard drive first, but MediaPlayer cannot handle the files directly from CD for
some reason yet to investigate.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21153 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 90c18b97c9b675c3a41235ee12ec2458f4fd4aaa 16-May-2007 Axel Dörfler <axeld@pinc-software.de>

Implemented reading from CD and prepending a fake WAV header - not yet tested, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21151 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 12ed6d2195da8fe7d54611de69939a5533a680f0 15-May-2007 Axel Dörfler <axeld@pinc-software.de>

* Made the code that reads the table of contents of the CD a bit more failsafe.
* Implemented disk scanner to automatically identify the volume.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21150 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e8113cabe023042a1c96f338fab8f5f47f1688d4 15-May-2007 Axel Dörfler <axeld@pinc-software.de>

* Implemented attribute handling - you can change them, but they are not stored yet.
* Implemented CDDB ID computation (that's what BeOS's cdda-fs is using).
* Some other minor changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21144 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40897d39642f7942f1e46d2eb6c30fd77341fe61 14-May-2007 Axel Dörfler <axeld@pinc-software.de>

* Moved cdda_text test application to the test directory, and separated it from cdda.cpp.
* Implemented most of the directory retrieval functions of the file system; even renaming
titles should work now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21139 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ff2a7d86f8de2368fb292c425b24ce7e0b49a09b 10-May-2007 Axel Dörfler <axeld@pinc-software.de>

Start of a CDDA file system (replacement for cdda as part of BeOS):
* doesn't do anything useful yet, but it compiles (and should be mountable).
* CDDA test app "cdda_text" will dump the table of contents as well as eventually
existing CD-Text - if I had known only so few titles in my collection would come
with those, I probably wouldn't have gone through it (if the samples I used are
representable, it's about 1/10th of the CDs I have) :-)
* cdda_text compiles on BeOS, so if you have known CD-Text CDs, please test it
and report eventual problems - the test app already tries to beautify the names
as much as possible. Usage is "cdda_text <path-to-raw-device>".
* The test app will be removed later, so better test now ;)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21109 a95241bf-73f2-0310-859d-f6bbb57e9c96